OpenAI는 최근에 프롬프트 엔지니어링 가이드를 공개했습니다. ChatGPT를 저처럼 이제 시작하시는 분이라면 이 가이드가 상당히 유용한 정보를 제공할 수 있습니다. 이번 글에서는 OpenAI가 공개한 프롬프트 엔지니어링 가이드를 기반으로 6가지 필수 전략을 소개하겠습니다.
1. 지시사항을 명확하게 작성하기 (Write clear instructions)
LLM, ChatGPT를 포함한 모델들은 사용자의 마음을 읽을 수 없습니다. 정확한 결과를 얻기 위해서는 명확한 지시사항을 제공해야 합니다. 요청에 대한 답변이 바로 만족스러울 수는 없습니다. 이럴 경우 추가적으로 명확한 지시사항을 제공하여 원하는 답변에 가까운 결과를 얻을 수 있습니다. 예를 들어 ChatGPT가 너무 긴 결과를 제공하면, 간결한 답변을 요청하세요. 반대로 답변이 너무 간단하다면 전문가 수준의 글을 요청하면 거기에 맞추어 ChatGPT가 답변을 개선하여 제공합니다. 또한 답변의 형식이 마음에 들지 않는다면 어떠한 형식을 원하는지 구체적으로 ChatGPT에게 알려주세요.
이를 통해서 ChatGPT가 우리들의 질문에 대해서 추측해야 하는 사항들을 최대한 줄여주세요. 우리의 질문이 명확하여 ChatGPT가 추측해야 할 부분이 적을 수록 우리는 더 원하는 결과를 얻을 수 있게 됩니다.
명확한 지시의 예제
- 명확하지 않은 지시: 대통령은 누구지?
- 명확한 지시: 2020년에 대한민국의 대통령은 누구였지? 그리고 대통령 임기는 몇년이지?
2. 참고할 텍스트를 제공 (Provide reference text)
ChatGPT와 같은 언어 모델들은 잘못된 답변을 만들어 낼 수 있고, 특히 이 답변이 매우 진짜인 것처럼 자신 있게 대답해서 우리들을 혼란스럽게 할 수 있습니다. 특히 특히 생소한 주제에 대한 요청이나 URL 등을 요청할 때 잘못된 답변을 만들어 낼 확률이 높습니다. 이를 방지하기 위해서는 ChatGPT를 시험을 앞둔 학생처럼 생각하세요. 시험을 앞둔 학생에게 정리 노트가 도움이 되는 것처럼, 참고 텍스트를 제공하면 모델이 더 정확하고 적은 오류로 답변할 수 있습니다.
참고 텍스트의 예제
아래와 같이 ChatGPT에게 레퍼런스를 제공하고 여기에서만 기반하여 정보를 달라고 지시를 제공합니다.
아래에 제가 """로 구분된 참고문을 제공할 것입니다. 앞으로 당신은 이 참고문을 기반으로 해서 정확한 답변을 주세요. 만약 제가 제공한 참고문에서 답변을 찾을 수 없다면, 답변을 찾을 수 없습니다라고 답변하세요.
"""참고문...."""
나의 질문...
3. 복잡한 작업은 간단한 하위 작업으로 분할하기 (Split complex tasks into simpler subtasks)
복잡한 작업을 처리할 때, 이를 단순화된 일로 나누어서 하나씩 처리하는 것은 사람에게는 아주 자연스럽고 효율을 올립니다. 이러한 전략은 ChatGPT에게도 그대로 적용됩니다. 복잡한 일을 처리할 경우 잘못된 대답을 할 경우가 높아집니다. 복잡한 질문의 경우, 단계적으로 질문을 나누어서 하나씩 질문하면 정확정확도와 효율성을 높일 수 있습니다.
하위 작업으로 분할하는 예제
ChatGPT는 처리하는 글자의 수가 정해져 있기 때문에, 그 글자 수보다 큰 텍스트를 요약하거나 하는 등의 작업은 불가능합니다. 책과 같은 매우 긴 문서를 요약하고 싶다면 책을 요약해 달라고 하기보다는 책의 각 섹션 별로 ChatGPT에게 요약해 달라고 분할해서 요청을 하는 방식으로 긴 문서를 요약할 수 있습니다.
4. 모델에게 "생각할 시간" 주기 (Give the model time to "think")
LLM은 서두르면 더 많은 오류를 범하는 경향이 있습니다. 최종 답변 전에 "사고 과정"을 제시하도록 모델을 격려하면 모델이 더 신뢰할 수 있는 정답으로 향하는 추론 과정을 향상시킬 수 있습니다.
5. 외부 도구들을 사용하기 (Use external tools)
다른 도구의 출력을 통합하여 모델의 한계를 보완하세요. 예를 들어, OpenAI의 코드 인터프리터는 계산 수행이나 코드 실행을 도울 수 있습니다. 작업을 언어 모델보다 더 효과적이거나 효율적으로 수행할 수 있는 도구가 있다면 최적의 결과를 얻기 위해 그것을 활용하세요.
6. 변경사항을 체계적으로 테스트하기 (Test changes systematically)
성능 개선을 측정하는 것이 중요합니다. 때때로, 프롬프트 수정은 특정 사례에서는 더 나은 성능을 달성할 수 있지만 더 넓은 맥락에서는 전반적인 성능 저하로 이어질 수 있습니다. 따라서 변경 사항이 성능에 긍정적인 영향을 미치는지 확인하기 위해 포괄적인 테스트 스위트를 정의하는 것이 필요할 수 있습니다.
마치며
ChatGPT와의 프롬프트 엔지니어링을 마스터하는 것은 명확한 소통, 전략적 작업 분할, 인내, 보완적 도구 사용, 그리고 체계적인 테스트를 포함합니다. 이 여섯 가지 전략을 활용함으로써 사용자는 LLM과의 상호작용을 크게 향상시킬 수 있으며, 다양한 응용 분야에 대한 그들의 전체 잠재력을 발휘할 수 있습니다.
'IT 정보' 카테고리의 다른 글
유튜브 음원 추출(mp3) 및 영상 다운로드 쉽게 하기 (광고 및 프로그램 설치 없이 파이썬으로) (0) | 2024.05.19 |
---|---|
챗GPT(ChatGPT) 활용법 : 창의적인 사용 사례 (0) | 2023.12.16 |
챗GPT(ChatGPT) 팁 : 더 나은 결과를 위한 질문 잘하는 법 (0) | 2023.12.16 |
챗GPT (ChatGPT) 왕초보 일상 생활 사용 및 활용팁 (1) | 2023.12.09 |