Prompt : LLM에게 지시하는 명령을 의미한다.
Prompt Template : 이 명령의 구성을 담당한다. 고정적으로 사용할 텍스트와 사용자의 입력에 따라 바뀔 변수로 템플릿을 구성한다.
프롬프트 템플릿은 크게 2가지가 존재한다.
Prompt Template
Chat Prompt Template
딥러닝 모델이 결과물을 출력할 때 예시 결과물을 제시함으로써 원하는 결과물로 유도하는 방법론이다.
LLM 역시, Few-shot 예제를 제공하면 예제와 유사한 형태의 결과물을 출력한다.
내가 원하는 결과물의 형태가 특수하거나, 구조화된 답변을 원할 경우, 결과물의 예시를 수 개 제시함으로써 결과물의 품질을 향상시킬 수 있다.
Few-shot 예제를 동적으로 입력하고 싶은 경우, Example Selector를 활용할 수 있다.
LLM이 여러 작업을 수행하도록 만들되 내가 원하는 범위의 대답을 출력하도록 하려면 사용자의 입력에 동적으로 반응해야 한다. 이와 동시에, 예제를 모두 학습시키는 것이 아니라 적절한 예시만 포함하도록 함으로써 입력 Prompt의 길이를 제한하고, 이를 통해 오류가 발생하지 않도록 조절할 수 있다.
SemanticSimilarityExampleSelector : 사용자가 입력한 것과 Example의 유사도를 판단해 사용자의 입력과 가장 유사한 예시를 가져온다.
LLM의 답변을 내가 원하는 형태로 고정하고 싶을 때 사용 가능하다.
리스트, JSON 형태 등 다양한 형식의 답변을 고정하여 출력할 수 있다.
LLM의 매개변수를 조정하면서 원하는 출력을 이끌어낼 수도 있지만, 명령 자체를 '잘'하면 충분히 만족스러운 결과를 도출할 수 있다.
Prompt Engineer : Pre-training된 LLM을 별도의 학습없이 사용자가 원하는 답변을 생성하도록 입력 프롬프트를 효과적으로 설계하는 기술이다.
LLM 매개변수를 조정한 예
temperature : 답변의 일관성 조절 (0~2로 설정 가능)
- 0 : 일관성있게 답변 → 신뢰성이 중요한 답변
- 2 : 같은 질문에 대해서도 랜덤하게, 다양하게 답변 → 창의적인 답변 e.g. 시, 가사 작사
문제 이해시키기
전문성 끌어내기
성공적인 결과 유도
[참고자료]
ChatGPT를 비롯한 대화형 AI 서비스에서 더 좋은 결과물을 얻게 해주는 프롬프트 엔지니어링
[LangChain] Prompt Template 사용 방법 정리
진짜 실무에 써먹는 챗GPT 프롬프트 엔지니어링의 원리