k
korAI
중급 전체
중급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는 진짜 필요한 작업에만
  • [ ] 월별 비용 모델별로 분리 집계