k
korAI
중급 전체
중급2026-07-297분

Claude가 틀린 답을 낼 때: Chain-of-Thought로 추론 과정을 강제하는 법

복잡한 계산이나 다단계 논리 문제에서 Claude가 엉뚱한 답을 내놓는다면, CoT 프롬프트로 '생각하는 과정'을 먼저 출력하게 만들면 정확도가 극적으로 올라간다.

prompt-engineeringchain-of-thoughtreasoning

왜 Claude는 가끔 틀린 답을 낼까?

언어 모델은 통계적으로 '그럴싸한 다음 토큰'을 예측합니다. 단답형으로 묻는 순간, 모델은 추론 과정을 건너뛰고 바로 결론처럼 보이는 토큰을 출력하려 합니다. 이것이 복잡한 문제에서 오답이 나오는 핵심 원인입니다.

Chain-of-Thought(CoT) 는 모델이 최종 답 전에 중간 추론 단계를 명시적으로 서술하도록 유도하는 기법입니다.


Few-shot CoT vs Zero-shot CoT

| 방식 | 프롬프트 예시 | 특징 | |---|---|---| | Zero-shot CoT | "단계별로 생각해 보세요." | 빠르게 적용 가능 | | Few-shot CoT | 예제 풀이 2~3개를 직접 삽입 | 정확도 높음, 토큰 비용 증가 |

실무에서는 Zero-shot CoT를 먼저 시도하고, 여전히 오답이 나오면 Few-shot 예제를 추가하는 순서로 접근하세요.


Anthropic SDK로 CoT 구현하기

아래 예시는 복잡한 조건부 할인 계산을 CoT로 해결합니다. claude-sonnet-4-6을 사용해 추론 품질을 높이고, 응답을 <reasoning><answer> 태그로 구조화합니다.

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

async function solveWithCoT(problem: string): Promise<void> {
  const systemPrompt = `당신은 단계별 추론 전문가입니다.
반드시 다음 형식으로 답하세요:

<reasoning>
[문제를 분해하고 각 단계를 명시적으로 계산]
</reasoning>

<answer>
[최종 답만 간결하게]
</answer>`;

  const response = await client.messages.create({
    model: "claude-sonnet-4-6",
    max_tokens: 1024,
    system: systemPrompt,
    messages: [
      {
        role: "user",
        content: problem,
      },
    ],
  });

  const content = response.content[0];
  if (content.type === "text") {
    // reasoning과 answer 파싱
    const reasoningMatch = content.text.match(
      /<reasoning>([\s\S]*?)<\/reasoning>/
    );
    const answerMatch = content.text.match(/<answer>([\s\S]*?)<\/answer>/);

    if (reasoningMatch) {
      console.log("📊 추론 과정:\n", reasoningMatch[1].trim());
    }
    if (answerMatch) {
      console.log("\n✅ 최종 답:\n", answerMatch[1].trim());
    }
  }
}

// 실행 예시
const problem = `
상품 A는 정가 85,000원이고, 회원은 15% 할인을 받습니다.
오늘은 추가로 전체 금액의 5%를 더 할인해주는 이벤트가 있습니다.
회원이 상품 A를 3개 구매하면 총 결제 금액은 얼마인가요?
`;

solveWithCoT(problem);

실행 결과 예시:

📊 추론 과정:
 1. 정가: 85,000원
 2. 회원 15% 할인 적용: 85,000 × 0.85 = 72,250원
 3. 이벤트 5% 추가 할인: 72,250 × 0.95 = 68,637.5원 → 68,638원
 4. 3개 구매: 68,638 × 3 = 205,914원

✅ 최종 답:
 205,914원

실전 적용 체크리스트

  • [ ] 단순 질문엔 CoT를 쓰지 않는다 (토큰 낭비)
  • [ ] "단계별로 생각하세요" 한 문장만 추가해도 Zero-shot CoT 효과를 얻는다
  • [ ] XML 태그(<reasoning>, <answer>)로 구조화하면 파싱이 쉬워진다
  • [ ] 오답이 반복되면 Few-shot 예제를 1~2개 추가한다
  • [ ] claude-sonnet-4-6처럼 추론 능력이 높은 모델을 선택한다
  • [ ] 추론 과정도 로그로 저장해 디버깅에 활용한다