Prompt Engineering Guide 리뷰

ChatGPT와 같은 LLM을 잘 활용하기 위한 가이드를 찾아 리뷰해 봅니다.

2023-03-26

소개

Prompt Engineering Guide

Prompt engineering은 폭넓고 다양한 응용과 연구 주제에 적합한 언어 모델을 개발하는 요령입니다.

연구자들은 문제의 답변과 산술적 추론을 위해, 개발자는 다른 도구와의 연동을 위해 prompt engineering을 사용합니다.

LLM 설정

몇 가지 파라미터로 다른 결과를 얻을 수 있습니다.

temperature

temperature가 낮을 수록 가장 높은 확률을 가지는 토큰을 선택합니다. temperature가 높을 수록 불확실성을 추가하여 다양하고 창의적인 답을 유도할 수 있습니다.

top_p

nucleus sampling이라고도 하며, temperature와 유사합니다.

일반적으로 temperaturetop_p 중 하나만 변경하는 것을 추천합니다.

Prompting의 기초

Prompt는 instructionquestion 정보를 가집니다.

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 예시

  • 구문 요약: 장문의 답변을 한 문장으로 요약할 수 있습니다.
  • 정보의 추출: 많은 정보의 지문에서 특정 정보를 얻어내는 질의를 할 수 있습니다.
  • 질문 답변: 앞에서 다루었듯 가장 보편적으로 사용하는 방식입니다.
  • 문장 분류: 뉴스가 정치, 경제, 연예, 스포츠 등 중에 어디에 속하는지 상품평이 긍정적인지 부정적인지를 판별할 때 활용합니다.
  • 대화
  • 코드 생성: 특정 문제를 해결하는 코드를 생성하도록 질문할 수 있습니다.
  • 추리: 산술적인 문제나 논리적인 문제를 풀도록 질문할 수 있습니다.
Loading script...