⚡ 중급2026-05-046분
Claude가 '왜 그렇게 생각했는지' 보여주게 만드는 CoT 프롬프트
Chain-of-Thought 기법으로 Claude에게 단계별 추론을 강제하면 복잡한 문제의 정확도가 크게 올라갑니다. Few-shot 예시와 역할 지정을 결합하면 효과가 배가됩니다.
prompt-engineeringchain-of-thoughtfew-shot
왜 CoT가 필요한가?
단순히 "답을 알려줘"라고 하면 Claude는 중간 추론을 생략하고 결론만 내놓습니다. 수학 계산, 법률 해석, 디버깅처럼 중간 과정이 틀리면 결과도 틀리는 작업에서 CoT는 필수입니다.
- 모델이 스스로 오류를 잡을 기회를 줌
- 사용자가 추론 과정을 검증할 수 있음
- 복잡한 멀티스텝 문제에서 정확도 향상
Few-shot + 역할 지정 + CoT 조합 예시
아래 코드는 세 기법을 하나의 프롬프트에 결합한 TypeScript 예시입니다.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const FEW_SHOT_EXAMPLES = `
예시 1)
문제: 사과 3개를 4명이 나누면 한 명당 몇 개?
풀이:
1단계 - 총 사과 수: 3개
2단계 - 나누는 인원: 4명
3단계 - 계산: 3 ÷ 4 = 0.75개
답: 한 명당 0.75개 (3/4개)
예시 2)
문제: 시속 60km로 2.5시간 달리면 몇 km?
풀이:
1단계 - 속도: 60km/h
2단계 - 시간: 2.5시간
3단계 - 계산: 60 × 2.5 = 150km
답: 150km
`;
async function solveWithCoT(problem: string): Promise<void> {
const response = await client.messages.create({
model: "claude-haiku-4-5",
max_tokens: 1024,
system: `당신은 수학 문제 전문 튜터입니다.
반드시 위 예시처럼 '1단계, 2단계...' 형식으로 풀이 과정을 보여준 후 최종 답을 제시하세요.
절대 과정을 생략하지 마세요.`,
messages: [
{
role: "user",
content: `${FEW_SHOT_EXAMPLES}\n\n이제 풀어주세요:\n문제: ${problem}`,
},
],
});
const answer = response.content[0];
if (answer.type === "text") {
console.log("=== CoT 풀이 결과 ===");
console.log(answer.text);
console.log(`\n토큰 사용: ${response.usage.input_tokens} in / ${response.usage.output_tokens} out`);
}
}
// 실행
solveWithCoT("할인율 15%가 적용된 상품의 원가가 85,000원이라면 정가는 얼마인가?");
실전 적용 팁
역할 지정 강도 조절하기
- 약한 역할:
"당신은 도움이 되는 AI입니다" - 강한 역할:
"당신은 20년 경력의 수석 회계사로, 모든 수치 판단에 반드시 법적 근거 조항을 인용합니다"
역할이 구체적일수록 모델은 해당 페르소나에 맞는 추론 패턴을 강하게 따릅니다.
Few-shot 예시 품질 체크리스트
- [ ] 예시가 실제 원하는 출력 형식과 100% 일치하는가?
- [ ] 예시 2~5개 사이로 유지했는가? (너무 많으면 토큰 낭비)
- [ ] 엣지 케이스를 포함하는 예시가 하나 이상 있는가?
- [ ] System 프롬프트와 Few-shot 예시가 서로 모순되지 않는가?
- [ ] CoT 단계 표현이 일관된 포맷(번호, 키워드)을 쓰는가?