업무 파일럿(업무 전문가)를 위한 프롬프트 엔지니어링: 실전 가이드 – 1. 프롬프트 엔지니어링
1장. 프롬프트 엔지니어링
프롬프트 엔지니어링은 Large Language Model (LLM)을 효과적으로 활용하기 위한 핵심 기술입니다. 단순히 질문을 입력하는 것을 넘어, LLM의 잠재력을 최대한 끌어내어 원하는 결과를 얻기 위한 체계적인 방법론입니다. 이 장에서는 프롬프트 엔지니어링의 기본 원칙과 LLM과의 상호작용 방식, 그리고 효과적인 프롬프트 작성을 위한 실질적인 지침을 살펴보겠습니다. 특히 OpenAI의 gpt-3.5-turbo 모델을 예시로 설명하며, 다양한 프롬프트 예시를 통해 여러분의 이해를 돕겠습니다.
1.1 프롬프트 엔지니어링이란 무엇인가?
🧙🏻♂️: 프롬프트 엔지니어링은 LLM의 성능을 최적화하고 원하는 결과를 정확하게 얻기 위해 프롬프트를 설계하고 조정하는 과정입니다. 단순히 명령을 입력하는 것을 넘어, LLM과 효율적으로 소통하여 그 잠재력을 최대한 활용하는 기술입니다. “잘 지시해야 잘 수행합니다.”라는 말처럼, LLM에 효과적인 프롬프트를 제공하는 것은 원하는 결과를 얻는 데 매우 중요합니다.
1.2 LLM 설정 이해하기
LLM의 출력 결과는 다양한 파라미터 설정에 따라 크게 달라질 수 있습니다. 이러한 파라미터들을 이해하고 적절히 조절하는 것은 프롬프트 엔지니어링의 중요한 부분입니다.
🔍: 주요 파라미터와 그 기능은 다음과 같습니다.
Temperature
: LLM의 창의성을 조절합니다. 값이 높을수록 다양하고 예측 불가능한 결과를 생성하며, 낮을수록 사실에 기반한 간결하고 예측 가능한 결과를 생성합니다. 시를 생성하는 경우 높은 값을, 사실 기반 질의응답에는 낮은 값을 사용하는 것이 좋습니다.Top P (Nucleus Sampling)
:Temperature
와 함께 사용되며, LLM이 고려하는 단어의 범위를 제어합니다. 높은 값은 다양한 단어를 고려하여 덜 예측 가능한 결과를 생성하고, 낮은 값은 확률이 높은 단어 위주로 선택하여 예측 가능성을 높입니다. 일반적으로Temperature
또는Top P
중 하나만 변경하는 것이 좋습니다.Max Length
: 생성되는 텍스트의 최대 길이를 제한합니다. 긴 응답이 필요한 경우 값을 높이고, 간결한 응답을 원하는 경우 낮춥니다.Stop Sequences
: 특정 문자열이 나타나면 텍스트 생성을 중지합니다. 응답의 길이와 구조를 제어하는 데 유용합니다.Frequency Penalty
: 이미 등장한 단어가 반복될 확률을 낮춥니다. 반복을 피하고 다양한 표현을 원할 때 높은 값을 사용합니다.Presence Penalty
:Frequency Penalty
와 유사하지만, 단어의 등장 횟수와 관계없이 모든 반복에 동일한 페널티를 적용합니다. 다양성을 높이고 싶을 때 사용합니다. 일반적으로Frequency Penalty
또는Presence Penalty
중 하나만 변경하는 것이 좋습니다.
🚀: LLM 설정 파라미터 값을 변경해가며 출력 결과의 변화를 직접 실험해 보는 것이 파라미터들을 이해하는 가장 효과적인 방법입니다.
1.3 프롬프트 작성의 기초
프롬프트의 질은 LLM 출력 결과에 직접적인 영향을 미칩니다. 명확하고 구체적인 프롬프트는 LLM이 의도를 정확히 이해하고 원하는 결과를 생성하는 데 도움을 줍니다.
- 단순 프롬프트 vs. 개선된 프롬프트: “The sky is” 와 같은 단순한 프롬프트는 “blue.” 와 같은 단순한 응답을 유도합니다. 반면, “Complete the sentence: The sky is” 와 같이 지시를 명확히 추가하면 “blue during the day and dark at night.” 와 같이 더욱 완전하고 의미있는 응답을 얻을 수 있습니다. “프롬프트를 개선하니 응답도 개선된다”는 것을 기억하십시오.
System
,User
,Assistant
역할: OpenAI 채팅 모델은system
,user
,assistant
세 가지 역할을 사용합니다.system
메시지는 어시스턴트의 전반적인 동작을 설정하고,user
메시지는 LLM에 입력하는 프롬프트이며,assistant
메시지는 LLM의 응답입니다.system
역할을 활용하여 LLM의 동작을 더욱 세밀하게 제어할 수 있습니다.
메모) system 역할을 지원하지 않는 LLM 공급사의 AI 서비스를 사용하는 경우 system 메시지는 user 메시지로 제공합니다.