⚡ 중급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 비교해 봤는가?
- [ ] 모델이 풀이를 생략하고 바로 답만 내놓는 경우, 프롬프트 끝을
"풀이:"로 끊어서 유도하고 있는가?