고급 프롬프팅 기법
Chain-of-Thought가 모델의 “생각”을 유도한다면, 고급 기법들은 모델이 외부 도구를 사용하고, 여러 경로를 탐색하며, 스스로 결과를 개선하도록 만듭니다. 이 기법들은 LLM을 단순한 텍스트 생성기에서 **자율적 에이전트(Agent)**로 진화시키는 핵심 패턴입니다.핵심 아이디어
1. ReAct (Reasoning + Acting)
동작 방식
ReAct는 모델이 **추론(Thought)**과 **행동(Action)**을 번갈아 수행하는 패턴입니다. 모델이 스스로 “지금 무엇을 알아야 하는지” 추론하고, 외부 도구를 호출하여 정보를 수집한 후, 그 결과를 바탕으로 다시 추론합니다.구현 예시
2. Tree-of-Thought (ToT)
동작 방식
Tree-of-Thought는 Chain-of-Thought의 확장으로, **여러 가지 사고 경로를 분기(Branch)**하여 탐색하고, 각 경로를 평가하여 가장 유망한 경로를 선택합니다.구현 예시
3. Structured Output (구조화 출력)
LLM의 출력을 프로그래밍에서 파싱 가능한 형식으로 제한합니다. JSON, XML, YAML 등 구조화된 형식으로 출력하면 후속 처리가 용이해집니다.4. Self-Refine (자기 개선)
모델이 자신의 출력을 **비평(Critique)**하고 **개선(Refine)**하는 반복 과정입니다.5. Prompt Chaining (프롬프트 연결)
복잡한 태스크를 여러 단계의 프롬프트로 분할하여 순차적으로 실행합니다. 각 단계의 출력이 다음 단계의 입력이 됩니다.기법 비교 및 선택 가이드
| 기법 | 복잡도 | API 호출 수 | 적합한 상황 |
|---|---|---|---|
| ReAct | 높음 | 다수 (루프) | 외부 정보 필요, Agent 구축 |
| Tree-of-Thought | 높음 | 3~5회 | 창의적 문제 해결, 전략 수립 |
| Structured Output | 낮음 | 1회 | 데이터 추출, API 연동 |
| Self-Refine | 중간 | 3~7회 | 글쓰기, 코드 품질 개선 |
| Prompt Chaining | 중간 | 단계 수 | 복잡한 파이프라인 |
관련 기술 비교
| 기법 | 기원 논문 | 핵심 혁신 | 한계 |
|---|---|---|---|
| CoT | Wei et al. (2022) | 추론 과정 명시화 | 단일 경로 추론 |
| Self-Consistency | Wang et al. (2022) | 다수결 투표 | 비용 증가 |
| ToT | Yao et al. (2023) | 분기 탐색 | 구현 복잡도 높음 |
| ReAct | Yao et al. (2023) | 추론 + 도구 사용 | 도구 설계 필요 |
| Self-Refine | Madaan et al. (2023) | 자기 비평 루프 | 수렴 보장 없음 |
참고 논문
| 논문 | 연도 | 핵심 기여 |
|---|---|---|
| Chain-of-Thought Prompting Elicits Reasoning in LLMs | 2022 | CoT 프롬프팅 제안 |
| Self-Consistency Improves CoT Reasoning in LLMs | 2022 | 다수결 기반 일관성 향상 |
| Tree of Thoughts: Deliberate Problem Solving with LLMs | 2023 | 분기 탐색 추론 |
| ReAct: Synergizing Reasoning and Acting in LLMs | 2023 | 추론 + 행동 통합 |
| Self-Refine: Iterative Refinement with Self-Feedback | 2023 | 자기 비평 개선 루프 |
ReAct와 Function Calling의 차이는 무엇인가요?
ReAct와 Function Calling의 차이는 무엇인가요?
ReAct는 프롬프트 수준에서 추론과 행동을 구조화하는 패턴이고, Function Calling은 API 수준에서 모델이 도구를 선택하고 호출하는 메커니즘입니다. ReAct는 개념적 프레임워크이고, Function Calling은 그것을 구현하는 기술입니다. 실무에서는 Function Calling API를 사용하여 ReAct 패턴을 구현합니다.
Tree-of-Thought가 Self-Consistency보다 항상 좋은가요?
Tree-of-Thought가 Self-Consistency보다 항상 좋은가요?
아닙니다. ToT는 각 분기를 명시적으로 평가하므로 비용이 더 높습니다. 단순 추론 문제에서는 Self-Consistency가 더 비용 효율적입니다. ToT는 창의적 문제 해결, 계획 수립, 게임 전략 같은 탐색이 필요한 문제에서 강점을 보입니다.
Self-Refine이 무한 루프에 빠지지 않나요?
Self-Refine이 무한 루프에 빠지지 않나요?
max_iterations을 설정하여 방지합니다. 또한 비평 단계에서 “개선 불필요” 판단을 포함하면 자연스럽게 종료됩니다. 실무에서는 3~5회 반복이 일반적이며, 이후에는 개선 폭이 미미해집니다.
