1. 프롬프트 엔지니어링 기초
1) 개념
- 자연어 처리(Natural Language Processing, NLP): 사람과 컴퓨터의 상호작용 시 인간의 언어를 사용하는 방법
- ex) NLU(Natural Language Understanding), NLG(Natural Language Generation)
- 대규모 언어 모델(Large Language Mode, LLM): 자연어 처리를 위해 방대한 양의 데이터로 학습된 인공지능 모델
- ex) GPT(Generative Pre-trained Transformer), Bert
- 프롬프트 엔지니어링: AI모델로부터 원하는 결과물을 얻기 위해 입력하는 프롬프트를 최적화하는 기술
2) 프롬프트 엔지니어링의 기초 원리
- 구체성(명확성): AI는 답변을 생성할 때 바로 다음 나올 단어를 예측하며 문장을 생성합니다. 구체적인 프롬프트를 입력해야 내가 원하는 키워드와 내용에 대한 확률이 올라가서 원하는 답변을 받을 확률이 올라갑니다.
- 데이터 & In-context learning (문맥 이해): AI는 입력된 데이터를 기반으로 학습하고 문맥을 이해하여 답변을 생성합니다. 따라서 프롬프트를 작성할 때도 이를 고려하여, 원하는 답변이 AI의 데이터 베이스에 존재하는지 여부를 파악하고 활용해야 합니다.
- 알고리즘 (논리적 사고 절차): 아무리 구체적으로 프롬프트를 입력한다고 하더라도 한꺼번에 너무 복잡하고 다양한 지시를 하면 원하는 답변을 얻을 확률이 매우 낮아집니다. 따라서 내가 원하는 문제해결이나 목표를 먼저 알고리즘화하여 분석하고 심플하게 다듬어야 합니다.
2. Generated Knowledge Prompting
참고 자료: Liu et al. 2022

1) 개념
언어 모델을 사용하여 각 질문에 대해 참고할만한 지식을 생성하고 이를 해당 질문에 대한 추가 정보로 활용하는 방법
2) 특성
이 방법은 언어모델로 하여금 스스로 추가 지식을 생성하고 활용함으로써 사전 훈련된 모델의 정확성과 유연성을 높이는 데 중점을 둡니다. 또한, 지식 생성 및 통합을 위해 추가적인 지도가 필요하지 않는 특성을 강조합니다.
3) 활용방안
상식적인 답변 내용의 정확성을 올리는 가장 단순한 방식이 될 수 있습니다. 지식 생성 및 통합을 통해 모델의 예측력과 이해력을 향상시킬 수 있습니다.
4) 예시 프롬프트
- 단순 요청 시
- 사용자 질문: 세계기억력대회를 누가 만들었지?
- 답변: 이 대회는 1991년에 토니 비자로부터 시작되었습니다. (ChatGPT 3.5 Turbo)
- 평가: 실제로 토니 비자라는 사람은 존재하지 않는다. 기억력대회는 영국의 Tony Buzan과 Ray Keene이 만들었음.
- Generated Knowledge Prompting 적용 예시
- 사전 지식 생성을 위한 질문: 세계기억력대회의 역사를 알려줘.
- 언어모델이 스스로 세계기억력대회 역사에 대한 정보를 생성
- 사용자 질문: 세계기억력대회를 누가 만들었지?
- 답변: 세계 기억력 대회는 Tony Buzan과 Ray Keene에 의해 만들어졌습니다. 1991년에 영국에서 시작된 이 대회는 두 사람이 뇌의 기억력과 관련된 능력을 측정하고 향상시키는 것을 중심으로 삼아 만들어진 것입니다.
- 사전 지식 생성을 위한 질문: 세계기억력대회의 역사를 알려줘.
3. Chain-of-Thought(CoT)
참고 자료: Wei et al. (2022)

