⚡ 중급2026-04-158분
Haiku·Sonnet·Opus, 작업별로 어떻게 고르나
비용 5~25배 차이. 분류는 Haiku, 에이전트 루프는 Sonnet, 복잡 추론은 Opus — 의사결정 트리.
apicostmodel
가격/성능 맵 (2026-04 기준)
| 모델 | 입력 $/1M | 출력 $/1M | 컨텍스트 | 쓸 곳 | |------|----------|----------|---------|------| | Haiku 4.5 | $1 | $5 | 200k | 분류, 라우팅, 단순 추출 | | Sonnet 4.6 | $3 | $15 | 1M | 생성, 에이전트, 요약 | | Opus 4.7 | $5 | $25 | 1M | 복잡 추론, 연구, 검수 |
의사결정 트리
작업을 사람 기준으로 판단하자.
입력 Q: 이 작업을 주니어가 1분 안에 끝낼 수 있나?
├─ 예 → Haiku 4.5
└─ 아니오
└─ Q: 시니어가 30분 정도면 가능한가?
├─ 예 → Sonnet 4.6
└─ 아니오 → Opus 4.7
패턴별 추천
✅ Haiku 4.5
- 고객 문의 intent 분류
- 스팸/욕설 필터링
- 짧은 답변 (100토큰 이하)
- 구조화된 데이터 추출
- 대량 배치 전처리
✅ Sonnet 4.6
- 블로그 초안 생성
- 에이전트 메인 루프
- 문서 요약
- 코드 리뷰
- 일반 챗봇
✅ Opus 4.7
- 복잡한 코드베이스 분석
- 법률/의료 문서 해석
- 다단계 추론이 필요한 의사결정
- Sonnet 결과의 검증자 역할
라우팅 패턴 (비용 절감)
async function smartRoute(query: string) {
// 1단계: Haiku로 복잡도 판단
const triage = await client.messages.create({
model: "claude-haiku-4-5",
max_tokens: 20,
messages: [{
role: "user",
content: `다음 질문의 난이도를 easy/medium/hard 중 하나로만 답해: ${query}`,
}],
})
const level = (triage.content[0] as any).text.trim().toLowerCase()
const model =
level === "easy" ? "claude-haiku-4-5" :
level === "hard" ? "claude-opus-4-7" :
"claude-sonnet-4-6"
return client.messages.create({
model,
max_tokens: 2048,
messages: [{ role: "user", content: query }],
})
}
실측 결과: 평균 비용이 Sonnet 단독 대비 40~60% 절감.
흔한 실수
- 전부 Opus 박기 → 비용 폭발
- 전부 Haiku로 처리 → 복잡 작업에서 품질 저하
- 같은 작업 내에서 모델 섞기 → 결과 일관성 깨짐
체크리스트
- [ ] 주요 엔드포인트별로 모델 고정
- [ ] 복잡도 라우팅 고려해봤나
- [ ] Opus는 진짜 필요한 작업에만
- [ ] 월별 비용 모델별로 분리 집계