AI 코딩에서 Sonnet vs Opus, 어떤 모델을 선택할까?
Claude Code의 두 모델을 성능, 속도, 비용과 작업 난이도로 비교
Claude Code에서 Sonnet과 Opus 중 어떤 모델을 써야 할지 비교합니다. Sonnet 5.5와 Opus 5.5의 성능 방향, 응답 속도, API 요금, 컨텍스트 크기, 모델 전환 방법, 작업별 선택 기준과 혼합 사용 전략을 설명합니다.

목차
- 먼저 결론: Sonnet으로 시작하고, 이럴 때 Opus로 바꿉니다
- Sonnet과 Opus는 어떤 모델일까?
- 2026년 10월 기준 주요 사양
- Sonnet이 적합한 작업
- Opus를 고려할 만한 작업
- 코딩 성능은 Opus가 무조건 더 좋을까?
- 응답 속도는 어떻게 다른가?
- API 비용은 얼마나 차이 날까?
- Claude 구독과 API 요금은 구분해야 합니다
- Claude Code에서 모델 바꾸는 방법
- 매번 모델을 직접 바꿔야 할까?
- 설계는 Opus, 구현은 Sonnet으로 나누기
- 작업 상황별로 모델을 고르는 예
- 테스트 작성과 실행은 나눠 생각해야 합니다
- 모델을 바꿔도 같은 오류가 반복되는 이유
- 노력 수준도 결과를 바꿉니다
- 모델 성능을 직접 비교하는 방법
- 프로젝트 크기가 크면 Opus가 유리할까?
- 여러 에이전트에 역할을 나눌 때
- 마무리 정리
Claude Code로 개발 작업을 하다 보면 모델을 선택해야 하는 상황이 생깁니다. 일반적인 코드 수정에는 Sonnet을 사용할 수 있고, 복잡한 문제를 조사할 때는 Opus를 고려할 수 있습니다.
처음에는 Opus가 더 비싼 모델이니 모든 작업에 사용하는 편이 좋다고 생각하기 쉽습니다. 그러나 실제 개발에서는 성능뿐 아니라 응답 속도, 비용, 작업의 반복 횟수, 검증에 걸리는 시간도 중요합니다.
간단한 문구 수정이나 이미 정해진 패턴의 코드 작성에 복잡한 추론 모델을 계속 사용하는 것이 반드시 효율적인 것은 아닙니다. 반대로 원인을 알 수 없는 장애나 여러 모듈에 걸친 구조 변경을 단순 작업과 같은 방식으로 맡기면 수정 방향을 잘못 잡아 반복 작업이 늘어날 수 있습니다.
2026년 10월 24일 기준 Anthropic의 최신 Sonnet과 Opus는 각각 Sonnet 5.5와 Opus 5.5입니다. 두 모델은 모두 코딩에 사용할 수 있지만 강조하는 강점이 다릅니다. 어떤 모델이 무조건 좋다는 결론보다 현재 맡길 작업에 어떤 모델이 적합한지 판단하는 것이 중요합니다.
먼저 결론: Sonnet으로 시작하고, 이럴 때 Opus로 바꿉니다
요구사항과 확인 방법이 분명한 작업은 Sonnet으로 시작하고, 원인이나 설계가 정해지지 않은 작업은 Opus를 고려합니다. 아래 표는 선택의 출발점이며 절대적인 규칙이 아닙니다.
| 작업 상황 | 먼저 고려할 모델 | 판단 이유 |
|---|---|---|
| 화면 문구와 스타일 변경 | Sonnet | 요구사항과 확인 방법이 명확함 |
| 반복적인 테스트 보강 | Sonnet | 기존 규칙과 패턴을 따르기 쉬움 |
| 범위가 정해진 작은 기능 추가 | Sonnet | 빠른 수정과 검증 반복이 중요함 |
| 여러 모듈에 걸친 설계 | Opus | 관계 분석과 대안 비교가 필요함 |
| 원인 불명의 복잡한 장애 | Opus | 여러 가설을 검토해야 함 |
| 실패 경로와 보안 중심 심층 검토 | Opus | 깊은 분석이 도움이 될 수 있음 |
| 설계 후 반복 구현 | Opus와 Sonnet | 계획과 실행을 분리할 수 있음 |
Sonnet으로 하던 작업을 Opus로 바꿔 볼 만한 신호는 다음과 같습니다.
- 같은 증상을 두 번 수정했는데 같은 오류가 다시 나타납니다.
- 원인으로 의심되는 곳이 서너 군데이고 로그만으로는 좁혀지지 않습니다.
- 수정하려면 데이터 구조나 권한 방식 같은 설계 결정을 먼저 해야 합니다.
- 인증, 결제, 데이터 삭제처럼 실패했을 때 영향이 큰 변경을 검토해야 합니다.
Claude Code의 기본 모델은 Opus 5.5라서 Sonnet으로 시작하려면 직접 바꿔야 합니다(방법은 아래 “Claude Code에서 모델 바꾸는 방법”).
반대로 Opus로 계획을 세운 뒤 변경할 파일과 완료 조건이 정해졌다면 구현은 Sonnet으로 돌려도 됩니다. 단, 모델을 바꾸기 전에 요구사항이 정확한지와 실행 환경이 정상인지부터 확인해야 합니다. 그 이유는 뒤의 “모델을 바꿔도 같은 오류가 반복되는 이유”에서 설명합니다.
Sonnet과 Opus는 어떤 모델일까?
Claude는 Anthropic이 개발한 AI 모델 제품군입니다. 같은 Claude라는 이름을 사용하더라도 모델마다 목표로 하는 성능과 비용, 속도에 차이가 있습니다.
Sonnet 5.5는 속도와 지능의 조합을 내세우는 모델입니다. Claude Code에서 일상적인 코딩에 쓰는 모델입니다. Opus 5.5는 장시간 이어지는 에이전트 코딩과 지식 작업을 위한 모델입니다. 여러 파일에 걸친 변경, 복잡한 문제 해결, 오랜 시간 진행하는 개발 작업에서 고려할 수 있습니다.
다만 Opus가 코드를 항상 더 정확하게 작성하고 Sonnet은 간단한 작업만 할 수 있다는 뜻은 아닙니다. Sonnet으로도 복잡한 기능을 구현할 수 있고, Opus로도 간단한 문구 하나를 수정할 수 있습니다. 두 모델의 차이는 특정 작업에서 필요한 추론, 시간과 비용을 어떻게 배분할 것인지에 있습니다.
또한 비교 대상이 되는 버전을 명확히 해야 합니다. 몇 달 전 Sonnet과 Opus를 비교한 결과가 최신 모델에도 동일하게 적용된다고 볼 수는 없습니다.
2026년 10월 기준 주요 사양
두 모델의 주요 사양은 다음과 같습니다.
| 구분 | Sonnet 5.5 | Opus 5.5 |
|---|---|---|
| 출시일 | 2026년 9월 28일 | 2026년 9월 22일 |
| 주요 방향 | 속도와 지능의 조합 | 장시간 에이전트 코딩과 지식 작업 |
| 상대 지연 수준 | Fast | Moderate |
| 컨텍스트 윈도우 | 100만 토큰 | 100만 토큰 |
| 동기 요청 최대 출력 | 12만 8천 토큰 | 12만 8천 토큰 |
| API 입력 요금 | 100만 토큰당 $2 | 100만 토큰당 $4 |
| API 출력 요금 | 100만 토큰당 $10 | 100만 토큰당 $20 |
| 사고 방식 | 적응형 사고 | 적응형 사고(항상 켜짐) |
| API 기본 노력 수준 | high | medium |
| Claude Code 별칭 | sonnet | opus |
두 모델은 컨텍스트 크기가 같습니다. 따라서 “Opus는 Sonnet보다 더 긴 코드를 읽을 수 있다”는 구분은 현재 사양에 맞지 않습니다.
중요한 차이 중 하나는 API 단가입니다. 기본 입력과 출력 단가는 Opus 5.5가 Sonnet 5.5의 두 배입니다. 하지만 실제 작업 하나를 끝내는 총비용이 언제나 정확히 두 배가 되는 것은 아닙니다. 모델마다 사용하는 토큰 수와 반복 수정 횟수가 다를 수 있기 때문입니다.
Sonnet이 적합한 작업
Sonnet은 비교적 명확한 요구사항을 빠르게 구현해야 하는 작업에서 먼저 고려할 수 있습니다. 예를 들어 버튼 위치 변경, 화면 문구 수정, 이미 있는 컴포넌트에 새로운 옵션 추가, 정해진 규칙에 맞춘 코드 작성 등이 있습니다.
이런 작업은 해야 할 일이 비교적 분명합니다. “설정 화면의 저장 버튼을 하단에 배치하고, 기존 클릭 동작은 그대로 유지해 줘”처럼 변경 대상과 완료 조건이 명확하다면 복잡한 추론에 많은 시간을 쓰지 않아도 됩니다. 단순한 테스트 추가나 문서 갱신, 반복적인 코드 정리도 Sonnet으로 먼저 시도할 수 있는 작업입니다.
다만 요구사항이 짧다고 항상 쉬운 작업은 아닙니다. 버튼 하나를 고치는 작업이라도 여러 화면에서 같은 컴포넌트를 사용하고 있다면 예상하지 못한 영향이 생길 수 있습니다. 변경 범위와 연관된 코드를 확인해야 합니다.
따라서 모델을 고를 때는 요청 문장의 길이보다 실제 코드 구조와 실패했을 때의 영향을 봐야 합니다.