1) 개념
- Chain of Thought는 복잡한 추론 작업을 수행하기 위해 중간 추론 과정을 순차적으로 연결한 것이다.
- 중간 추론 단계의 연속성과 유창한 표현이 중요하며, 최종 결과를 유도하기 위한 과정을 포함한다.
2) 특성
- 연속성: 시작과 끝까지 중간 추론 단계가 논리적으로 연결되어야 한다.
- 유창성: 최대한 이해하기 쉽고 자연스러운 언어로 중간 추론을 표현해야 한다.
- 효과성: 중간 추론 단계가 최종 결과를 유도하는 데 효과적이어야 한다.
3) 활용방안
- 복잡한 추론 작업: 수리적 추론, 상징적 추론 등의 복잡한 작업을 수행하는 데 활용된다.
- 언어 모델 교육: 대규모 언어 모델을 교육하고, 복잡한 추론 작업에 대한 능력을 향상시키는 데 사용될 수 있다.
4) 예시 프롬프트
사용자 질문: 식당에는 23개의 사과가 있었습니다. 만약 그들이 점심을 만들기 위해 20개를 사용하고 6개를 더 샀다면, 그들은 몇 개의 사과를 가지고 있을까요?
- 단순 요청 시
- 답변: 정답은 27개입니다.
- CoT 적용 시
- CoT 적용을 위한 추가적인 프롬프팅 방법
- 1안: "단계적으로 추론 과정을 거치는 Chain of Thought 방식대로 문제를 해결하세요."라고 지시사항 추가
- 2안: 비슷한 유형의 문제 예시를 제시
- Q: 로저는 테니스공 5개를 가지고 있습니다. 그는 캔 2개를 더 삽니다 각각의 캔은 3개의 테니스공이 들어있습니다. 그는 지금 테니스공을 몇 개 가지고 있습니까?
A: 로저는 처음에 5개의 테니스공을 가지고 있었습니다. 3개의 공이 담긴 캔 2개를 샀기 때문에 6개의 테니스 공이 추가됩니다. 따라서 5 + 6 = 11입니다. 정답은 11개입니다.
- Q: 로저는 테니스공 5개를 가지고 있습니다. 그는 캔 2개를 더 삽니다 각각의 캔은 3개의 테니스공이 들어있습니다. 그는 지금 테니스공을 몇 개 가지고 있습니까?
- 답변: 식당에 처음에는 23개의 사과가 있었습니다. 이들이 점심을 만들기 위해 20개를 사용했으므로, 처음에 가지고 있던 사과에서 20개를 뺀 수가 됩니다. 따라서 23개 - 20개 = 3개입니다. 그 후에 6개의 사과를 더 샀으므로, 이를 처음에 뺀 3개의 사과에 더해야 합니다. 따라서 3개 + 6개 = 9개입니다. 식당은 총 9개의 사과를 가지고 있게 됩니다.
- CoT 적용을 위한 추가적인 프롬프팅 방법
4. Self-Consistency
참고 자료: Wang et al. (2022)

