본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout

내비게이션

  • Tech
  • Projects
  • Books
  • About
  • Tags

카테고리

  • AI / ML
  • 웹 개발
  • 프로그래밍
  • 개발 도구

연결

  • GitHub
  • Email
  • RSS
© 2026 Kreath Archive. All rights reserved.Built with Next.js + MDX
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 3장: Chain-of-Thought 추론 기법
2026년 1월 16일·AI / ML·

3장: Chain-of-Thought 추론 기법

LLM에게 단계적 사고를 유도하는 Chain-of-Thought 프롬프팅의 원리, 변형 기법, 그리고 최신 추론 모델에서의 활용 전략을 다룹니다.

18분339자7개 섹션
llmprompt-engineeringstructured-outputtraining
공유
prompt-engineering3 / 10
12345678910
이전2장: 제로샷과 퓨샷 프롬프팅다음4장: 역할 지정과 페르소나 설계

Chain-of-Thought의 등장 배경

2022년 Google Research의 Jason Wei 등이 발표한 논문 "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models"는 프롬프트 엔지니어링의 전환점이 되었습니다. 이 연구는 모델에게 최종 답만 요구하는 대신 중간 추론 과정을 함께 생성하도록 유도하면 복잡한 추론 작업의 정확도가 크게 향상된다는 것을 입증했습니다.

Chain-of-Thought(CoT, 사고의 연쇄) 프롬프팅의 핵심 아이디어는 단순합니다. 사람이 복잡한 문제를 풀 때 머릿속으로 단계를 나누어 생각하듯, 모델에게도 같은 과정을 텍스트로 명시적으로 수행하게 하는 것입니다.

기본 CoT 프롬프팅

표준 프롬프팅 vs CoT 프롬프팅

차이를 직접 비교해 보겠습니다.

text
# 표준 프롬프팅
Q: 카페에서 아메리카노 3잔(4,500원)과 라떼 2잔(5,000원)을 주문하고
20,000원을 냈습니다. 거스름돈은 얼마입니까?
A:

표준 방식에서 모델은 바로 답을 내놓으려 하며, 계산 오류가 발생할 확률이 있습니다.

text
# CoT 프롬프팅
Q: 카페에서 아메리카노 3잔(4,500원)과 라떼 2잔(5,000원)을 주문하고
20,000원을 냈습니다. 거스름돈은 얼마입니까?
단계별로 풀어 주세요.
 
A: 단계적으로 계산하겠습니다.
1단계: 아메리카노 총 금액 = 4,500원 x 3 = 13,500원
2단계: 라떼 총 금액 = 5,000원 x 2 = 10,000원
3단계: 전체 주문 금액 = 13,500원 + 10,000원 = 23,500원
4단계: 거스름돈 = 20,000원 - 23,500원 = -3,500원
 
금액이 부족합니다. 20,000원으로는 3,500원이 모자랍니다.

CoT를 통해 모델은 중간 계산을 명시적으로 수행하므로, 각 단계에서 오류를 쉽게 발견할 수 있고 최종 답의 정확도도 높아집니다.

제로샷 CoT

예시를 제공하지 않고도 CoT를 유도할 수 있습니다. 가장 간단한 방법은 "단계별로 생각해 주세요(Let's think step by step)"라는 문구를 추가하는 것입니다.

text
다음 논리 문제를 풀어 주세요. 단계별로 생각해 주세요.
 
A는 B보다 키가 크고, C는 A보다 키가 큽니다.
D는 B보다 키가 작습니다.
키가 가장 큰 사람부터 순서대로 나열하세요.

이 간단한 문구 하나로 모델은 각 관계를 정리하고, 논리적 순서를 도출하는 과정을 명시적으로 수행합니다.

퓨샷 CoT

더 복잡한 작업에서는 추론 과정의 예시를 함께 제공합니다.

