Few-shot 학습과 Chain of Thought – 예시로 AI 정확도 높이기
Few-shot과 CoT, 최신 모델에서 언제 쓰고 언제 버려야 하는가
들어가며: 검증된 고전, 그러나 맹목적 신앙은 금물
4편에서 우리는 System Prompt 레이어를 설계하고, AI의 자유를 박탈해 설계자의 의도만 실행되도록 구속하는 프레임워크를 다뤘습니다.
이번 편은 방향을 바꿔, 프롬프트 엔지니어링의 고전 기법 두 가지를 해부합니다.
- Few-shot Prompting: 예시를 보여줘서 원하는 형식을 학습시키는 방법
- Chain of Thought (CoT): "단계별로 생각해봐"라고 시켜서 추론 품질을 높이는 방법
둘 다 2020년~2023년 사이에 폭발적으로 연구되고 검증된 기법입니다. 논문도 많고, 블로그도 많고, 유튜브도 넘쳐납니다.
그런데 2025년에도 그대로 써야 할까요?
냉정하게 분석합니다.
1. Few-shot Prompting: 예시로 모델을 길들이는 기술
원리
Few-shot이란 프롬프트 안에 "이런 입력에는 이런 출력" 형태의 예시를 직접 포함시키는 방식입니다.
입력: "사과"
출력: "과일"
입력: "BMW"
출력: "자동차"
입력: "파이썬"
출력:
모델은 이 패턴을 보고 "파이썬 → 프로그래밍 언어"를 추론합니다. Zero-shot(예시 없이 바로 질문)보다 훨씬 정확한 형식으로 출력됩니다.
언제 유효한가
Few-shot이 빛을 발하는 상황은 명확합니다.
1. 출력 형식이 비표준적일 때
모델이 학습 데이터에서 거의 본 적 없는 출력 형식을 요구할 때입니다. 예를 들어 사내 특수 JSON 스키마, 독자적인 분류 체계, 회사 고유의 용어 표기법 등.
예시:
입력: "2024-01-15 회의록"
출력: {"doc_type": "MOM", "date": "20240115", "priority": "normal"}
입력: "긴급: 서버 장애 보고"
출력: {"doc_type": "IR", "date": "오늘날짜", "priority": "critical"}
입력: "3분기 매출 분석 리포트"
출력:
이 형식은 모델이 사전학습만으로 맞추기 어렵습니다. 예시 2~3개가 완벽한 가이드가 됩니다.
2. 어조(Tone)와 스타일을 고정할 때
글쓰기 작업에서 Few-shot은 텍스트 지시("정중하게 써줘")보다 훨씬 강력합니다. 예시 자체가 정확한 어조의 표준을 정의하기 때문입니다.
예시:
입력: 환불 거절 상황
출력: "고객님의 소중한 의견 감사드립니다. 확인 결과 환불 정책 기준에 맞지 않아 진행이 어렵습니다. 불편을 드려 정말 죄송합니다."
입력: 배송 지연 상황
출력:
3. 분류/레이블링 작업
감성 분석, 카테고리 분류, 의도 파악 등 레이블이 명확히 정의된 작업에서 Few-shot은 안정적인 성능을 보입니다.
주의사항: 예시의 품질이 전부다
Few-shot의 최대 함정은 나쁜 예시가 나쁜 출력을 만든다는 것입니다.
- 예시 내에 일관성 없는 형식이 섞여 있으면 모델이 혼란을 겪습니다
- 예시가 너무 많으면 컨텍스트 창을 낭비하고 오히려 노이즈가 됩니다
- 예시 2~5개가 최적입니다. 10개 이상은 역효과가 납니다
2. Chain of Thought (CoT): "단계별로 생각해봐"의 진짜 의미
배경: CoT는 어디서 왔는가
CoT는 2022년 Google Brain의 Wei et al. 논문 "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models"에서 처음 체계화됐습니다. 핵심 발견은 단순했습니다. 모델에게 최종 답만 출력하게 하는 대신, 중간 추론 과정을 함께 출력하게 하면 정확도가 극적으로 올라간다는 것.
같은 해 Kojima et al.은 여기서 한 걸음 더 나아가 더 놀라운 사실을 발견합니다. 예시 없이 프롬프트 끝에 딱 한 문장만 붙여도 효과가 있다는 것을.
"Let's think step by step."
이 여섯 단어가 당시 GPT-3의 수학 벤치마크 정확도를 17.7% → 78.7%로 끌어올렸습니다.
왜 효과가 있는가: LLM의 작동 방식과 연결
이걸 이해하려면 LLM이 어떻게 텍스트를 생성하는지 알아야 합니다.
LLM은 텍스트를 토큰 단위로 순서대로 생성합니다. 다음 토큰을 예측할 때, 이전에 생성된 모든 토큰이 컨텍스트로 사용됩니다. 즉, 모델이 무언가를 "출력"하는 것 자체가 그다음 추론의 입력이 됩니다.
CoT가 없으면 모델은 문제를 보자마자 바로 답을 생성해야 합니다. 중간 계산 없이 최종값으로 점프하는 것이죠. 복잡한 문제에서 이 과정이 틀리는 겁니다.
CoT를 쓰면 중간 단계를 실제로 토큰으로 생성하게 강제합니다. 각 중간 단계가 컨텍스트에 남아서 다음 단계의 추론을 지탱합니다. 모델이 "생각하는 공간"을 갖게 되는 것입니다.
원리: 직접 비교
단순한 예시로 시작하면 차이가 안 보입니다. 조금 복잡하게 만들어야 합니다.
# Zero-shot (CoT 없음)
Q: 어떤 상점에서 사과 1개에 1,200원이고 배 1개에 2,500원이다.
사과 3개와 배 2개를 사면 총 금액의 10%를 할인받는다.
최종 결제 금액은?
A: 8,730원 ← 틀림 (암산 오류)
# CoT 적용
Q: 동일한 문제. 단계별로 계산해줘.
A:
1단계: 사과 3개 = 1,200 × 3 = 3,600원
2단계: 배 2개 = 2,500 × 2 = 5,000원
3단계: 합계 = 3,600 + 5,000 = 8,600원
4단계: 10% 할인 = 8,600 × 0.1 = 860원
5단계: 최종 금액 = 8,600 - 860 = 7,740원
최종 답: 7,740원 ← 정확
숫자 계산만의 문제가 아닙니다. 법률 해석, 코드 디버깅, 다단계 의사결정 같은 복잡한 추론 작업에서도 동일한 패턴이 나타납니다. CoT 없이는 모델이 중간 논리를 건너뛰고 그럴듯한 결론으로 직행하다가 틀립니다.
2025년 관점: CoT가 여전히 필요한가
여기서 냉정한 분석이 필요합니다.
결론부터: 모델에 따라 다릅니다.
일반 모델(2025년 8월 기준: GPT-4o, Claude 3.7 Sonnet, Gemini 2.5 Pro)은 내부적으로 CoT를 어느 정도 수행하도록 학습돼 있습니다. 그러나 추론 특화 모델들은 차원이 다릅니다.
추론 특화 모델 (2025년 8월 기준):
- OpenAI o3 — 내부 추론 토큰을 수천 개 사용해 답을 도출
- Anthropic Claude 3.7 Sonnet (Extended Thinking) — 확장 사고 모드에서 내부 추론 과정 활성화
- Google Gemini 2.5 Pro — Thinking 모드 지원
이 모델들은 사용자가 CoT를 요청하지 않아도 내부에서 이미 수천 토큰의 추론 과정을 거칩니다. 외부에서 보이지 않을 뿐입니다.
이런 모델에서 "단계별로 생각해봐"를 추가하면:
- 이미 하고 있는 것을 또 시키는 것
- 추론 토큰이 이중으로 발생해 비용 증가
- 출력이 지나치게 길어져 UX 저하
그러면 CoT가 필요 없어진 건가?
아닙니다. 구분이 필요합니다.
| 상황 | CoT 유효성 |
|---|---|
| GPT-3.5 Turbo, Claude 2급 구형 모델 | 매우 유효 (성능 차이 극명) |
| GPT-4o, Claude 3.7 Sonnet 일반 작업 | 보통 (복잡도에 따라 도움) |
| o3, Claude 3.7 Extended Thinking, Gemini 2.5 Pro Thinking | 불필요 (내부에서 자동 수행) |
| 복잡한 수학/논리/다단계 추론 | 모델 무관하게 유효 |
| 단순 분류/형식 변환 작업 | 역효과 가능 (불필요한 장황함) |
3. 실전: 언제 쓰고 언제 버릴까
Few-shot을 써야 할 때
✅ 비표준 출력 형식 고정
✅ 어조/스타일 정확한 복제
✅ 분류 레이블 정의
✅ 도메인 특수 용어 표기 통일
Few-shot을 버려야 할 때
❌ 일반적인 글쓰기 작업 (지시로 충분)
❌ 컨텍스트 창이 이미 꽉 찬 상황
❌ 예시를 만드는 비용이 높은 경우
❌ 최신 모델이 zero-shot으로 이미 완벽한 경우
CoT를 써야 할 때
✅ 수학, 논리, 다단계 추론 문제
✅ 구형 모델(GPT-3.5급) 사용 시
✅ 모델의 추론 과정을 디버깅/검증하고 싶을 때
✅ 출력에 설명/근거가 포함되어야 할 때
CoT를 버려야 할 때
❌ o1, o3, Extended Thinking 모델 사용 시
❌ 단순 작업 (형식 변환, 번역, 요약)
❌ 빠른 응답이 중요한 실시간 시스템
❌ 출력 길이를 최소화해야 할 때
4. 실전 패턴: 두 기법의 조합
Few-shot과 CoT는 함께 쓸 수 있습니다. Few-shot CoT라고 부릅니다.
예시:
Q: 제품 A의 월 구독료가 9,900원이고 연간으로 전환 시 10% 할인된다. 연간 비용은?
A:
1단계: 월 구독료 = 9,900원
2단계: 연간 합계 = 9,900 × 12 = 118,800원
3단계: 10% 할인 = 118,800 × 0.9 = 106,920원
최종: 106,920원
Q: 제품 B의 월 구독료가 29,000원이고 연간 전환 시 15% 할인된다. 연간 비용은?
A:
모델은 예시에서 "이런 방식으로 추론하라"는 패턴을 학습하고, 새 문제에 동일한 추론 구조를 적용합니다. 2023년 이전 모델에서 특히 강력합니다.
5. 2025년의 현실적 판단 기준
프롬프트 기법을 선택할 때 항상 물어야 할 세 가지입니다.
1. 어떤 모델을 쓰는가?
최신 추론 모델은 기법 없이도 잘 합니다. 구형 모델은 기법이 성능을 결정합니다.
2. 작업의 복잡도는?
단순 작업에 CoT를 붙이면 토큰 낭비입니다. 복잡한 추론에 Few-shot만 쓰면 부족합니다.
3. 비용과 속도는 허용 가능한가?
Few-shot은 컨텍스트 비용을 올립니다. CoT는 응답 시간을 늘립니다. 프로덕션 환경이라면 반드시 계산하세요.
마치며: 기법은 도구, 맥락이 판단을 내린다
Few-shot과 CoT는 여전히 유효합니다. 그러나 무조건 적용하는 것은 2020년의 사고방식입니다.
2025년의 프롬프트 엔지니어는 모델의 내부 동작을 이해하고, 해당 모델에 맞는 기법을 선택적으로 사용합니다. 모든 상황에 CoT를 붙이는 것이 아니라, CoT가 실제로 필요한 순간을 구분하는 것. 그것이 실력입니다.
6편에서는 최신 모델에서 가장 골치 아픈 문제, 할루시네이션 차단을 다룹니다. 모델이 없는 사실을 만들어내는 것을 프롬프트 레벨에서 어떻게 막는가.