Opus를 고려할 만한 작업
Opus는 여러 원인과 해결 방안을 비교해야 하는 작업에서 고려할 수 있습니다.
예를 들어 특정 상황에서만 발생하는 로그인 오류가 있다고 가정해 보겠습니다. 문제는 프런트엔드 상태 관리, API 요청, 서버 인증 처리, 데이터베이스 세션, 네트워크 연결 가운데 여러 곳에 있을 수 있습니다. 이때 오류 메시지만 보고 파일 하나를 수정하면 증상이 사라지는 것처럼 보여도 근본 원인은 남을 수 있습니다.
복잡한 장애에서는 가능한 원인을 나누어 조사하고, 각 가설이 맞는지 검증하며, 변경 범위를 최소화하는 계획이 필요합니다. 장기간 진행하는 코드 구조 변경이나 여러 모듈의 관계를 분석하는 작업도 비슷합니다.
다만 모델 선택만으로 원인 분석의 정확성이 보장되지는 않습니다. 어떤 모델을 사용하든 실제 코드와 로그, 테스트 결과로 결론을 뒷받침해야 합니다.
코딩 성능은 Opus가 무조건 더 좋을까?
두 모델 사이의 성능 차이는 하나의 숫자로 정리하기 어렵습니다. 실제 개발 작업에는 여러 유형이 있기 때문입니다. 새로운 함수를 작성하는 일, 기존 프로젝트에서 오류를 찾는 일, 복잡한 데이터 흐름을 이해하는 일, 테스트를 실행하고 실패를 분석하는 일은 필요한 능력이 다릅니다.
모델이 어떤 벤치마크에서 높은 점수를 받았더라도 사용 중인 프로젝트의 특정 작업에서 반드시 같은 결과가 나온다고 볼 수는 없습니다.
또한 AI 개발 도구의 성능은 모델만으로 결정되지 않습니다. 프로젝트 파일을 얼마나 정확하게 찾아 읽는지, 필요한 명령을 실행할 수 있는지, 테스트 환경이 준비되어 있는지, 작업이 끝날 때까지 충분한 정보를 유지하는지에 영향을 받습니다. 빌드 환경이 깨져 있는 상태라면 더 강력한 모델을 사용해도 빌드가 성공하지 않을 수 있습니다.
따라서 성능을 평가하려면 실제 개발 작업으로 비교해야 합니다. 공개된 평가 결과는 참고자료이고, 내 프로젝트에서의 결과는 별도로 확인해야 합니다.
응답 속도는 어떻게 다른가?
상대 지연 수준은 Sonnet 5.5가 Fast, Opus 5.5가 Moderate로 구분됩니다. 실제 지연은 프롬프트 길이, 출력 길이, 사고 노력 수준에 따라 달라집니다.
같은 유형의 작업을 반복적으로 주고받는 환경에서는 Sonnet의 속도 특성이 유리할 수 있습니다. 화면 색상, 여백, 버튼 문구를 여러 차례 수정하는 작업이라면 요청과 결과 확인을 반복해야 합니다. 이때는 한 번의 응답에서 조금 더 많은 추론을 하는 것보다 빠르게 수정하고 직접 결과를 확인하는 방식이 적합할 수 있습니다.
반대로 복잡한 문제에서는 한 번의 응답 속도가 빠르더라도 잘못된 방향으로 여러 번 수정한다면 전체 작업 시간이 길어질 수 있습니다. 요청 한 번의 시간과 기능 하나를 완성하는 시간은 다릅니다.
성능과 속도를 비교하려면 같은 과제를 여러 번 수행하면서 걸린 시간과 실제 통과한 테스트를 함께 확인해야 합니다.
API 비용은 얼마나 차이 날까?
Claude API는 사용하는 모델과 토큰 수에 따라 요금이 발생합니다. Sonnet 5.5의 기본 단가는 입력 100만 토큰당 $2, 출력 100만 토큰당 $10입니다. Opus 5.5는 입력 100만 토큰당 $4, 출력 100만 토큰당 $20입니다.
입력은 모델에 전달하는 요청과 필요한 맥락을 포함하며, 출력은 모델이 생성하는 응답에 해당합니다.
코딩에서는 모델이 소스 파일을 읽고, 수정하고, 다시 테스트 결과를 확인하면서 여러 번 요청이 이어질 수 있습니다. 처음 입력한 문장이 짧아도 전체 작업에서 소비하는 입력 토큰은 많을 수 있습니다.
프롬프트 캐싱을 사용하면 새로운 입력과 캐시 읽기의 요금이 다르게 적용됩니다. 캐시 읽기는 Sonnet 5.5가 100만 토큰당 $0.10, Opus 5.5가 $0.20이고, Batch API는 입력과 출력에 50% 할인이 적용됩니다. 기본 단가표만으로 모든 실행 비용을 계산할 수 없는 이유입니다.
비용을 비교하려면 모델별 토큰 사용량뿐 아니라 같은 작업을 완료하는 데 필요한 반복 요청까지 확인해야 합니다.
가정을 하나 세워 계산해 보면 단가표를 읽기 쉬워집니다. 아래 토큰 수는 설명을 위해 임의로 정한 값이며 측정한 값이 아닙니다. 한 작업을 끝내는 동안 입력 200만 토큰, 출력 20만 토큰을 쓴다고 가정하고, 캐시와 Batch 할인은 적용하지 않습니다.
| 가정 | 입력 비용 | 출력 비용 | 합계 |
|---|---|---|---|
| Sonnet 5.5, 한 번에 완료 | $4 | $2 | $6 |
| Opus 5.5, 같은 토큰 사용량 | $8 | $4 | $12 |
| Sonnet 5.5, 같은 규모로 3번 시도 | $12 | $6 | $18 |
| Opus 5.5, 토큰을 절반만 쓰고 한 번에 완료 | $4 | $2 | $6 |
같은 토큰을 쓴다면 Opus가 두 배입니다. 그러나 Sonnet이 세 번 시도해야 끝나는 작업을 Opus가 한 번에 끝낸다면 총비용은 오히려 Opus가 낮아질 수 있고, 반대로 한 번에 끝나는 작업에서는 Sonnet이 절반입니다. 어느 쪽이 되는지는 실제 사용량과 반복 횟수로만 알 수 있으므로, 앞의 전환 신호가 나타나기 전까지는 Sonnet으로 시작하는 편이 비용 면에서 안전합니다.
Claude 구독과 API 요금은 구분해야 합니다
Claude Code를 사용한다고 해서 모든 이용자가 앞의 API 요금을 별도로 지불하는 것은 아닙니다. Claude Code는 이용하는 계정과 서비스 제공 방식에 따라 Claude 구독 또는 API 방식으로 사용할 수 있습니다.
구독으로 사용하는 경우에는 해당 플랜의 이용 한도와 모델 접근 정책이 적용됩니다. 반면 Anthropic Console API 키를 사용하거나 별도의 API 과금 설정을 이용하는 경우에는 요청에 따른 요금이 발생할 수 있습니다.
따라서 구독 사용자에게 API 단가를 그대로 적용해 “Opus로 작업 한 번 하면 얼마”라고 단정하는 것은 맞지 않습니다. 특정 구독에서 Opus와 Sonnet의 사용 가능 여부, 사용량 한도는 플랜과 시점에 따라 달라질 수 있으므로 현재 결제 방식과 적용되는 한도를 확인한 뒤 모델을 선택해야 합니다.
업무용으로 여러 계정이나 외부 API를 함께 사용하는 환경에서는 어느 인증 정보가 적용되어 있는지도 중요합니다.

