⚡ 중급2026-05-056분
AI가 틀린 답을 낼 때 고치는 CoT 프롬프트 기법
Chain-of-Thought 프롬프팅으로 Claude가 추론 과정을 단계별로 펼치게 만들어 복잡한 문제에서 정확도를 크게 높이는 방법을 다룹니다.
prompt-engineeringchain-of-thoughtfew-shot
왜 CoT가 필요한가?
단순히 '답을 알려줘'라고 하면 Claude는 최단 경로로 응답하려다 논리를 건너뜁니다. 수학 계산, 다단계 판단, 코드 버그 분석처럼 중간 추론이 중요한 작업에서는 오답률이 높아집니다. CoT는 모델이 스스로 '생각의 흔적'을 남기도록 강제해 최종 답의 신뢰도를 끌어올립니다.
Few-shot CoT vs Zero-shot CoT
Zero-shot CoT — 프롬프트 끝에 "단계별로 생각해 보세요."만 붙여도 효과가 있습니다.
Few-shot CoT — 예시(shot)를 직접 넣어 형식과 추론 깊이를 제어합니다. 아래는 Anthropic TypeScript SDK 예시입니다.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const FEW_SHOT_EXAMPLES = `
Q: 창고에 박스가 12개 있습니다. 오전에 3개를 꺼내고 오후에 5개를 추가했습니다. 지금 몇 개인가요?
A: 단계별 풀이:
1. 시작: 12개
2. 오전에 3개 제거: 12 - 3 = 9개
3. 오후에 5개 추가: 9 + 5 = 14개
결론: 14개
`;
async function solveWithCoT(userQuestion: string): Promise<string> {
const response = await client.messages.create({
model: "claude-haiku-4-5",
max_tokens: 1024,
messages: [
{
role: "user",
content: `다음 예시처럼 단계별로 풀어주세요.\n\n예시:\n${FEW_SHOT_EXAMPLES}\n\nQ: ${userQuestion}\nA:`,
},
],
});
const content = response.content[0];
return content.type === "text" ? content.text : "";
}
// 사용 예시
const answer = await solveWithCoT(
"팀원이 7명입니다. 각자 하루 8시간 일하면 5일 동안 총 몇 시간인가요?"
);
console.log(answer);
실전 적용 패턴
역할 + CoT 조합이 가장 강력합니다. 시스템 프롬프트에 역할을 지정하고 유저 메시지에 CoT를 요청하면 도메인 특화된 추론을 얻을 수 있습니다.
System: 당신은 시니어 소프트웨어 아키텍트입니다.
User: 이 설계의 문제점을 단계별로 분석해 주세요. 먼저 가정을 나열하고, 각 가정의 위험을 평가한 뒤 결론을 내리세요.
토큰 비용 주의: CoT는 출력 토큰을 2~4배 늘립니다. 빠른 응답이 중요한 챗봇 UX에는 claude-haiku-4-5로, 정확도가 핵심인 배치 처리에는 claude-sonnet-4-6으로 모델을 분리하세요.
체크리스트
- [ ] 단순 Q&A에 CoT를 남용하지 않는다 (불필요한 토큰 낭비)
- [ ] Few-shot 예시는 실제 도메인 데이터로 작성한다
- [ ] 응답에 추론 과정이 포함됐는지 파싱해 로깅한다
- [ ] 정확도 개선 여부를 A/B 테스트로 수치화한다
- [ ] 고비용 작업엔 Sonnet, 저비용 작업엔 Haiku로 분기한다