프롬프트 엔지니어링 - LLM도 잘 물어봐야 잘 알려준다!
프롬프트 엔지니어링 - LLM도 잘 물어봐야 잘 알려준다!
프롬프트 엔지니어링이란?
인공지능, 특히 언어 모델에 정확한 정보나 창의적인 콘텐츠를 생성하도록 지시하는 방법을 연구하는 분야
프롬프트? 인공지능에게 주는 입력 문장 혹은 질문을 의미.
프롬프트를 잘 설계하는 것이 인공지능의 출력 품질을 결정!
프롬프트 엔지니어링 구성요소
Instruction
- 언어 모델이 수행하기를 원하는 작업의 지시 사항
Context
- 지시 사항을 잘 하기 위한 추가 맥락(외부 정보)
3- Input data
- 답변을 찾고자 하는 입력 또는 질문
4- Output Indicator
- 결과값 출력의 유형 및 형식
프롬프트 예제
1
2
3
해당 문장을 긍정, 부정, 중립의 성격으로 분류해줘. # Instruction
문장: 나는 음식이 괜찮은 것 같아 # Input data
성격: # Output Indicator
프롬프트 엔지니어링 유형(기법)
In-Context Learning Prompting
zero-shot
- 예제를 구성하지 않고 요청
one-shot
- 하나의 예제로 구성하는 프롬프트
few-shot
- 여러 개의 예제로 구성하는 프롬프트
Chain-of-Thought Prompting
복잡한 계산 과정이 들어간 지시 사항에 대해, 예제를 줄 때 순차적 해결 방안을 제시함으로써 계산 과정을 프롬프트에 넣어주는 방식
Zero-shot COT Prompting
모든 계산의 순차적 방식을 프롬프트에 나열하지 않고도, 순차적으로 접근해봐
라는 문구를 추가함으로써 위와 같은 효과를 얻을 수 있다.
프롬프트 작성 노하우
1. 모델에게 페르소나를 부여한다!
지시사항은 최대한 구체적이고 명확하게 전달!
시스템 프롬프트로 LLM에 역할을 부여하고, 특성을 지정한다.
- ex) 너는 친절하게 답변하는 과학 선생님이야. 늘 한국어 중에서도 쉬운 단어만을 선택해서 말해.
2. 프롬프트 에제를 다양하게 구성한다.
예제의 개수보다는 다양한 케이스에 대한 패턴을 파악할 수 있도록 구성
원하는 결과가 나오지 않으면 프롬프트의 예제를 수정함으로써 구성
3. 지시사항에는 부정문보다는 긍정문을 사용한다.
부정문은 작업에 제한을 준다.
ex) 반말을 사용하지 않습니다 -> 존댓말을 사용합니다.
ex) 길지 않게 설명합니다. -> 짧게 설명합니다.
4. 계절감있는 출력결과가 나오길 원한다면, 에제에 날짜나 시즌 어휘를 추가
- 프롬프트에 시즌, 계절을 추가하면 그에 맞는 느낌으로 답변 구상
5. 대상자를 지정하여, 문장의 목적을 구체화한다.
- 글을 읽는 대상 혹은 답변을 제공받는 대상을 프롬프트에 추가한다.