Sonnet 5와 Opus 4.8의 차이를 알아보기 위해 24개 작업에서 모든 추론 강도로 맞대결을 펼쳐봤다
I ran Sonnet 5 vs Opus 4.8 head to head on 24 tasks at every reasoning effort to see what's actually different
핵심 요약
Sonnet 5와 Opus 4.8의 추론 강도별 성능과 행동 차이를 24개 작업으로 분석한 결과, 모델마다 적합한 작업 유형과 비용 효율성이 다름을 확인했다.
- 모델 비교 — Sonnet 5와 Opus 4.8의 추론 강도별 행동 패턴과 코드 품질 차이를 분석함.
- 작업 방식 — Sonnet은 추론 강도가 높을수록 검증과 확인에 집중하고, Opus는 더 단순하고 견고한 diff를 생성함.
- 비용 효율성 — 낮은 추론 강도에서는 Sonnet이, 높은 강도에서는 Opus가 비용 면에서 유리함.
- 권장 사항 — 일반적인 작업에는 Opus High를, 모호하거나 복잡한 작업에는 Sonnet XHigh 사용을 제안함.
Sonnet 5은 참 헷갈리는 모델이야. 5가 4.8보다 크긴 한데, Opus가 Sonnet보다 상위 모델이거든. 도대체 언제 Sonnet 5를 써야 할까? 이번 글에서는 오픈소스 저장소 두 곳에서 가져온 24개 작업을 가지고 Sonnet 5와 Opus 4.8을 직접 테스트해 봤어. 각 모델의 행동 차이를 분석해서 어떤 상황에 어떤 모델을 꺼내 써야 할지 정리해 줄게.
세 줄 요약: 이번 테스트에서 Sonnet은 추론 강도를 높일수록 검증을 더 꼼꼼하게 하고, 작업 과정이 길어지며, LLM 평가자가 보기에 더 명확하고 의도가 분명한 패치를 내놨어. 반면 Opus는 추론 강도를 높여도 작업 방식이 크게 변하지 않았고, 평가자는 Opus가 내놓은 더 단순하고 견고하며 군더더기 없는 수정안을 선호했지. 어느 쪽이 무조건 "더 낫다"고 할 순 없지만, 실패하는 지점과 작업 스타일은 확실히 달라.
핵심은 가격이랑 출력 토큰인데, 추론 강도에 따라 비용 차이가 엄청나. 낮은 강도에선 Sonnet이 Opus의 0.62배, 중간 강도에선 0.81배 수준이야. 높은 강도와 아주 높은 강도에선 거의 비슷하다가, 최대 강도로 가면 오히려 Sonnet이 Opus보다 1.37배 더 비싸져.
테스트 방식
오픈소스 저장소인 graphql-go-tools(Go)와 sqlparser-rs(Rust)에서 실제 PR로 머지된 작업 24개를 골랐어. Claude Code를 사용해서 Sonnet과 Opus 각각 5단계 추론 강도(low, medium, high, xhigh, max)로 모든 작업을 수행했지. GPT-5.4를 평가자로 써서 실제 머지된 코드와 얼마나 똑같은지, 그리고 8가지 품질 지표를 기준으로 점수를 매겼어. 비용은 캐시를 고려한 작업당 기하평균으로 계산했어.
품질의 트레이드오프
평가자는 모든 패치 쌍에 대해 명확성(clarity), 단순성(simplicity), 일관성(coherence), 의도성(intentionality), 견고성(robustness), 지시 이행(instruction adherence), 범위 준수(scope discipline), diff 최소화(diff minimality) 등 8가지 지표를 점수 매겼어.
대부분 점수 차이는 크지 않고, 이 8가지 지표는 서로 독립적이지도 않아. 이건 순위표라기보다는 모델의 '행동 지문'으로 보는 게 맞아. 중요한 건 거의 모든 설정에서 평가자가 일관된 경향성을 읽어냈다는 거야. Sonnet의 패치는 '명확하고 의도가 분명하다'는 평가를 자주 받았고, Opus는 '단순하고 견고하며 최소한의 수정'을 했다는 평가를 받았어. 이걸 통해 모델들이 어떻게 작업하는지 파악할 순 있지만, 어느 모델이 코딩을 더 잘한다고 단정 짓기는 어려워.
| Dimension | Lean |
|---|---|
| Clarity | Sonnet at all six comparison points |
| Intentionality | Sonnet at all six points |
| Diff minimality | Opus at all six points |
| Simplicity | Opus at every effort except xhigh; xhigh leans Sonnet 11 to 9 |
| Robustness | Opus at five of six; xhigh is near-even at 9 to 11 |
결국 더 작고 타겟팅된 패치를 원하면 Opus, 리뷰하기 편한 코드를 원하면 Sonnet을 쓰는 게 맞는 것 같아.
sqlparser #1472 작업에서 이 차이가 확 드러났어. 두 모델 다 dialect 스위치 2개를 추가했는데, Sonnet은 연산자를 지원하지 않는 모든 dialect를 나열하는 공통 부정 테스트를 하나 짰고, Opus는 Hive랑 Postgres 근처에만 테스트를 몰아넣었어. 평가자가 내린 평가가 코드에 그대로 반영된 거지. Sonnet은 전역 불변 조건을 한곳에 명확하게 박아놔서 의도가 분명해 보였고, Opus는 수정된 동작 바로 옆에 테스트를 둬서 더 단순하고 깔끔해 보였던 거야.

