소개
Prompt engineering은 폭넓고 다양한 응용과 연구 주제에 적합한 언어 모델을 개발하는 요령입니다.
연구자들은 문제의 답변과 산술적 추론을 위해, 개발자는 다른 도구와의 연동을 위해 prompt engineering을 사용합니다.
LLM 설정
몇 가지 파라미터로 다른 결과를 얻을 수 있습니다.
temperature
temperature
가 낮을 수록 가장 높은 확률을 가지는 토큰을 선택합니다.
temperature
가 높을 수록 불확실성을 추가하여 다양하고 창의적인 답을 유도할 수 있습니다.
top_p
nucleus sampling이라고도 하며, temperature
와 유사합니다.
일반적으로 temperature
와 top_p
중 하나만 변경하는 것을 추천합니다.
Prompting의 기초
Prompt는 instruction과 question 정보를 가집니다.
Prompt formatting
QA(Question Answering) format은 다음과 같습니다.
Q: <Instruction> | <Question>?
A:
이렇게 사전 정보 없이 질문을하는 방식을 다른말로 zero-shot prompting이라 합니다.
다음과 같이 질문을 반복해서 답을 얻어가는 과정을 few-shot prompting이라 합니다.
Q: <Question>?
A: <Answer>
Q: <Question>?
A: <Answer>
Q: <Question>?
A: <Answer>
Q: <Question>?
A:
QA format만 사용하는 것이 아니고 다음과 같이 간단한 classification(분류) 문제의 답을 유도할 수 있습니다.
Prompt:
This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //
Output:
Negative
Prompt의 구성 요소
- Instruction: 구체적인 작업이나 방법을 기술
- Context: 외부 정보나 맥락을 기술
- Input Data: 입력 데이터를 기술
- Output Indicator: 출력의 형식을 기술
일반적인 요령
간단한 질문부터 시작해서 반복해 나갑니다. 큰 작업은 작은 작업으로 나누어 질문을 합니다.
Write, Classify, Summarize, Translate, Order와 같은 명령형을 사용하면 효과적입니다.
다음과 같이 ###
과 같은 명시적은 구분자를 사용해보는 것도 좋습니다.
Prompt:
### Instruction ###
Translate the text below to Spanish:
Text: "hello!"
Output:
¡Hola!
구체적인 정보를 기술하고 불필요한 정보는 적지 않습니다.
몇개의 문장으로 정리해줘
보다 3개의 문장으로 정리해줘
와 같이 기술하면 효과적 입니다.
마지막으로 ~를 하지마
보다 ~를 해줘
라고 기술하면 효과적입니다.
챗봇은 ~를 하지마
에 기술한 내용을 오히려 답변으로 포함하는 경향이 있습니다.
Prompt 예시
- 구문 요약: 장문의 답변을 한 문장으로 요약할 수 있습니다.
- 정보의 추출: 많은 정보의 지문에서 특정 정보를 얻어내는 질의를 할 수 있습니다.
- 질문 답변: 앞에서 다루었듯 가장 보편적으로 사용하는 방식입니다.
- 문장 분류: 뉴스가 정치, 경제, 연예, 스포츠 등 중에 어디에 속하는지 상품평이 긍정적인지 부정적인지를 판별할 때 활용합니다.
- 대화
- 코드 생성: 특정 문제를 해결하는 코드를 생성하도록 질문할 수 있습니다.
- 추리: 산술적인 문제나 논리적인 문제를 풀도록 질문할 수 있습니다.