2. ChatGPT prompt engineering으로 동화 만들기(feat. 프롬프트 엔지니어링)

 

안녕하십니까 다제입니다.

오늘은 chatgpt를 활용하여 동화를 만들고자 합니다.

목차

  1. prompt engineering 개념

  2. prompt engineering 작성방법

  3. prompt engineering 유의사항 

  4. prompt engineering 동화만들기 

     

prompt engineering

 

chatgpt가 나오고 나서 NLP쪽에서는 크게 두 가지의 움직임이 보입니다.

  1. 어떻게 하면 ChatGPT를 잘 사용할 수 있을까? -> prompt engineering
  2. local LLM은 없는건가? -> 알파카(Alpaca), 라마(LLAMA) 관련 연구

 

그중에서 오늘은 prompt engineering에 대해서 알아보도록 하겠습니다.

 

1. prompt engineering 개념  

prompt engineering이란? 
사용자가 알고 싶은 내용을 생성형 AI가 원활히 생성할 수 있도록 추가적인 명령(prompt)를 제공하여 대규모 언어 모델(LLM)을 컨트롤하는 AI 엔지니어링 기술이다. 

조금 더 풀어서 설명을 드리자면, 

프롬프트 엔지니어링은 인공지능 모델을 사용하여 원하는 작업을 수행하기 위해 입력하는 텍스트 조각 또는프롬프트(명령어)를 설계하는 과정입니다. 이 방법은 인간과 컴퓨터 간의 상호작용을 통해 정확하고 원하는 결과를 얻기 위해 모델을 조작하는 데 사용됩니다.

그렇다면, 과연 어떻게 엔지니어링을 하는 것인가? 에 대해 궁금하실 수도 있고, 어떻게 이런 기능이 가능하지? 라는 생각이 드실 수 있는데요. 그런 분들이 제가 이전에 올린 이 글에서 “번역이 잘되는 이유” 부분을 참고해주세요. 

 

2. prompt engineering 작성방법

프롬프트 엔지니어링은 주어진 작업에 대한 모델의 출력을 조정하기 위해 프롬프트를 구성하는 방법을 이해하고 활용하는 것을 중점으로 합니다. 일반적으로 다음과 같은 절차를 따릅니다:

  • 작업 목표 설정: 원하는 작업에 대한 명확하고 구체적인 목표를 설정합니다. 예를 들어, 영화 제목을 생성하고 싶다면 “다음은 새로운 영화 제목을 생성해주세요”라는 목표를 설정할 수 있습니다.
  • 프롬프트 작성: 원하는 결과를 얻기 위해 모델에 전달할 프롬프트를 작성합니다. 이는 모델에게 제시되는 초기 문장 또는 질문으로, 적절한 정보를 포함하고 원하는 결과를 유도할 수 있는 방식으로 작성되어야 합니다. 프롬프트는 해당 작업에 대한 명확한 지시와 기대 결과를 제공해야 합니다.
  • 실험과 조정: 작성한 프롬프트를 사용하여 모델에게 작업을 수행하도록 요청합니다. 그런 다음 출력 결과를 검토하고, 필요한 경우 프롬프트를 조정하여 원하는 결과를 얻을 수 있도록 합니다. 이 단계에서 여러 번의 시도와 수정을 통해 최적의 프롬프트를 찾는 작업이 진행됩니다.
  • 평가와반복: 모델의 출력을 평가하고 원하는 결과를 얻을 때까지 프롬프트를 조정하고 실험하는 과정을 반복합니다. 이는 반복적인 시행착오 과정을 통해 모델의 능력을 개선하고 성능을 향상시키는 데 도움이 됩니다.

 

 

3. prompt engineering 작성시, 유의사항

프롬프트의 작성은 문제 해결과 창의적인 결과 생성에 있어서 중요한 역할을 담당하며,

올바르고 효과적인 프롬프트 작성은 모델의 결과를 조정하고 원하는 방향으로 이끌어내는 핵심 요소입니다.

다양한 요소를 고려하여 프롬프트를 조정할 수 있습니다. 몇 가지 중요한 점을 살펴보겠습니다

  • 명확하고 구체적인 지시: 프롬프트에서 원하는 작업에 대해 명확하고 구체적인 지시를 제공해야 합니다. 모델이 원하는 결과를 이해하고 생성할 수 있도록 필요한 정보를 제공해야 합니다. 예를 들어, “미래의 고급 로봇을 상상해보고, 그 기능과 모습을 설명해주세요”라는 프롬프트는 모델에게 로봇과 관련된 특정 정보와 특징을 생성하도록 안내합니다.
  • 긍정적인 강조: 모델에게 원하는 결과를 얻기 위해 긍정적인 방향으로 프롬프트를 작성하는 것이 중요합니다. 모델이 원하는 결과를 도출하도록 도와주는 표현이나 단어를 사용하면 좋습니다. 예를 들어, “창밖에는 화려한 봄 꽃들이 만발하고 있어요. 가장 아름다운 꽃에 대해 이야기해주세요”라는 프롬프트는 모델에게 아름다움과 양극화된 표현을 사용하여 원하는 결과를 유도할 수 있습니다.
  • 다양한 요구 사항: 모델에게 다양한 측면을 고려하도록 프롬프트를 작성하는 것이 좋습니다. 예를 들어, 영화 리뷰를 생성하는 프롬프트를 작성할 때, 플롯, 캐릭터, 연기 등의 다양한 측면을 다루도록 요구할 수 있습니다. 이렇게 함으로써 모델은 보다 포괄적이고 다양한 정보를 생성할 수 있습니다.
  • 반복과조정: 프롬프트 엔지니어링은 반복과 조정을 거쳐 최적의 결과를 얻는 과정입니다. 모델의 출력을 검토하고, 필요한 경우 프롬프트를 수정하고 실험하여 원하는 결과를 얻을 수 있도록 해야 합니다. 이 과정에서 모델의 출력을 평가하고 분석하여 문제점을 파악하고 개선점을 찾아내는 것이 중요합니다.

 

 