text
Q: 회사에 5명의 직원이 있고, 각각 프로젝트 A, B, C 중 하나에 배정됩니다.
프로젝트 A에는 최소 2명, 프로젝트 B에는 최소 1명이 필요합니다.
가능한 배정 방법은 몇 가지입니까?
 
A: 단계별로 풀어 보겠습니다.
1단계: 전체 인원과 제약 조건을 정리합니다.
   - 총 5명, 프로젝트 3개 (A, B, C)
   - A >= 2명, B >= 1명, C >= 0명
2단계: 가능한 (A, B, C) 인원 조합을 나열합니다.
   - (2, 1, 2), (2, 2, 1), (2, 3, 0)
   - (3, 1, 1), (3, 2, 0)
   - (4, 1, 0)
   - (5, 0, 0)은 B >= 1 위반으로 불가
3단계: 각 조합에 대해 배정 방법의 수를 계산합니다.
   - (2,1,2): C(5,2) x C(3,1) x C(2,2) = 10 x 3 x 1 = 30
   - (2,2,1): C(5,2) x C(3,2) x C(1,1) = 10 x 3 x 1 = 30
   - (2,3,0): C(5,2) x C(3,3) = 10 x 1 = 10
   - (3,1,1): C(5,3) x C(2,1) x C(1,1) = 10 x 2 x 1 = 20
   - (3,2,0): C(5,3) x C(2,2) = 10 x 1 = 10
   - (4,1,0): C(5,4) x C(1,1) = 5 x 1 = 5
4단계: 전체 합산 = 30 + 30 + 10 + 20 + 10 + 5 = 105
 
답: 105가지
 
Q: [새로운 문제]
A:

CoT의 변형 기법

자기 일관성(Self-Consistency)

자기 일관성은 CoT의 확장 기법으로, 동일한 문제에 대해 여러 번의 추론 경로를 생성한 후 가장 빈번하게 등장하는 답을 최종 답으로 선택합니다. 이것은 다수결(majority voting)의 원리와 유사합니다.

프로그래밍으로 구현하면 다음과 같습니다.

python
import anthropic
from collections import Counter
 
client = anthropic.Anthropic()
 
def self_consistency(prompt, n_samples=5, temperature=0.7):
    """자기 일관성 기법으로 가장 신뢰할 수 있는 답을 선택합니다."""
    answers = []
    
    for _ in range(n_samples):
        response = client.messages.create(
            model="claude-sonnet-4-5-20250514",
            max_tokens=1024,
            temperature=temperature,
            messages=[{"role": "user", "content": prompt}]
        )
        # 답에서 최종 결론 추출
        answer = extract_final_answer(response.content[0].text)
        answers.append(answer)
    
    # 다수결로 최종 답 선택
    counter = Counter(answers)
    best_answer, count = counter.most_common(1)[0]
    confidence = count / n_samples
    
    return {
        "answer": best_answer,
        "confidence": confidence,
        "all_answers": answers
    }
 
def extract_final_answer(text):
    """응답에서 최종 답을 추출하는 로직"""
    lines = text.strip().split("\n")
    for line in reversed(lines):
        if line.strip().startswith("답:"):
            return line.strip()
    return lines[-1].strip()
Warning

자기 일관성 기법은 API 호출 횟수가 늘어나므로 비용이 증가합니다. 높은 정확도가 비즈니스 가치에 직접적인 영향을 미치는 경우에 선별적으로 적용하는 것이 좋습니다.

단계별 검증(Step-by-Step Verification)

모델에게 자신의 추론 과정을 검증하도록 요청하는 기법입니다.

text
다음 문제를 풀고, 풀이가 끝나면 각 단계를 역으로 검증하세요.
 
문제: 어떤 수에 3을 곱하고 7을 더한 결과가 22입니다.
그 수에 5를 곱하면 얼마입니까?
 