1) 개념
복잡한 추론 작업에서 여러 추론 경로를 통해 얻은 다양한 답변 중에서 가장 일관된 답변을 선택하여 모델의 추론 능력을 향상시키는 방법
2) 특성
- 다양한 Chain of Thought(CoT)를 퓨샷러닝처럼 예시로써 제시하여, 언어모델로 하여금 다양한 추론 경로를 사용하게 한다.
- 복잡한 추론 작업에서 다양한 추론 경로가 각각 올바른 답변을 이끌 수 있으며, Self-consistency는 이러한 특성을 인식하고 다양한 추론 경로로부터 얻은 답변을 종합하여 가장 일관된 답변을 선택한다.
3) 활용방안
복잡한 추론 작업에서 모델의 추론 능력을 향상시킬 수 있으며, 여러 추론 경로를 통해 얻은 다양한 답변 중에서 가장 일관된 답변을 선택하여 모델의 성능을 향상시킬 수 있다. 예를 들어 다양한 추론 경로를 필요로 하는 수학 문제 등에서 이를 활용한다면, 정답 비율을 높임과 동시에 다양한 문제해결 방식을 이끌어낼 수 있다.
4) 예시 프롬프트
사용자 질문: 쟈넷의 오리는 매일 16개의 알을 낳습니다. 그녀는 매일 아침 세 개를 먹고 친구들을 위해 네 개의 알로 머핀을 굽습니다. 그녀는 나머지를 개당 $2에 판매합니다. 그녀는 매일 얼마를 벌까요?
- 단순 요청 시
- 답변: 이것은 그녀가 매일 3개 + 4개 = 7개의 계란을 사용한다는 것을 의미합니다. 그녀는 나머지를 개당 2달러에 팔아서 하루에 총 7*2달러=14달러를 팝니다. 정답은 14달러입니다.
- Self-consistency 적용 시
- "다음에 제시하는 여러 추론 경로를 참고하여 다양한 결과를 도출해내고, 이후 가장 일관적인 결과를 선택하여 답변해주세요."

5. Automatic Reasoning and Tool-use (ART)
참고 자료: Paranjape et al. (2023)

1) 개념
언어모델이 새로운 작업을 수행하기 위해 스스로 중간 추론 단계를 생성하고 외부 도구를 사용하는 방법
2) 특성
- 자동적인 중간 추론 단계 생성: ART는 새로운 작업에 대한 중간 추론 단계와 외부 도구의 사용을 자동으로 생성한다.
- 사용자의 개입 가능: 사용자가 작업 및 도구 라이브러리를 업데이트하거나 오류를 수정하여 성능을 향상시킬 수 있는 방법을 제공한다.
3) 활용방안
- 새로운 작업에 대한 자동 추론: ART를 사용하여 새로운 작업에 대한 적절한 다중 추론 방식을 자동으로 생성하고 실행할 수 있다.
- 외부 도구 활용: 외부 도구를 활용하여 복잡한 작업을 수행할 수 있으며, 이러한 과정에서 사용자의 개입도 가능하다.
4) 예시 프롬프트
- 사용자의 질문을 분석한다.
- 사용자의 요청을 해결할 최적의 추론 경로와 외부 도구가 무엇인지 탐색한다.
- 최적의 추론 경로와 외부 도구를 활용하여 문제를 해결한다.
- 필요에 따라 사용자가 외부 도구 라이브러리를 추가하거나 수정한다.
- 참고사항: 논문에서 소개하는 대표적인 외부 도구들
- GSM8K: 고품질의 언어학적으로 다양한 초등학교 수학 단어 문제 8,500개 데이터 세트. 데이터셋은 다단계 추론이 필요한 기초 수학 문제에 대한 질문 답변 과제를 지원하기 위해 제작되었다.
- SVAMP: GSM8K와 같이 초등 수준의 수학 문제 데이터 세트
- AQuA: 딥러닝 기술의 상태를 시험하기 위한 객관식 대수 단어 문제
- StrategyQA: 필요한 추론 단계가 질문에 내포되어 있고 전략을 사용하여 추론해야 하는 질문 답변 벤치마크입니다. 2,780개의 예제가 포함되어 있으며, 각각은 전략 질문, 분해 및 증거 단락으로 구성되어 있습니다.
- ARC-challenge: 과학 시험의 객관식 문제 데이터 세트
6. Prompt Chaining
참고 자료: https://docs.anthropic.com/claude/docs/prompt-chaining
1) 개념
작업을 하위 작업으로 분할하고 이러한 하위 작업을 식별한 후, LLM에 작업을 요청하여 받은 응답을 또 다른 프롬프트의 입력으로 사용하여 복잡한 작업을 순차적으로 수행하고 여러 연산이나 변환을 수행할 수 있습니다.
2) 특성
- 복잡한 작업을 단순한 작업으로 분해하여 순차적으로 수행하므로 더 정확하고 효율적인 결과를 얻을 수 있습니다.
- LLM이 처리하기 어려운 부분을 집중적으로 다룰 수 있으며, 작업의 결과를 단계별로 확인하여 최종 결과물을 얻을 수 있습니다.
3) 활용 방안
- LLM이 처리하기 어려운 복잡한 작업을 단순화하여 정확한 결과를 얻을 수 있도록 도와줍니다.
- 응답 유효성 검사, 병렬 작업, 작업을 여러 단계로 분해하여 집중적으로 다루는 등의 다양한 방식으로 활용할 수 있습니다.
4) 예시 프롬프트
- 문서에서 질문에 대한 인용구를 추출하고, 그 인용구를 사용하여 질문에 대한 답변을 요청하는 프롬프트(첫 번째 프롬프트와 두 번째 프롬프트를 연결하여 사용)
- 문서의 문법적 오류를 찾아내고 추가적인 빠뜨린 오류가 있는지 확인하는 프롬프트(응답 유효성 검사용 프롬프트)
- 다양한 수준의 독자들에게 병렬적으로 각각 다른 수준의 설명을 요청하는 프롬프트(병렬 작업용 프롬프트)
7. Tree of Thoughts(ToT)
참고 자료: Yao et el. (2023)