4. prompt engineering으로 동화 만들기 

방법은 간단합니다.

아래와 같은 prompt를 입력을 넣어주기만 하면 됩니다.

[목표설정]
너는 8살 아이들을 위한 과학 동화를 만들 거야.
동화는 흥미롭고, 상상력을 자극하면서도 개연성 있는 이야기일 거야.
아이들은 너의 동화를 읽고 어려운 과학 지식을 습득할 수 있을 거야. 

[조건설정]
동화를 쓸 때 아래의 가이드라인을 지켜줘. 
- 쉬운 단어를 사용한다. 
- "~했어요." 혹은 "~했답니다." 와 같은 어미를 사용한다. 
- 이야기에는 기승전결이 있다. 

[예시설정]
다음은 "면역체를 의인화하여 백신의 작동 원리에 대해 설명"하는 과학 동화 예시야. 
동화 제목: 우리 몸의 지킴이 면역체 우리 몸에는 용감한 면역체가 살고 있어요. 
면역체는 무서운 감염병을 무찔러 우리 몸을 지켜주는 멋있는 분이랍니다. 
하지만 어떤 감염병은 너무 강해서 면역체만의 힘으로 무찌르기 힘들어요. 
“걱정마! 내가 도와줄게!” 이웃 마을에서 면역체를 도와주러 온 백신이 말했어요. 
"우리를 어떻게 도와주실 건가요?" 면역체가 물었어요. 
"내가 감염병의 약간의 부분을 가져와서 너희에게 보여줄게." 
백신이 말했어요. 백신이 면역체에게 감염병의 일부분을 보여주었어요. 
“우와! 대단해요!” 그것을 보고 면역체는 감염병과 맞서 싸우는 방법을 알아낼 수 있었어요. 
그리고 이제 면역체는 감염병이 우리 몸 안으로 들어와도 얼마든지 이겨낼 수 있게 되었어요. 
면역체와 백신 덕분에 우리 몸 안은 안전하게 평화워졌답니다. 
끝. 

[지시문 ]
먼저 "하늘"에 대해 설명해줘.

위 프롬프트는 크게 4가지(목표설정, 조건설정, 예시(Few shot), 지시문) 파트로 구분되어 있습니다.

목표설정 : 큰 틀에서 우리가 하고자 하는 범주를 설정해주는 것입니다.

조건설정 : AI가 생성할 때 지켜야할 규칙을 의미합니다.

예시 : 예시를 전달하는 것이 훨씬 잘 작동하게 됩니다. 그 이유는 zero-shot보다 few-shot이 훨씬 성능이 좋기 때문입니다.
zero-shot : AI가 한번도 보지 못한 것에 대해서 예측하고 생성하는 방법론
Few-shot : AI에게 예시를 하나 보여주고 이와 유사한 예측 결과물 생성하게 하는 방법론

지시문 : 실제 궁극적으로 우리가 하고자 하는 목표를 전달합니다.

이렇게 되면 전달한 결과물도 함께 보실게요

한 번 하늘에 대해 이야기해볼게요. 하늘은 저희가 매일 보는 맑고 푸른 공간이에요. 하늘은 끝이 없어 보이는 것처럼 넓고 넓어요. 하늘은 땅 위에 펼쳐져 있어서 저희가 걷는 길 위에 떠 있어요.

하늘은 해와 달, 별들이 있는 곳이기도 해요. 아마 너도 밤에 별들을 볼 때가 있을 거야. 별들은 작고 반짝반짝 예쁘게 빛나면서 하늘을 밝게 만들어줘요. 때로는 달도 하늘에서 크고 둥근 모습으로 나타나요.

그리고 하늘에는 구름들이 떠다니기도 해요. 구름들은 흰색이거나 회색이고, 모양도 다양해요. 구름들은 바람에 스치면서 움직이는데, 때로는 구름이 모여서 큰 구름이 되기도 해요. 그리고 비가 내리거나 눈이 내릴 때에도 하늘에서 시작돼요.

하늘은 참으로 아름다운 공간이에요. 그리고 하늘은 우리에게 자유를 상기시켜줘요. 비행기가 하늘을 날아다니고, 색상이 아름다운 연기를 만들어 하늘로 퍼져나갈 수도 있어요.

요약하자면, 하늘은 저희가 매일 보는 푸른 공간이에요. 하늘에는 해와 달, 별들이 있고, 구름들이 떠다니기도 해요. 하늘은 아름다우며, 자유를 상징하는 공간이에요. 그래서 하늘은 우리에게 많은 상상을 자극해주는 곳이기도 해요.

이렇게 잘 생성하는 것을 볼 수 있죠. 이 기능을 통해 아이들에게 재미있는 동화를 계속 만들어줄 수도 있습니다.

또한, 이와 관련된 이미지를 AI에게 생성해 달라고 해서 생성할 수도 있겠죠?

다음에는 또 다른 prompt engineering 내용을 가지고 오겠습니다.

오늘도 긴 글 읽어주셔서 감사합니다.

 

 

 

답글 남기기