k
korAI
중급 전체
⚡ 중급2026-09-266분

AI가 틀린 답을 낼 때 — Chain-of-Thought로 추론 과정을 강제하라

복잡한 문제에서 Claude가 엉뚱한 답을 내놓는다면, CoT 프롬프트로 '생각 단계'를 명시적으로 요구해 정확도를 크게 높일 수 있습니다.

prompt-engineeringchain-of-thoughtfew-shot

왜 CoT가 필요한가?

단순 질문·답변 방식에서는 모델이 중간 추론을 건너뛰어 직관적으로 틀린 결론에 도달하기 쉽습니다. Chain-of-Thought(CoT)는 '단계적으로 생각한 뒤 답하라' 는 지시를 프롬프트에 삽입해, 모델이 중간 논리를 명시적으로 생성하도록 유도합니다. 수학 계산, 법적 판단, 다단계 디버깅처럼 논리 흐름이 중요한 작업에서 특히 효과적입니다.

Few-shot CoT 구현 예시 (TypeScript)

아래는 Anthropic SDK로 few-shot CoT를 적용하는 최소 예제입니다.

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

const client = new Anthropic();

const FEW_SHOT_EXAMPLES = `
Q: 상자 3개가 있고 각 상자에 사과 7개가 들어 있습니다. 사과 10개를 먹었다면 남은 사과는?
단계별 풀이:
1. 전체 사과 = 3 × 7 = 21개
2. 먹은 사과 = 10개
3. 남은 사과 = 21 - 10 = 11개
답: 11개

Q: 직원 5명이 하루 8시간 일해 프로젝트를 4일 만에 끝냈습니다. 총 투입 시간은?
단계별 풀이:
1. 하루 투입 시간 = 5명 × 8시간 = 40시간
2. 총 투입 시간 = 40시간 × 4일 = 160시간
답: 160시간
`;

async function solveWithCoT(question: string): Promise<string> {
  const response = await client.messages.create({
    model: "claude-haiku-4-5",
    max_tokens: 1024,
    messages: [
      {
        role: "user",
        content: `${FEW_SHOT_EXAMPLES}\nQ: ${question}\n단계별 풀이:`,
      },
    ],
    system:
      "당신은 수학·논리 문제를 단계별로 풀어주는 전문가입니다. 반드시 풀이 과정을 먼저 쓴 뒤 최종 답을 제시하세요.",
  });

  const block = response.content[0];
  return block.type === "text" ? block.text : "";
}

// 실행 예시
const answer = await solveWithCoT(
  "팀원 4명이 각각 하루 6시간씩 일해 과제를 3일 만에 완료했습니다. 총 투입 시간은?"
);
console.log(answer);

CoT 변형 패턴 비교

| 패턴 | 프롬프트 핵심 문구 | 적합한 상황 | |---|---|---| | Zero-shot CoT | "단계적으로 생각하세요" | 빠른 프로토타입 | | Few-shot CoT | 예시 2~3개 포함 | 형식 일관성이 중요할 때 | | Self-consistency | 동일 질문을 N회 실행 후 다수결 | 높은 정확도가 필요할 때 | | Step-back CoT | "먼저 관련 원칙을 나열하라" | 전문 도메인 추론 |

모델 선택 팁: 빠른 반복 테스트는 claude-haiku-4-5, 복잡한 다단계 추론은 claude-sonnet-4-6을 사용하세요.

체크리스트

  • [ ] 프롬프트에 "단계별로", "순서대로 생각한 뒤" 등 CoT 트리거 문구를 추가했는가?
  • [ ] Few-shot 예시가 실제 풀이 구조와 동일한 포맷인가?
  • [ ] system 프롬프트에서 최종 답을 마지막에 쓰도록 명시했는가?
  • [ ] Zero-shot CoT와 Few-shot CoT 결과를 A/B 비교해 봤는가?
  • [ ] 모델이 풀이를 생략하고 바로 답만 내놓는 경우, 프롬프트 끝을 "풀이:" 로 끊어서 유도하고 있는가?