학습자료: 최고의 프롬프트 엔지니어링 강의(김진중)
프롬프팅 확장 테크닉: 예시를 제공하고 생각하게 만들기
1. 전문가 역할극 프롬프팅(Expert Prompting)
프롬프트 디자인에서 역할을 설정하는 것과 동일한 방법으로, LLM에게 전문가로서 응답하도록 요청하는 방법
LLM에게 먼저 프롬프트나 질문에 관련된 특정 분야의 전문가를 찾아달라고 요청하고, 대답도 마치 전문가인 것처럼 질문에 응답하도록 함
2. 위키피디아에 따르면(According to Wikipedia)
단순히 ‘위키피디아를 참조해서 답하세요’라고 하는 것만으로도 높은 성능을 얻을 수 있는 기법
LLM이 사전에 학습한 지식 베이스가 있다면 해당 내용을 참조하라고 하는 것만으로도 더 정확한 답변을 얻을 수 있음
예를 들어, 질문할 때 질문이나 답변을 “위키피디아에 따르면”이라는 문구로 시작하게 하면 LLM은 위키피디아 내용을 기반으로 보다 상세하고 정확하게 답변함
3. 지식 생성 프롬프팅(Generated Knowledge Prompting)
주어진 질문에 대한 관련 지식을 먼저 생성하라고 한 다음, 생성한 지식을 바탕으로 답변을 생성하는 기법
단, 생성AI의 특성상 아주 정확한 지식을 생성한다는 보장은 없으므로 생성 결과를 주의 깊게 평가할 필요가 있음
4. 검색 증강 생성(Retrieval Augmented Generaion, RAG)
답변을 생성하기 전에 사용자의 요청과 관련된 지식을 외부 검색 컴포넌트에서 검색한 후 해당 내용을 프롬프트에 컨텍스트로 제공하여 결과를 생성하는 기법
프롬프팅 확장 테크닉: 전략을 짜고 스스로 평가하기
1. 생각 트리(Tree-of-Thought)
트리 구조로 답변을 생성해 내면서 중간 단계에서 진행 상황을 스스로 평가하여 생각 트리를 확장하고 선택하는 방법
트리 구조를 통해 다양한 추론 경로 중에서 최적의 경로를 선택하여 정교하고 체계적인 최종 답변을 찾아나감
2. 계획-풀이 프롬프팅(Plan-and-Solve Prompting)
전체 작업을 더 작은 하위 작업으로 계획을 세우고 그 계획에 따라 하위 작업을 수행하거나 평가하면서 전체 문제를 해결
생각 사슬, 자기 일관성 등의 기법을 사용했을 때 생기는 중간 문제 풀이 단계 누락 문제를 해결하기 위한 기법
최소에서 최대로 기법이 풀어야 할 문제를 단계적으로 생성해가면서 문제를 푼다면, 계획-풀이 프롬프팅은 미리 풀어야 할 하위 문제를 모두 생성해 두고 문제를 푼다는 점이 다름
단순히 문제를 단계적으로 푸는 것만이 아니라 변수 설정부터 계획 수립, 계산 수행 그리고 최종 해답 제시에 이르기까지 필요한 조건과 과정을 명확하게 기술
3. 자동 프롬프트 엔지니어(Automatic Prompt Engineer)
LLM이 프롬프트를 자동으로 생성하는 기법
원하는 작업에 대한 출력 예시를 주고 해당 작업을 잘 수행할 수 있는 프롬프트를 다양하게 생성. 그리고 이를 채점하여 가장 높은 점수를 받은 프롬프트를 사용하는 방식
완전한 프롬프트를 처음부터 만들어 내기보다는 기본 프롬프트를 작성한 뒤 성능을 더 끌어올리기 위한 파인튜닝의 개념으로 많이 사용
프롬프트 기법의 핵심
1. 예시를 제공한다
2. 생각을 많이 하게 한다
3. 문제 풀이 전략을 세우게 한다
4. 스스로 평가한다
포맷팅(Formatting)
출력하는 포맷을 지정하는 것
다음 포맷으로 답변하세요. Answer: {number}
1) 리스트
특별한 순서 없이 앞에 대시(-)나 점 등으로 표현하는 방법과 순서(1. 2. 3.)로 표현하는 방법
2) Key-Value Pair
Key: Value
3) 테이블
표 형식으로 출력하는 방법
4) 마크다운
구조화된 텍스트를 표현
5) YAML(Ain’t Markup Language)
사람이 쉽게 읽을 수 있는 데이터 직렬화 언어. 주로 설정 파일에 사용하는 형식
6) JSON
구조화된 데이터를 표현하는 데 가장 많이 사용되는 데이터 포맷
프롬프트 체이닝(Prompt Chaining)
일련의 프롬프트와 그에 따른 응답을 순서대로 연결하여 하나의 지속적인 대화나 여러 하위 태스크로 이루어진 복잡한 태스크를 수행하는 기법
1. 단순 프롬프트 연결하기
1) 컨텍스트와 질문을 주고
2) 질문에 필요한 내용을 컨텍스트에서 추출해 나열하라고 지시
3) 추출한 내용에 ‘Selection:’이라는 제목을 넣어 줌
4) Selection과 질문을 기반으로 답변을 하도록 요구
2. 이전 결과에 따른 분기 처리하기
사용자의 입력 유형이나 출력 결과의 유형에 따라 다른 방식으로 결과를 도출하도록 유도
3. 결과 내 유사 체이닝 효과 주기
일종의 CoT 방식을 답변 안에서 진행하는 방법
Prompt
당신은 자유 게시판 관리자입니다. 게시글의 종류에 따라 댓글을 달거나 글을 삭제합니다.
[게시글의 종류에 따른 코드]
- 광고/홍보: AD
- 고민 상담: COUNSEL
- 그 외의 글: ETC
[게시글의 종류에 따른 답변]
- 고민 상담인 경우 한 줄로 공감해 주세요.
- 인사인 경우 인사를 받아 주세요.
답변의 형식은 다음의 JSON 형식으로 답하세요.
{
“type”:“게시글의 코드”,
“answer”:“게시글의 종류에 따른 답변”,
}
사용자 입력
프롬프트 엔지니어가 되고 싶은데 어떻게 해야 하나요?
Result
{
“type”:”COUNSEL”,
“answer”:”프롬프트 엔지니어가 되기 위한 첫 걸음으로 관련 기술과 언어를 배우는 것부터 시작해 보세요. 꾸준한 학습과 실습이 중요합니다.
}
좋은 프롬프트 만들기
1. 지시문을 명확하게 만든다.
2. 적절한 예시를 제공한다.
3. 모델에게 생각할 시간을 준다.
4. 작업을 하위 작업으로 분해한다.
5. 적절한 컨텍스트를 제공한다.
6. 프롬프트 엔지니어링 기법이 작동하지 않는 상황도 항상 고려한다.
7. 프롬프트를 구조화하여 작성한다(코드와 유사한 형식).
프롬프트 성능 개선 방법
1. 작업의 목적 및 배경 설명(이건 무슨 내용이고, 대략 무슨 일을 할 것이다)
2. 컨텍스트(참고할 내용, 문서)
3. 구체적인 질문이나 지시 및 출력 형식이나 가이드
프롬프트 구조 변경 방법
- 지시문을 반복해서 사용한다
- 지시문이나 컨텍스트의 위치를 바꾼다
- 지시문의 단어를 다른 단어로 바꾼다
가장 중요한 것은 반복해서 개선하는 것!
'프롬프트 엔지니어링' 카테고리의 다른 글
구글 프롬프트 엔지니어링 백서(Google Prompt Engineering Whitepaper) (0) | 2025.04.17 |
---|---|
[프롬프트 엔지니어링 기초] 프롬프트 엔지니어링 테크닉(1) (0) | 2025.04.05 |
[프롬프트 엔지니어링 기초] 프롬프트 엔지니어링 과정 (0) | 2025.03.30 |