기본 프롬프트 엔지니어링 태크닉
Last updated
Last updated
이전 챕터에서는 응답목적에 맞추어 프롬프트를 작문하는 방법들에 대해서 배워 봤습니다.
이번 챕터에서는 프롬프트를 최적화 할 수 있는 방법인 프롬프트 엔지니어링 패턴들에 대해서 알아보도록 하겠습니다.
프롬프트 엔지니어링을 통한 최적화로 얻을 수 있는 이점들은 다음과 같습니다.
정확한 응답 유도
프롬프트설계로 애매한 답변이 아닌 명확하고 원하는 정보를 얻을 수 있음
시간 & 비용 절감
적절한 프롬프트를 사용하면 불필요한 재요청 없이 원하는 결과를 빠르게 도출할 수 있음.
일관된 결과 유지
같은 질문에 대해 일정한 품질의 답변을 유지할 수 있음.
AI모델 성능 극대화
AI가 최적의 학습데이터를 활용할 수 있도록 유도할 수 있음.
AI에게 예제를 주지 않고(Zero Shot) 작업을 수행하는 방법으로 LLM이 자체적으로 학습한 데이터를 기반으로 응답을 생성하도록 유도하는 방법
빠른 적용 : 예제 없이 바로 사용할 수 있다.
일반적인 질문에 적합 : 모델이 사전 학습된 지식을 사용하기 때문에 일반적인 질문에 적합하다.
정확성이 떨어질 수 있음 : 모델이 문맥을 잘못 이해하여 잘못된 응답을 반환할 수 있다.
AI에게 몇 개의 예제(Few Shot)를 제공한 후, 추가적인 입력에 대해 유사한 방식으로 응답하도록 유도하는 방법 으로 복잡한 문제 수행에 있어서 Zero Shot Prompt보다 정확도가 높다.
사전 예제 필요 : 모델이 원하는 형식을 학습할 수 있도록 프롬프트에 예제를 포함시켜줘야 한다.
일관된 응답 : Zero Shot에 비해 문맥을 더 잘 파악할 수 있으며 일관된 답변을 생성한다
적응력 증가 : AI가 사전학습하지 못한 새로운 개념이나 패턴을 학습할 때 유용하다
예시 품질의 중요도 : 예시품질이 응답결과에 영향을 끼친다.
한계점
복잡한 추론이 필요한 문제는 예제만으로 부족할 수 있다.
Few Shot Prompt 기법을 사용하여 1년 후 , 5년 후 , 10년 후 , 20년 후 의 미래계획을 각 1줄 이상작성하세요. 각 년도별 미래계획은 다음 형식에 맞춰서 출력되어야 합니다.
N년 후의 나는 ..........
복잡한 과제 수행을 위해 , AI에게 논리적인 사고 과정을 단계별로 설명(Chain of Thought)하도록 유도하는 기법
계산을 바로 출력하지만 계산 과정이 없음.
응답결과에 답을 얻기 위한 추론 과정이 포함됨
단, 최신 LLM들은 이전 모델들에 비해 더묵 많은 데이터를 학습하여 자연스럽게 추론능력이 향상되었고, 추가적인 학습과정에서 COT방식을 학습하였기 때문에 응답을 생성하는 과정에서 COT가 필요하다고 판단되는 경우 자동으로 적용된다.
다만, 더욱 복잡한 문제나 정밀한 논리과정이 필요한 경우에는 아직 LLM이 문제해결방법에 대해 학습하지 못했을 가능성이 높으므로 COT를 사용하는 것이 효과적
단계별 사고 유도 : 응답을 바로 반환하는 것이 아닌 논리적인 추론을 수행한 후 응답을 생성한다
복잡한 문제 해결 : 수학, 논리, 추론 기반의 질문에 효과적
정확도 향상 : Few shot, Zero shot에 비해 더 깊이 있는 답변을 생성할 수 있다.
한계점
소규모 LLM모델에서는 성능이 떨어진다.(100B 이상의 모델에서 사용할 것을 권장)
직접적인 사고과정을 문장으로 작성해야 하는 번거로움이 있다.
프롬프트의 완성도가 응답 퀄리티에 영향을 끼친다.
다음 문제를 해결할 수 있는 COT Propmt를 작성하시오
ZCOT는 기존 Zero-Shot방식에 COT기법을 자연스럽게 적용하여 AI가 사고과정을 거쳐 응답을 생성하도록 유도하는 기법입니다.
즉 COT와 같이 직접 사고과정을 작성하는 예제가 없이 단순한 질문을 던지더라도 AI가 자체적으로 단계별 사고과정을 포함한 답변을 생성해줍니다.
Zero shot기반의 프롬프트에 "단계적으로 사고하시오" 혹은 "논리적으로답변하시오" 같은 키워드를 추가하면 ZCOT방식의 응답 프롬프트가 완성된다.
간결하고 강력한 사고력 : Zero shot방식의 간결함과 COT의 논리적 사고력을 동시에 갖춤
AI의 사고과정을 확인 할 수 있으므로 적절한 피드백을 부여하여 응답을 개선할 수 있다.
복잡한 문제에서 더 정확한 답변을 얻을 수 있다
한계점
논리적인 사고과정을 즉흥적으로 사용하기 때문에 논리적인 사고과정 자체가 불완전할 수 있다.
단순한 질문에 대한 응답결과도 쓸데없이 장황해질 수 있다.(비용문제)
Few-shot COT보다는 부정확한 응답결과를 반환한다.
한 상점에 120개의 사과가 있습니다. 이 상점은 매일 15개의 사과를 판매합니다. 7일 후에는 몇 개의 사과가 남아 있는지를 ZCOT 기법을 활용하여 구하시오.
질문에 대한 답변들 중 가장 많이 등장하는 답변이 정답에 가까울 확률이 높다는 아이디어에서 만들어진 기법.
기존 COT방식이 한 번의 사고과정을 거쳐 답변을 생성한다면 , Self-Consistency는 여러번의 독립적인 사고과정을 거친 후 , 가장 많이 등장하는 답변을 논리적으로일관성있는 최종 응답으로 채택 하는 기법
프롬프트 준비(Temperature는 0.7 이상)
같은 프롬프트를 최소 5 ~ 10번 실행
각 실행에서 얻은 답변을 기록
가장 많이 등장하는 답변을 채택
특징
응답 퀄리티 향상 : 단순 COT방식은 한 번의 추론과정만 거치기 때문에 실수할 가능성이 높으나, Self-Consistency는 여러번의 사고 과정을 거치므로 논리적으로 일관성 있는 답변을 채택할 가능성을 높여줌.
정확한 정답 도출을 위해 여러 접근 방식으로 테스트하고자 할 때 유용하다.
한계점
비용 문제 : 복잡한 추론과정을 거치므로 답변 하나를 생성하는데 비용이 많이 발생함
프롬프트의 퀄리티에 의해 부정확한 응답이 발생할 가능성 존재
복잡한 추론을 위해선 많은 양의 훈련데이터가 필요하므로 소규모 LLM에서는 성능이 저하된다.
각 패턴의 동작방식에 대한 예시 이미지 추가하기
각 패턴을 적용 했을 떄의 응답퀄리티ㄱ 증가된 증거자료도 추가하기.
그 외, 요즘에는 기본이 되어버린 역할부여, 대화형 프롬프트같은 자료도 추가하기
최종정리