Claude Code에서 모델 바꾸는 방법
Claude Code에서는 대화 중에 모델을 전환할 수 있습니다. 세션 안에서 /model을 입력하면 모델 선택 화면이 열립니다. 별칭을 직접 지정할 수도 있습니다.
/model sonnet: 최신 Sonnet 선택/model opus: 최신 Opus 선택
최신 모델을 고르려면 Claude Code 버전이 맞아야 합니다. Sonnet 5.5는 v2.1.284 이상, Opus 5.5는 v2.1.280 이상이 필요하고, 오래된 버전에서 요청이 실패하면 claude update로 업데이트합니다.
/model <별칭>을 직접 입력하는 것은 선택 화면에서 Enter를 누르는 것과 같아서, 바꾼 모델이 새 세션의 기본값으로도 저장됩니다. 이번 세션에만 적용하려면 /model로 선택 화면을 열어 원하는 모델 행에서 s를 누르거나, 시작할 때 claude --model opus처럼 실행 옵션을 씁니다.
기본 모델도 알아 두어야 합니다. Pro, Max, Team, Enterprise와 Anthropic API 계정에서 Claude Code의 기본 모델은 Opus 5.5입니다(Microsoft Foundry는 Sonnet 4.5). 그래서 이 글의 “Sonnet으로 시작”은 /model sonnet이나 claude --model sonnet으로 직접 바꿔야 따를 수 있습니다. 직접 입력한 /model sonnet은 기본값으로 저장되므로, 이번 한 번만 Sonnet을 쓰려면 s 방식이나 --model 옵션을 씁니다.
여기서 sonnet과 opus는 특정 버전을 고정하는 이름이 아니라 모델 계열의 별칭입니다. Anthropic API에서는 각각 Sonnet 5.5와 Opus 5.5를 가리킵니다. 그러나 제공 환경에 따라 같은 별칭이 다른 버전으로 연결됩니다. 예를 들어 Microsoft Foundry에서는 opus가 Opus 4.6, sonnet이 Sonnet 4.5로 연결되고, Amazon Bedrock에서는 opus가 Opus 5.5이지만 sonnet은 Sonnet 4.5로 연결됩니다.
버전을 고정하려면 claude-opus-5-5처럼 전체 모델 이름을 쓰거나 ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL 환경 변수를 설정합니다. 세션 상단에는 모델 이름과 노력 수준이 표시되므로, 모델 이름만 입력하고 끝내기보다 실제로 선택된 모델을 확인하는 편이 좋습니다.

