기본 프롬프트 엔지니어링 태크닉
Intro
이전 챕터에서는 응답목적에 맞추어 프롬프트를 작문하는 방법들에 대해서 배워 봤습니다.
이번 챕터에서는 프롬프트를 최적화 할 수 있는 방법인 프롬프트 엔지니어링 패턴들에 대해서 알아보도록 하겠습니다.
프롬프트 엔지니어링을 통한 최적화로 얻을 수 있는 이점들은 다음과 같습니다.
정확한 응답 유도
프롬프트설계로 애매한 답변이 아닌 명확하고 원하는 정보를 얻을 수 있음
시간 & 비용 절감
적절한 프롬프트를 사용하면 불필요한 재요청 없이 원하는 결과를 빠르게 도출할 수 있음.
일관된 결과 유지
같은 질문에 대해 일정한 품질의 답변을 유지할 수 있음.
AI모델 성능 극대화
AI가 최적의 학습데이터를 활용할 수 있도록 유도할 수 있음.
1) Zero Shot Prompt
AI에게 예제를 주지 않고(Zero Shot) 작업을 수행하는 방법으로 LLM이 자체적으로 학습한 데이터를 기반으로 응답을 생성하도록 유도하는 방법

특징
빠른 적용 : 예제 없이 바로 사용할 수 있다.
일반적인 질문에 적합 : 모델이 사전 학습된 지식을 사용하기 때문에 일반적인 질문에 적합하다.
한계점
정확성이 떨어질 수 있음 : 모델이 문맥을 잘못 이해하여 잘못된 응답을 반환할 수 있다.
2) Few Shot Prmopt
AI에게 몇 개의 예제(Few Shot)를 제공한 후, 추가적인 입력에 대해 유사한 방식으로 응답하도록 유도하는 방법 으로 복잡한 문제 수행에 있어서 Zero Shot Prompt보다 정확도가 높다.
System :
예제1:
질문 : "tomato가 뭐야"
답변 : "토마토는 비타민 C, 비타민 K, 칼륨, 엽산 등이 풍부하며, 특히 리코펜(lycopene)이라는 항산화 물질을 다량 함유하고 있는 과일입니다"
예제2:
질문 : "Strawberry에대해서알려줘"
답변 : "사과는 비타민 C, 망간, 엽산, 식이섬유가 풍부합니다. 항산화 성분도 많이 함유되어 있어 건강에 여러 이로운 효과를 제공하는과일입니다"
User :
질문 : Apple에 대해서 알려줘
특징
사전 예제 필요 : 모델이 원하는 형식을 학습할 수 있도록 프롬프트에 예제를 포함시켜줘야 한다.
일관된 응답 : Zero Shot에 비해 문맥을 더 잘 파악할 수 있으며 일관된 답변을 생성한다
적응력 증가 : AI가 사전학습하지 못한 새로운 개념이나 패턴을 학습할 때 유용하다
예시 품질의 중요도 : 예시품질이 응답결과에 영향을 끼친다.
한계점
복잡한 추론이 필요한 문제는 예제만으로 부족할 수 있다.
Few Shot Prompt 실습
Few Shot Prompt 기법을 사용하여 1년 후 , 5년 후 , 10년 후 , 20년 후 의 미래계획을 각 1줄 이상작성하세요. 각 년도별 미래계획은 다음 형식에 맞춰서 출력되어야 합니다.
N년 후의 나는 ..........
3) Chain-of-Thought Prmopt(COT)
복잡한 과제 수행을 위해 , AI에게 논리적인 사고 과정을 단계별로 설명(Chain of Thought)하도록 유도하는 기법
Few-Shot Prompt방식
질문: 길동이는 과일가게에서 사과 5개를 구매했습니다. 그 후 오렌지 5개, 아보카도 3개를 구매했습니다.
사과는 개당 2000원, 오렌지는 개당 1000원, 아보카도는 개당 5000원 이라면 총 가격은 얼마인가요?
답변 : 30000원
계산을 바로 출력하지만 계산 과정이 없음.
COT 방식
질문: "어떤 가게에서 사과를 3개 사고, 오렌지를 2개 샀습니다.
사과는 개당 2000원, 오렌지는 개당 1000원이면 총 비용은 얼마인가요?
생각하는 과정을 단계별로 설명해주세요."
답변:
1. 사과 3개의 가격은: 3 × 2000 = 6000원입니다.
2. 오렌지 2개의 가격은: 2 × 1000 = 2000원입니다.
3. 총 비용은 6000 + 2000 = 8000원입니다.
따라서 총 비용은 **8000원입니다.**
응답결과에 답을 얻기 위한 추론 과정이 포함됨
단, 최신 LLM들은 이전 모델들에 비해 더묵 많은 데이터를 학습하여 자연스럽게 추론능력이 향상되었고, 추가적인 학습과정에서 COT방식을 학습하였기 때문에 응답을 생성하는 과정에서 COT가 필요하다고 판단되는 경우 자동으로 적용된다.
Zero Shot Prompt에 COT 자동 적용 다만, 더욱 복잡한 문제나 정밀한 논리과정이 필요한 경우에는 아직 LLM이 문제해결방법에 대해 학습하지 못했을 가능성이 높으므로 COT를 사용하는 것이 효과적
특징
단계별 사고 유도 : 응답을 바로 반환하는 것이 아닌 논리적인 추론을 수행한 후 응답을 생성한다
복잡한 문제 해결 : 수학, 논리, 추론 기반의 질문에 효과적
정확도 향상 : Few shot, Zero shot에 비해 더 깊이 있는 답변을 생성할 수 있다.
한계점
소규모 LLM모델에서는 성능이 떨어진다.(100B 이상의 모델에서 사용할 것을 권장)
직접적인 사고과정을 문장으로 작성해야 하는 번거로움이 있다.
프롬프트의 완성도가 응답 퀄리티에 영향을 끼친다.
COT 실습
다음 문제를 해결할 수 있는 COT Propmt를 작성하시오
철수는 시속 5km로 걷고, 영희는 시속 7km로 걷습니다.
두 사람이 같은 출발점에서 동시에 출발했을 때,
3시간 후 두 사람 사이의 거리는 몇 km인가요?
논리적인 사고 과정을 포함하여 답을 도출하세요
4) Zero-Shot Chain-of-Thought(ZCOT)
ZCOT는 기존 Zero-Shot방식에 COT기법을 자연스럽게 적용하여 AI가 사고과정을 거쳐 응답을 생성하도록 유도하는 기법입니다.
즉 COT와 같이 직접 사고과정을 작성하는 예제가 없이 단순한 질문을 던지더라도 AI가 자체적으로 단계별 사고과정을 포함한 답변을 생성해줍니다.
Zero shot기반의 프롬프트에 "단계적으로 사고하시오" 혹은 "논리적으로답변하시오" 같은 키워드를 추가하면 ZCOT방식의 응답 프롬프트가 완성된다.
어느 마을에 살고 있는 A,B,C,D 중 한명은 거짓말쟁이다.
다음 예제를 분석하여 거짓말쟁이를 찾는 단계별 사고 과정을 설명해 주세요.
A : B또는 C가 거짓말쟁이에요
B : 전 거짓말쟁이가 아닙니다
C : A가 거짓말쟁이입니다.
D : A 또는 B가 거짓말쟁이입니다.
특징
간결하고 강력한 사고력 : Zero shot방식의 간결함과 COT의 논리적 사고력을 동시에 갖춤
AI의 사고과정을 확인 할 수 있으므로 적절한 피드백을 부여하여 응답을 개선할 수 있다.
복잡한 문제에서 더 정확한 답변을 얻을 수 있다
한계점
논리적인 사고과정을 즉흥적으로 사용하기 때문에 논리적인 사고과정 자체가 불완전할 수 있다.
단순한 질문에 대한 응답결과도 쓸데없이 장황해질 수 있다.(비용문제)
Few-shot COT보다는 부정확한 응답결과를 반환한다.
Zero-Shot COT 실습
한 상점에 120개의 사과가 있습니다. 이 상점은 매일 15개의 사과를 판매합니다. 7일 후에는 몇 개의 사과가 남아 있는지를 ZCOT 기법을 활용하여 구하시오.
5) Self-Consistency(자기일관성)
질문에 대한 답변들 중 가장 많이 등장하는 답변이 정답에 가까울 확률이 높다는 아이디어에서 만들어진 기법.
기존 COT방식이 한 번의 사고과정을 거쳐 답변을 생성한다면 , Self-Consistency는 여러번의 독립적인 사고과정을 거친 후 , 가장 많이 등장하는 답변을 논리적으로일관성있는 최종 응답으로 채택 하는 기법
Self-Consistency 적용 과정
프롬프트 준비(Temperature는 0.7 이상)
같은 프롬프트를 최소 5 ~ 10번 실행
각 실행에서 얻은 답변을 기록
가장 많이 등장하는 답변을 채택
당신은 논리적 사고 과정을 단계별로 설명하는 AI입니다.
어느 마을에 살고 있는 A,B,C,D 중 한 명은 거짓말쟁이입니다.
다음 예제를 분석하여 거짓말쟁이를 찾는 단계별 사고 과정을 설명해 주세요.
A : B 또는 C가 거짓말쟁이에요
B : 전 거짓말쟁이가 아닙니다
C : A가 거짓말쟁이입니다.
D : A 또는 B가 거짓말쟁이입니다.
논리적인 추론 과정을 거쳐 최종 답을 도출하세요.
특징
응답 퀄리티 향상 : 단순 COT방식은 한 번의 추론과정만 거치기 때문에 실수할 가능성이 높으나, Self-Consistency는 여러번의 사고 과정을 거치므로 논리적으로 일관성 있는 답변을 채택할 가능성을 높여줌.
정확한 정답 도출을 위해 여러 접근 방식으로 테스트하고자 할 때 유용하다.
한계점
비용 문제 : 복잡한 추론과정을 거치므로 답변 하나를 생성하는데 비용이 많이 발생함
프롬프트의 퀄리티에 의해 부정확한 응답이 발생할 가능성 존재
복잡한 추론을 위해선 많은 양의 훈련데이터가 필요하므로 소규모 LLM에서는 성능이 저하된다.
정리
각 패턴의 동작방식에 대한 예시 이미지 추가하기
각 패턴을 적용 했을 떄의 응답퀄리티ㄱ 증가된 증거자료도 추가하기.
그 외, 요즘에는 기본이 되어버린 역할부여, 대화형 프롬프트같은 자료도 추가하기
최종정리
Last updated