Prompt Engineering 의 정의:
- AI 에게 질문을 해서 원하는 결과를 가져오는 걸 말한다.
- 중요한 건 질문의 퀄리티임. 좋은 질문을 하면 더 나은 대답을 가져올 건 분명하다. 예로 오늘의 날씨는? 이라고 묻는 것보다 오늘 오전 11시의 서울의 날씨는? 이라고 묻는게 더 정확한 대답을 얻어낼 수 있을거임.
Prompt Engineering 의 가장 대표적인 방법:
- Zero shot Prompting: LLM 에게 아무런 예시를 제공해주지 않고 답변을 내도록 하는 방법. 일반적으로 LLM 은 비슷한 예시를 제공할수록 더 나은 답변을 준다.
- Few shot Prompting: LLM 에게 비슷한 예시 2~3건을 같이 주는 방법.
- COT (Chain of Thought): LLM 에게 문제 해결을 위한 논리적 사고를 제공해주는 방법이다. 한번에 답변을 내도록 하는게 아니라 문제를 쪼개서 논리적으로 어떻게 풀면 되는지 과정을 명시해주는 방법임.
- Zero shot COT (Chain of Thought): 논리적 사고 과정을 알려주지 않고 그냥 천천히 단계별로 풀어봐~ 라고 제시하는 기법임. 이렇게만 말해도 대답을 더 잘한다.
COT 예시:
Q: 로저는 5개의 테니스 공이 있습니다. 그는 테니스 공이 들어간 두 개의 캔을 샀고, 각각의 캔에는 3개의 공이 들어있습니다. 이때 테니스 공의 총 개수는?
A: (여기서 어떻게 계산하는지 알려주는 것입니다.) 로저는 5개의 공으로 시작했고, 2개의 캔에는 각각 3개의 공이 들어있으니 총 6개의 공이 있습니다. 그러므로 5 + 6 = 11 입니다.
Q: (이제 내가 물어보고 싶은 문제를 작성합니다.) 카페에는 23개의 사과가 있습니다. 20개는 점심에 사용했고, 6개를 추가로 샀습니다. 이때 사과의 총 개수는?
잘못 알고 있는 프롬포트 엔지니어링 상식:
- 프롬포트 엔지니어링은 시중에 효과적이라고 돌아다니고 있는 프롬포트를 템플릿을 그대로 사용하는 방법이 아님.
- 이는 내가 원하는 결과인지 알 수 없기 때문에 아니다. 이를 블라인드 프롬포팅 (Blind Prompting) 이라고 함.
기본적인 프롬포트는 3가지를 갖춰야함:
- 컨택스트: LLM 이 답변을 내도록 하는 맥락적 정보를 말한다.
- 명확한 지시: LLM 이 수행할 명령을 말한다.
- 원하는 포맷: LLM 이 출력할 포맷을 말한다.
컨택스트가 중요한 이유:
- 우리는 LLM 에게 단순히 질문 or 명령을 하는 걸로 사용하는데 이것 보다는 맥락을 제공해주는게 훨씬 수준 높은 답변을 만들어 냄.
- 그냥 "소프트웨어 개발자에게 필요한 면접 질문을 생성해줘" 라고 묻는다면 정말 일반적인 질문을 생성해줄거임. 예를 들면 "가장 자신있는 프로그래밍 언어는 무엇인가요?" 등
- 그러나 Job Description 에 있는 정보들인 회사의 배경과 자격 조건 그리고 우대사항 등을 입력해서 면접 질문을 생성해달라고 한다면 훨씬 그럴듯한 질문들을 만들어줄거임.
InContext Learning 이란:
- LLM 이 작업을 수행할 적절한 맥락을 제공해줌으로써 LLM 은 해당 맥락을 이해해서 지시를 잘 수행하는 걸 말한다.
- 챗봇 기준으로 LLM 과 대화를 한 내역 자체도 Context 가 되는데 이걸 바탕으로 보다 잘 대답하게 될거임.
References:
'Generative AI > Prompt Engineering' 카테고리의 다른 글
Prompt Evaluation 가이드 (0) | 2024.09.06 |
---|---|
The Prompt Report: A Systematic Survey of Prompting Techniques (0) | 2024.08.28 |
Flow Engineering is all you need (0) | 2024.06.22 |
Prompt Engineering with Llama 2 & 3 (0) | 2024.06.19 |
Prompt Engineering 방법 (0) | 2024.06.08 |