1) 개념
언어 모델이 여러 명의 전문가를 연기하며 단계적으로 추론 과정을 거쳐, 스스로의 생각을 관찰 및 평가하고 수정하여 최종 결론을 도출하는 방법
2) 특성
- 각각의 "thought"를 단계별로 생성하고 중간 단계로 활용하여 문제를 해결합니다.
- 고수준의 의미 단위를 갖춘 각 "thought"는 언어 모델이 문제를 해결하는 과정을 스스로 평가하고 숙고하는 메타인지 능력을 갖추게 합니다.
- 이를 통해 언어 모델은 다양한 추론 경로를 고려하고, 다음 단계의 선택을 결정하며, 전방 또는 후방 추적을 통해 전역적인 선택을 할 수 있습니다.
3) 활용방안
- 언어 모델이 복잡한 사고과정과 메타인지 능력을 요하는 문제를 해결하는 데 도움을 줄 수 있습니다.
- 법률 해석, 의료적 판단, 논문 작성 등 복잡한 추론과 의사 결정, 통합적 문제해결이 필요한 다양한 전문분야에 접목할 수 있습니다.
4) 예시 프롬프트
- 세 명의 다른 전문가들이 어떤 질문에 답하고 있다고 상상해 보세요.
- 답변의 내용은 "상온, 상압 초전도 세라믹화합물 및 그 제조방법"에 대한 문서 내용을 바탕으로 도출해냅니다.
- 최종 결론을 도출하기까지 몇 단계의 추론 과정을 거쳐야 합니다.
- 모든 전문가들은 단계별로 신중하게 추론하고 모든 사실을 고려하여 답을 브레인스토밍합니다. 이후 그들의 생각을 한 단계씩 적을 것입니다.
- 각 단계의 생각을 적을 때마다 그들은 서로의 생각을 공유합니다.
- 그들은 각자 자신의 생각과 다른 사람들의 모든 생각을 합리적이고 논리적으로 비판할 것입니다.
- 그들은 과학과 물리 법칙에 근거하여 그들의 답을 확인할 것입니다.(주제에 따라 변경)
- 그런 다음 모든 전문가들이 다음 단계로 넘어가 그들의 생각을 적을 것입니다.
- 모든 전문가는 다른 전문가의 생각을 고려하여 결론에 도달할 때까지 이러한 단계를 계속 진행합니다.
- 언제든지 논리에 결함이 있다는 것을 인식할 경우 해당 결함이 발생한 단계로 되돌아갑니다.
- 만약 어떤 전문가라도 자신이 틀렸다는 것을 깨닫는다면, 그들은 이것을 인정하고 또 다른 생각을 해보기 시작합니다.
- 각 전문가는 자신의 현재 주장이 맞거나 틀릴 가능성을 고려합니다.
- 가장 가능성이 높은 단일 생각에 대해 전문가들이 동의할 때까지 이러한 과정을 계속합니다.
- 질문: LK-99가 상온, 상압 초전도체라는 것을 입증할 수 있는가?
8. Retrieval Augmented Generation(RAG)
참고 자료: Meta, Lewis et el. (2021)