[풀이]
1단계: 방정식 세우기: 3x + 7 = 22
2단계: 3x = 22 - 7 = 15
3단계: x = 15 / 3 = 5
4단계: 5x = 5 x 5 = 25
 
[검증]
- 3단계 검증: x = 5일 때, 3 x 5 = 15 (맞음)
- 2단계 검증: 15 + 7 = 22 (맞음)
- 1단계 검증: 원래 조건 "3을 곱하고 7을 더한 결과가 22" 충족 (맞음)
 
최종 답: 25

분해 프롬프팅(Decomposition Prompting)

복잡한 문제를 더 작은 하위 문제로 분해하여 각각을 독립적으로 해결하는 방식입니다.

text
다음 질문에 답하기 위해 하위 질문으로 분해하세요.
 
질문: "한국에서 가장 인구가 많은 도시의 면적은 서울의 몇 배입니까?"
 
하위 질문 1: 한국에서 가장 인구가 많은 도시는 어디입니까?
답: 서울특별시입니다.
 
하위 질문 2: 그렇다면 질문은 "서울의 면적은 서울의 몇 배인가"가 됩니다.
답: 1배입니다. 같은 도시이기 때문입니다.
 
이 예시에서 보듯, 분해 과정에서 질문 자체의 모순이나 함정을 발견할 수 있습니다.

추론 모델과 CoT의 관계

2024년 이후 등장한 추론 모델(Reasoning Model)들은 CoT를 모델 내부에 내장하고 있습니다. OpenAI의 o-시리즈, Anthropic의 Claude Extended Thinking, Google의 Gemini Thinking Mode가 대표적입니다.

추론 모델에서의 CoT 활용 전략

Info

추론 모델을 사용할 때는 "단계별로 생각하세요"와 같은 명시적 CoT 지시를 생략하는 것이 좋습니다. 모델이 이미 내부적으로 추론을 수행하므로, 중복된 지시는 오히려 성능을 저하시킬 수 있습니다. 대신 원하는 결과의 형식과 제약 조건에 집중하세요.

모델 유형별 추천 전략

모델 유형CoT 전략예시
표준 모델 (Claude Sonnet, GPT-4o)명시적 CoT 지시 필수"단계별로 분석하세요"
추론 모델 (Claude Extended Thinking)CoT 지시 생략, 결과에 집중"최종 결과를 JSON으로 반환하세요"
소형 모델 (Haiku, GPT-4o mini)퓨샷 CoT 권장추론 과정 예시를 포함

CoT가 효과적인 작업 유형

CoT가 모든 작업에 도움이 되는 것은 아닙니다. 다음과 같은 유형에서 가장 큰 효과를 보입니다.

효과가 높은 작업

  • 수학적 추론: 다단계 계산, 방정식 풀이
  • 논리적 추론: 조건부 판단, 삼단논법
  • 코드 디버깅: 실행 흐름 추적, 오류 원인 분석
  • 복잡한 분류: 여러 기준을 동시에 고려하는 판단
  • 인과 관계 분석: 원인과 결과의 관계 파악

효과가 제한적인 작업

  • 단순 사실 검색: "프랑스의 수도는?"
  • 창작 글쓰기: 소설, 시 등 자유로운 생성
  • 번역: 이미 높은 정확도를 보이는 작업
  • 감성 분류: 직관적으로 판단 가능한 경우
text
# CoT가 필요한 경우
"서버 로그를 분석하여 장애 원인을 찾아 주세요. 
각 로그 항목의 타임스탬프를 기준으로 이벤트 순서를 정리하고,
정상 동작과 비교하여 이상 패턴을 식별하세요."
 
# CoT가 불필요한 경우
"다음 영어 문장을 한국어로 번역하세요: Hello, how are you?"

실전 적용: 코드 리뷰 프롬프트

CoT를 활용한 체계적인 코드 리뷰 프롬프트 예시입니다.

text
다음 코드를 리뷰하세요. 아래 단계를 순서대로 수행해 주세요.
 