매번 모델을 직접 바꿔야 할까?
반드시 모든 요청마다 모델을 바꿀 필요는 없습니다. 프로젝트의 작업 성격이 비슷하다면 기본 모델 하나를 정해 사용하는 편이 단순합니다.
화면 구현과 일반적인 수정이 많은 프로젝트라면 Sonnet 중심으로 작업하고, 복잡한 원인 조사나 구조적 판단이 필요할 때 Opus로 전환하는 방법이 있습니다. 반대로 대규모 코드 분석과 설계가 대부분인 작업이라면 Opus를 중심에 둘 수도 있습니다.
중요한 것은 모델 전환 자체가 목적이 되어서는 안 된다는 점입니다. 모델을 지나치게 자주 바꾸면 어떤 모델이 어떤 변경을 했는지 추적하기 어려워질 수 있습니다. 큰 작업에서는 요구사항, 모델, 수정한 파일, 검증 결과를 함께 기록해 두면 나중에 문제가 발생했을 때 도움이 됩니다.
같은 모델을 계속 쓰는 것과 작업에 따라 모델을 나누는 것 중 어느 쪽이 더 효율적인지는 실제 프로젝트에서 비교하는 것이 좋습니다.
설계는 Opus, 구현은 Sonnet으로 나누기
두 모델을 함께 사용하는 방법도 있습니다. 복잡한 기능을 개발할 때 먼저 Opus로 관련 코드를 분석하고 작업 계획을 세운 다음, 범위가 명확해진 구현 작업은 Sonnet에 맡기는 방식입니다. 요구사항 분석과 실제 코드 작성에 필요한 작업 성격이 다르다는 점을 이용합니다.
Claude Code에는 opusplan이라는 모델 설정이 있습니다. 계획(plan) 모드에서는 opus를 쓰고, 실행 단계에서는 sonnet으로 전환하는 혼합 방식입니다. Anthropic API의 현재 모델처럼 opus와 sonnet이 기본으로 100만 토큰 컨텍스트를 쓰는 모델을 가리키면 두 단계 모두 100만 토큰으로 실행되므로 [1m]을 붙일 필요가 없습니다. 기본이 100만 토큰이 아닌 모델로 연결되는 환경에서만 /model opusplan[1m]으로 두 단계 모두 100만 토큰을 요청합니다.
다만 이런 방법이 모든 작업에서 항상 더 저렴하거나 더 정확하다고 보장되는 것은 아닙니다. 계획이 부정확하면 이후 구현에도 영향을 주고, 계획을 전달하는 과정에서 중요한 전제가 빠질 수 있습니다.
따라서 작업을 나누더라도 최종 구현 결과가 원래 요구사항과 일치하는지 확인해야 합니다. 계획에 없는 변경이 추가되었다면 그 변경이 왜 필요한지 별도로 검토하는 것이 좋습니다.
작업 상황별로 모델을 고르는 예
파일 하나의 명확한 오류. 로그가 특정 함수의 입력 처리 오류를 가리킨다면 Sonnet으로 수정과 테스트까지 진행합니다. 변경 범위가 작고 테스트로 바로 확인할 수 있기 때문입니다.
여러 모듈에 걸친 오류. 버튼을 누르면 오류 메시지가 나오지만 원인이 서버 요청, 인증 정보 만료, 데이터베이스 잠금, 재시도 처리 중 어디인지 모르는 경우입니다. Sonnet으로 한두 번 시도해 보고 가설이 갈린다면 Opus에 원인 조사를 맡깁니다. 이때 어떤 로그가 있었는지, 어떤 조건에서 재현되는지, 어디까지 확인했는지를 함께 전달해야 같은 조사를 처음부터 반복하지 않습니다.
새 기능. 기존 화면에 정해진 버튼 하나를 더하는 일은 Sonnet으로 충분합니다. 실시간 동기화처럼 충돌 해결, 오프라인 처리, 재연결 정책을 먼저 정해야 한다면 구현 전에 Opus로 대안의 장단점과 위험을 비교하고, 결정된 정책에 따른 구현은 Sonnet에 맡깁니다. 정책을 코드가 만들어진 뒤에 바꾸면 작업이 크게 늘기 때문입니다.
코드 리뷰. 오타, 불필요한 코드, 규칙 위반을 찾는 일반 리뷰는 Sonnet으로 시작합니다. 동시성 오류, 인증 우회, 예외 처리 누락처럼 복잡한 조건을 분석해야 한다면 Opus를 사용합니다. 같은 모델을 여러 번 실행한다고 독립적인 검증이 되지는 않으므로, 각 지적에 코드 위치와 재현 근거를 요구하고 실제 테스트로 재현되는지 확인합니다. 리뷰에서 “문제가 없다”는 답이 나왔다는 사실만으로 배포 승인까지 끝난 것은 아닙니다.
테스트 작성과 실행은 나눠 생각해야 합니다
Sonnet과 Opus 모두 테스트 코드를 작성하도록 요청할 수 있습니다. 기존 테스트 형식을 따라 누락된 사례를 추가하거나 단순한 입력 검증 테스트를 만드는 작업은 Sonnet으로 시작할 수 있습니다. 여러 조건이 얽힌 실패 시나리오를 설계할 때는 더 깊은 분석이 도움이 될 수 있습니다.
예를 들어 결제 요청이 중복 전송되는 상황을 테스트하려면 정상 처리뿐 아니라 요청 재시도, 타임아웃, 서버 재시작, 기록 중복 여부를 고려해야 합니다.
어느 모델을 사용하더라도 테스트를 생성했다는 사실과 테스트를 실행했다는 사실은 구분해야 합니다. “테스트 파일을 작성했습니다”라는 보고는 실제로 테스트가 통과했다는 뜻이 아닙니다.
테스트 실행 결과도 현재 코드와 정확히 같은 버전에서 얻은 것인지 확인해야 합니다. 리뷰 이후에 코드를 수정했다면 이전의 통과 결과를 새로운 코드의 검증 결과로 사용할 수 없습니다. 이 원칙은 모델 선택보다 중요합니다.