1) 개념
RAG는 사전 훈련된 언어 모델에 검색 기능을 결합한 형태, 즉 지식 기반 생성 작업을 위한 알고리즘입니다. 이는 사용자 요청과 관련된 고유한 문서를 검색하여, 해당 문서를 기반으로 언어 모델이 답변을 생성하도록 하는 방식입니다. 따라서, RAG는 자연어 처리 과제에 있어 심층적인 지식을 필요로 하는 문제에서 특히 유용합니다.
2) 특성
- 지식 기반 작업: RAG는 사용자 요청과 관련하여 검색된 문서의 정보를 참조함으로써, 보다 풍부하고 사실적인 답변을 제공할 수 있습니다.
- 해석 가능성: 생성된 답변에 대한 문서 출처를 제공할 수 있어, 모델의 결정 과정을 추적하고 이해할 수 있습니다.
- 유연성과 적응성: 다양한 종류의 검색 데이터베이스와 생성 모델을 결합하여, 다양한 언어 처리 과제에 적용할 수 있습니다.
3) 활용방안
- 모델의 능력 향상: 사용자의 다양한 질문에 대해 정교하고 사실 기반의 답변, 풍부한 내용 등을 제공할 수 있습니다.
- 콘텐츠 생성 및 요약: 주어진 텍스트나 문서에 대한 요약, 리뷰 작성, 뉴스 기사 생성 등에 활용할 수 있습니다.
- 사실 검증: 데이터를 기반으로 주장이나 정보에 대한 사실 여부를 검증하는 데 사용될 수 있습니다.
- 논문 분석: 어려운 내용의 논문을 바탕으로 특정 내용에 대해 질문하거나 요약, 정리 등의 작업을 처리할 수 있습니다.
4) 적용 사례
- ChatPDF
- 메타마인드 AI 챗봇
- 퍼플렉시티(Perplexity)
9. ReAct Prompting
참고 자료: Yao et al., 2022

1) 개념
ReAct는 언어모델에게 추론과 행동을 교차로 생성하도록 유도함으로써 추론과 상호작용을 조합하는 방법론입니다. 이를 통해 언어모델이 작업에 관련된 추론 과정과 행동을 생성하고, 외부 소스와 상호작용하여 정보를 가져오고 작업을 수행할 수 있게 합니다.
2) 특성
- 모델에게 여러 단계에 걸쳐 추론과 행동을 교차로 생성하도록 유도
- 외부 소스와 상호작용하여 정보를 가져오고 작업을 수행
- 인간의 개입을 통해 행동을 수정하고 상황에 유연하게 대처
3) 활용방안
- 웹 상의 최신 정보를 가져와 정확한 답변을 제공하는 것과 같이 실제 상황에서의 정보 검색 및 상호작용
- 언어 모델이 생각하는 과정 중에 인간의 개입을 통해 행동을 수정하여 보다 원하는 결과를 얻어낼 수 있음.
4) 예시 프롬프트
ReAct를 연구하거나 AGI(Artificial General Intelligence)를 위한 언어 모델을 학습할 때 HotpotQA와 AlfWorld와 같은 대표적인 질문-답변 데이터셋을 활용하고 있습니다.
10. 그밖에 텍스트 이외의 프롬프트 엔지니어링
- Multi-modal Chain of Thought (m-CoT)
- Visual Chain of Thought (v-CoT)
- DALL-E 3 Consistency