1단계 - 코드 이해: 이 코드가 무엇을 하는지 한 문단으로 설명하세요.
2단계 - 정확성 검증: 로직의 정확성을 검토하고, 버그가 있다면 지적하세요.
3단계 - 성능 분석: 시간/공간 복잡도를 분석하고, 개선 가능한 부분을 찾으세요.
4단계 - 보안 검토: 잠재적 보안 취약점이 있는지 확인하세요.
5단계 - 종합 평가: 위 분석을 바탕으로 전체 평가와 우선순위별 개선 사항을 정리하세요.
 
<code>
def process_user_input(data):
    query = "SELECT * FROM users WHERE name = '" + data["name"] + "'"
    result = db.execute(query)
    return result
</code>

이렇게 단계를 명시하면 모델은 각 관점에서 체계적으로 코드를 분석하고, SQL 인젝션(SQL Injection) 취약점과 같은 중요한 문제를 놓치지 않습니다.

정리

이 장에서는 Chain-of-Thought 프롬프팅의 원리와 다양한 변형 기법을 다루었습니다.

  • CoT는 모델에게 중간 추론 과정을 명시적으로 생성하게 하여 복잡한 작업의 정확도를 높이는 기법입니다.
  • 제로샷 CoT("단계별로 생각해 주세요")만으로도 상당한 성능 향상을 얻을 수 있습니다.
  • 자기 일관성, 단계별 검증, 분해 프롬프팅 등 다양한 변형 기법이 있습니다.
  • 추론 모델에서는 명시적 CoT 지시를 생략하고 결과 형식에 집중하는 것이 효과적입니다.
  • CoT는 수학, 논리, 디버깅 등 복잡한 추론이 필요한 작업에서 가장 큰 효과를 보입니다.

다음 장에서는 역할 지정과 페르소나 설계를 다루겠습니다. 모델에게 특정 전문가의 역할을 부여하여 도메인에 특화된 고품질 응답을 이끌어내는 전략을 살펴보겠습니다.

이 글이 도움이 되셨나요?

관련 주제 더 보기

#llm#prompt-engineering#structured-output#training

관련 글

AI / ML

4장: 역할 지정과 페르소나 설계

LLM에게 전문가 역할을 부여하여 도메인 특화 응답을 이끌어내는 페르소나 설계의 원리와 실전 패턴을 체계적으로 다룹니다.

2026년 1월 18일·19분
AI / ML

2장: 제로샷과 퓨샷 프롬프팅

예시 없이 지시하는 제로샷부터 예시를 활용하는 퓨샷까지, 예시 기반 프롬프팅의 원리와 실전 활용 전략을 체계적으로 다룹니다.

2026년 1월 14일·21분
AI / ML

5장: 구조화된 입력 - XML, JSON, 마크다운 활용

프롬프트의 구조를 명확히 하는 XML, JSON, 마크다운 기반 입력 설계 기법과 모델별 최적 전략을 다룹니다.

2026년 1월 20일·18분
이전 글2장: 제로샷과 퓨샷 프롬프팅
다음 글4장: 역할 지정과 페르소나 설계

댓글

목차

약 18분 남음
  • Chain-of-Thought의 등장 배경
  • 기본 CoT 프롬프팅
    • 표준 프롬프팅 vs CoT 프롬프팅
    • 제로샷 CoT
    • 퓨샷 CoT
  • CoT의 변형 기법
    • 자기 일관성(Self-Consistency)
    • 단계별 검증(Step-by-Step Verification)
    • 분해 프롬프팅(Decomposition Prompting)
  • 추론 모델과 CoT의 관계
    • 추론 모델에서의 CoT 활용 전략
    • 모델 유형별 추천 전략
  • CoT가 효과적인 작업 유형
    • 효과가 높은 작업
    • 효과가 제한적인 작업
  • 실전 적용: 코드 리뷰 프롬프트
  • 정리