⚡ 중급2026-04-138분
사고 과정을 보이게 하는 Chain-of-Thought 프롬프트
"단계별로 생각해"는 낡았다. XML로 작업 단계를 구조화하면 정확도가 한 단계 더 오른다.
프롬프트reasoning
CoT이 먹히는 이유
수학, 논리, 다단계 의사결정에서 모델이 중간 단계를 출력하면 최종 답 정확도가 오른다. 이건 "추론할 계산량을 벌어주는" 효과다.
낡은 버전
Let's think step by step.
이건 GPT-3 시절 트릭이다. 최신 Claude엔 크게 안 먹힌다.
2026년식 CoT
다음 순서로 진행하라.
<reasoning>
1) 문제에서 주어진 정보를 추출
2) 가능한 접근법 2개 나열
3) 각 접근의 트레이드오프
4) 선택한 접근 이유
</reasoning>
<answer>
최종 답을 1~2문장으로
</answer>
실전 예: 고객 환불 판정
const system = `너는 환불 심사 담당자다.
모든 응답은 다음 구조를 따른다:
<analysis>
- 주문일로부터 경과일
- 사용 흔적 여부
- 환불 정책상 해당 조항
- 예외 사유 가능성
</analysis>
<verdict>
refund_full | refund_partial | reject
</verdict>
<reason>
고객에게 보낼 한 문단 설명
</reason>`
const msg = await client.messages.create({
model: "claude-sonnet-4-6",
system,
max_tokens: 1024,
messages: [{ role: "user", content: caseJson }],
})
// 파싱
const text = (msg.content[0] as any).text
const verdict = text.match(/<verdict>(.*?)<\/verdict>/s)?.[1].trim()
const reason = text.match(/<reason>(.*?)<\/reason>/s)?.[1].trim()
언제 CoT이 역효과인가
- 분류 작업: 오히려 흔들린다. 0-shot이 더 정확
- 길이 제약이 엄격: 사고 과정이 토큰을 먹는다
- 실시간 챗봇: 지연 증가. 사용자가 사고 과정을 보고 싶어할 때만
Extended Thinking (Opus 전용)
Opus 4.7은 내부 사고 토큰을 별도로 처리하는 thinking 파라미터를 지원한다. 이건 사고 과정이 응답에 찍히지 않고 정확도만 오른다.
await client.messages.create({
model: "claude-opus-4-7",
max_tokens: 4096,
thinking: { type: "enabled", budget_tokens: 8192 },
messages: [{ role: "user", content: hardMathProblem }],
})
체크리스트
- [ ] 작업이 다단계 추론인가
- [ ] XML로 섹션 나눴나
- [ ] 분류 작업엔 안 쓰고 있나
- [ ] Opus면 extended thinking 고려