모델을 바꿔도 같은 오류가 반복되는 이유
한 모델이 문제를 해결하지 못할 때 다른 모델로 바꾸면 해결될 것처럼 느껴질 수 있습니다. 하지만 실제 원인이 잘못된 요구사항이나 불완전한 테스트 환경이라면 모델을 바꿔도 문제가 반복됩니다.
사용자가 기대하는 동작을 정확히 설명하지 않은 상태라면 Sonnet과 Opus 모두 다른 해석을 할 수 있습니다. 코드를 실행하는 데 필요한 데이터베이스가 없거나 접근 권한이 제한된 상황에서도 모델의 성능만으로 환경 문제가 해결되지는 않습니다.
모델을 바꾸기 전에 실패한 작업의 입력과 출력, 오류 메시지, 변경 내용을 확인하는 편이 좋습니다. 문제의 원인이 분명해지면 같은 모델에서도 적절한 수정이 가능할 수 있습니다. 반대로 원인이 여러 개이고 이전 분석이 충분하지 않았다면 다른 모델에게 독립적인 관점에서 조사하도록 요청하는 방식이 도움이 될 수 있습니다.
단순히 모델만 교체하고 같은 요청을 반복하면 비용과 시간이 늘어날 수 있습니다.

노력 수준도 결과를 바꿉니다
모델이 쓰는 추론의 깊이는 노력 수준(effort)으로 조절합니다. 두 모델 모두 적응형 사고를 지원하고, Opus 5.5는 적응형 사고가 항상 켜져 있어 끌 수 없으며 깊이만 노력 수준으로 조절합니다.
Claude Code에서 노력 수준은 low, medium, high, xhigh, max 다섯 단계이고 Sonnet 5.5와 Opus 5.5 모두 다섯 단계를 지원합니다. Claude Code의 기본값은 두 모델 모두 medium입니다. /effort로 슬라이더를 열고, /effort high처럼 단계를 직접 지정하며, claude --effort <단계>로 한 세션에만 적용할 수도 있습니다. 프롬프트에 ultrathink를 넣으면 해당 턴에 한해 더 깊은 추론을 요청합니다.
그래서 두 모델을 비교할 때 모델 이름만 맞추고 노력 수준을 다르게 두면 결과를 해석하기 어렵습니다. 예를 들어 Sonnet을 낮은 노력 수준으로 실행한 결과와 Opus를 높은 노력 수준으로 실행한 결과를 비교하면 모델 자체의 차이와 설정 차이가 섞입니다.
실제 비용과 성능을 비교하려면 모델, 노력 수준, 요청 내용, 코드 상태, 실행 환경을 함께 기록하는 편이 좋습니다.
모델 성능을 직접 비교하는 방법
실제 프로젝트에서 어떤 모델이 적합한지 알고 싶다면 작은 비교 과제를 정할 수 있습니다. 먼저 두 모델에 동일한 코드와 요구사항을 제공합니다. 기존 테스트가 있다면 시작 시점의 상태도 같아야 합니다. 예를 들어 단위 테스트가 실패하는 특정 함수를 수정하는 작업을 비교할 수 있습니다.
확인할 항목은 단순합니다.
- 요구사항에 맞는 수정이 이루어졌는가?
- 변경된 파일 범위가 적절한가?
- 기존 테스트와 새 테스트가 통과하는가?
- 관련 없는 기능이 깨지지 않았는가?
- 전체 완료까지 얼마나 걸렸는가?
- 실제 사용량 또는 비용은 얼마인가?
결과가 우연에 영향을 받을 수 있으므로 가능하다면 같은 유형의 작업을 여러 번 비교하는 편이 좋습니다. 또한 두 모델이 서로의 변경을 읽어 결과가 영향을 받지 않도록 독립적인 작업 환경을 사용하는 것이 정확합니다.
하나의 과제에서 이긴 모델이 모든 과제에서 더 좋다고 결론 내리기보다 작업 유형별로 결과를 기록하는 편이 실용적입니다.
기록은 다음과 같은 표 하나면 충분합니다. 작업 유형마다 한 줄씩 채우고, 모델 이름뿐 아니라 노력 수준을 함께 적습니다.
| 항목 | Sonnet 5.5 | Opus 5.5 |
|---|---|---|
| 모델과 노력 수준 | ||
| 시작 시점의 코드 상태 | ||
| 통과한 테스트 수 | ||
| 변경한 파일 수 | ||
| 시도 횟수 | ||
| 완료까지 걸린 시간 | ||
| 사용량 또는 비용 |
프로젝트 크기가 크면 Opus가 유리할까?
프로젝트의 파일 수가 많다는 사실만으로 Opus를 선택해야 하는 것은 아닙니다. 두 모델은 모두 100만 토큰 컨텍스트 윈도우를 지원합니다.
하지만 프로젝트 전체를 한 번에 읽을 수 있는지와 실제로 관련 정보를 정확히 찾아 이해하는지는 별개의 문제입니다. 파일이 많더라도 수정 범위가 명확하다면 필요한 파일 몇 개를 읽고 작업할 수 있습니다. 반대로 파일 수가 적은 프로젝트라도 코드가 강하게 얽혀 있거나 암묵적인 규칙이 많다면 분석이 어려울 수 있습니다.
따라서 프로젝트 전체 크기보다 변경에 필요한 코드 관계와 원인 분석의 복잡도를 기준으로 판단하는 편이 좋습니다. 컨텍스트 크기가 크다는 이유로 매번 저장소 전체를 입력하면 불필요한 비용과 시간이 발생할 수 있습니다. 중요한 파일과 규칙, 관련 테스트부터 제공하는 것이 효율적인 출발점입니다.
여러 에이전트에 역할을 나눌 때
기능 구현, 일반 검수, 실패 경로 검수처럼 역할을 나누면 모델도 역할에 맞게 배치할 수 있습니다. 다만 에이전트를 여러 개 실행하면 병렬 처리 비용이 발생하고, 일을 명확히 나누지 않으면 같은 파일을 중복 조사하거나 같은 부분을 동시에 수정합니다. 세션끼리 메시지를 주고받는 팀 구성은 Claude Code 에이전트 팀이란?에서 다룹니다.
업무 분담에서는 모델 선택뿐 아니라 작업 범위, 파일 소유, 수정 권한, 검증 책임을 함께 정해야 합니다.
마무리 정리
- Sonnet 5.5는 속도와 지능의 조합을 내세우고, Opus 5.5는 장시간 에이전트 코딩과 복잡한 작업을 주요 대상으로 합니다.
- 두 모델 모두 100만 토큰 컨텍스트를 지원하며, 기본 API 단가는 Opus가 Sonnet의 두 배입니다.
- 요구사항이 명확한 반복 수정은 Sonnet으로 시작합니다. 같은 오류가 두 번 반복되거나 설계 결정이 필요해지면 Opus로 바꿔 봅니다.
- Claude Code에서는
/model로 모델을 전환하고,opusplan으로 계획과 실행 단계의 모델을 나눌 수 있습니다. - 가장 적합한 모델은 실제 프로젝트의 테스트 결과, 전체 소요 시간, 반복 수정 횟수와 비용을 비교해 판단합니다.
출처 및 참고자료
마지막 확인
- Anthropic · Claude Sonnet 5.5
- Anthropic · Claude Opus 5.5
- Anthropic · Claude Code 모델 설정


