모델 라우팅 전략 — haiku/sonnet/opus를 용도별로 분배하는 이유

모든 작업에 최고 모델을 쓰는 것이 최선이 아닌 이유와 실전 분배 전략


핵심 요약

  • 모델 라우팅은 작업 유형에 따라 haiku/sonnet/opus를 분배하는 전략이다. 기계적 작업에 opus를 쓰는 것은 비용 낭비이고, 복잡한 판단에 haiku를 쓰는 것은 품질 위험이다
  • 에이전트 역할별로 모델을 고정 할당한다. orchestrator=opus(판단), executor=sonnet(구현), quality=sonnet(검증). 서브 에이전트는 격리 원칙을 따른다
  • "전부 opus를 쓰면 안 되나?"에 대한 답: 비용 문제만이 아니라, 단순 작업에서 과잉 추론이 오히려 부작용을 만든다

배경

AI 모델은 여러 등급이 있습니다. Claude 기준으로 haiku(경량), sonnet(중간), opus(최상위). 비용과 성능이 비례합니다.

에이전트 시스템을 처음 설계할 때 자연스러운 선택은 "전부 opus로 돌리자"입니다. 최고 모델이니까 최고 결과가 나올 것이라는 기대. 실제로 돌려보면 두 가지 문제가 나타납니다.

첫째, 비용. 파일 검색 한 번, 키워드 조회 한 번에 opus를 호출하면 토큰 비용이 빠르게 누적됩니다. 자동화된 작업에서 이 차이는 큽니다.

둘째, 과잉 추론. 단순한 파일 포맷팅 작업에 opus를 쓰면, 모델이 "이 구조가 최적인지" 불필요한 판단을 시작합니다. 시키지 않은 개선을 제안하거나, 컨텍스트를 과도하게 해석합니다. 단순한 작업이 복잡해집니다.

모델 라우팅은 이 문제를 해결합니다. 작업의 성격에 맞는 모델을 배정하는 것입니다.


본문

1. 3단계 모델 라우팅 테이블

작업 유형 모델 근거
파일 검색, 키워드 조회, 단순 포맷팅 haiku 기계적 작업. 판단 불필요
콘텐츠 작성, 리서치 컴파일, 초안 편집 sonnet 구현 능력 필요
전략 설계, 리뷰 종합, 팩트체크 중재 opus 복잡한 판단 + 컨텍스트 이해

haiku가 담당하는 것: "이 폴더에서 .md 파일을 찾아라", "이 텍스트를 마크다운 테이블로 변환해라", "이 키워드가 포함된 파일을 목록으로 보여라" — 정답이 하나이고, 판단이 필요 없는 작업입니다. 빠르고, 저렴하고, 정확합니다.

sonnet이 담당하는 것: "이 자료들을 종합해서 소스 파일을 만들어라", "이 주제로 블로그 초안을 작성해라", "이 리서치 결과를 구조화해라" — 여러 정보를 조합하고 문장을 생성하는 작업입니다. 판단은 제한적이지만 구현 능력이 필요합니다.

opus가 담당하는 것: "이 요청이 단순 조사인지 심층 분석인지 판단해라", "3개 소스의 주장이 상충하는데 어떤 것이 더 신뢰할 수 있는지 평가해라", "이 글의 전체 흐름에서 논리적 허점이 있는지 검토해라" — 복잡한 맥락을 이해하고, 여러 기준을 동시에 고려해야 하는 작업입니다.


2. 에이전트 역할별 모델 할당

모델 라우팅을 작업 단위로만 하면 매번 "이 작업은 어떤 모델이 적합한가"를 판단해야 합니다. 이 판단 자체가 비용입니다. 대신, 에이전트 역할에 모델을 고정하면 판단이 필요 없습니다.

에이전트 모델 역할 산출물
main-orchestrator opus 대화, 판단, 분류, 단순 조사/작성, 발행 컨펌 소스 + 초안 (단순)
executor-agent sonnet 심층 리서치, 소스 파일 작성, 블로그/트위터 글 작성 소스 + 초안 (복합)
quality-agent sonnet 팩트체크, 검증. 읽기 전용 없음

orchestrator가 opus인 이유: 이 에이전트는 사용자의 요청을 받아서 분류합니다. "이 요청이 단순한가 복합한가?" "어떤 Preset을 적용할 것인가?" "사용자의 의도가 무엇인가?" — 이 판단은 컨텍스트를 깊이 이해해야 합니다. 잘못된 분류는 전체 파이프라인의 품질에 영향을 미칩니다.

executor가 sonnet인 이유: 실행 에이전트는 orchestrator가 내린 판단에 따라 작업합니다. 방향은 이미 정해져 있고, 구현만 하면 됩니다. 리서치 결과를 정리하고, 소스 파일을 작성하고, 블로그 글을 쓰는 작업은 sonnet이 충분히 잘합니다.

quality가 sonnet인 이유: 검증 에이전트는 "이 글에서 출처 없는 수치가 있는가?", "주장과 근거가 일치하는가?"를 확인합니다. 체크리스트 기반 검증이므로 opus의 복잡한 추론까지는 필요하지 않습니다. 단, 여러 출처 간 상충이 발견되면 orchestrator에게 에스컬레이션합니다.


3. "전부 opus를 쓰면 안 되나?"

이 질문은 반드시 나옵니다. 세 가지 관점에서 답합니다.

비용 관점. opus는 haiku 대비 토큰당 비용이 수십 배 높습니다. 에이전트 시스템은 자동화된 작업 중 모델을 수십~수백 번 호출합니다. 파일 검색 10번을 haiku로 하면 무시할 수 있는 비용이지만, opus로 하면 유의미한 비용이 됩니다.

과잉 추론 관점. "sources/ 폴더에서 가장 최근 파일을 찾아라"는 명령에 opus를 쓰면, 모델이 파일 내용을 읽고 "이 파일의 구조를 개선하면 좋겠다"는 판단을 시작할 수 있습니다. 시키지 않은 일입니다. 강력한 모델은 주어진 작업을 넘어서 행동하려는 경향이 있고, 이것이 때로는 방해가 됩니다.

속도 관점. 모델 크기가 클수록 응답 시간이 깁니다. 기계적 작업에서는 속도가 중요합니다. haiku의 응답이 opus보다 빠르고, 이 차이가 파이프라인 전체의 처리 시간에 영향을 미칩니다.

결론: opus는 판단이 필요한 곳에만 쓰는 것이 전체 시스템에서 더 효율적입니다.


4. 서브 에이전트 격리 원칙

모델 라우팅만큼 중요한 것이 서브 에이전트 격리입니다. 에이전트가 다른 에이전트를 호출할 때 적용되는 4가지 규칙이 있습니다.

1. 세션 히스토리를 전달하지 않는다. orchestrator가 executor를 호출할 때, 지금까지의 대화 내역을 통째로 넘기지 않습니다. 불필요한 컨텍스트가 서브 에이전트의 성능을 떨어뜨립니다.

2. 핸드오프 문서에서 필요한 컨텍스트만 추출한다. 작업에 필요한 정보만 정리해서 전달합니다. "이 주제로 블로그 글을 작성해라. 참고 소스는 이것이다. 구조는 이것을 따라라." — 이 정도면 충분합니다.

3. 1 서브 에이전트 = 1 작업 = 최소 컨텍스트. 하나의 서브 에이전트에게 여러 작업을 동시에 맡기지 않습니다. 작업이 3개면 서브 에이전트를 3개 호출합니다.

4. 서브 에이전트 완료 후: 결과만 수신. 내부 과정은 폐기. executor가 블로그 글을 완성하면, 완성된 글만 받습니다. executor가 글을 쓰는 과정에서 참고한 중간 자료, 시행착오, 내부 판단은 받지 않습니다.

이 격리 원칙의 목적은 컨텍스트 오염 방지입니다. 서브 에이전트의 내부 과정이 상위 에이전트의 컨텍스트에 섞이면, 이후 판단에 불필요한 노이즈가 됩니다.


설계 검증: 토큰 폭주 문제

모델 라우팅 설계에서 실제로 가장 까다로운 문제는 토큰 폭주입니다. 모델이 올바르게 배정되어 있더라도, 에이전트 간 컨텍스트 전달이 잘못되면 토큰 사용량이 기하급수적으로 늘어납니다.

실제 검증 과정에서 확인된 패턴입니다. 안정적으로 운영되던 에이전트 구조(OpenClaw)에서 새 아키텍처(Hermes)로 이관을 시도했을 때, 특정 조건에서 토큰 사용량이 급격히 증가하는 문제가 발생했습니다. 원인은 모델 배정이 아니라 컨텍스트 누적이었습니다 — 에이전트가 완료된 작업의 중간 과정을 계속 보유하면서 다음 호출 시 컨텍스트로 전달했습니다.

이 문제는 두 가지 방식으로 대응합니다.

첫째, 서브 에이전트 격리 원칙(위 §4)을 엄격히 적용합니다. 완료된 서브 에이전트의 내부 과정은 즉시 폐기합니다.

둘째, 에이전트 복귀 경로를 설계에 포함합니다. 새 아키텍처가 불안정하면 이전 안정 구조로 즉시 되돌아갈 수 있어야 합니다. 이관 검증이 완료되기 전까지는 기존 구조를 병행 유지합니다.

이 패턴은 에이전트 이관뿐 아니라 모든 모델 라우팅 변경에 적용됩니다. 변경 후 토큰 사용량 추이를 반드시 모니터링해야 합니다.


마무리

모델 라우팅의 핵심은 "비싼 모델 = 좋은 결과"가 아니다라는 인식입니다. 적합한 모델이 좋은 결과를 만듭니다.

단순 작업에 haiku, 구현에 sonnet, 판단에 opus. 이 분배가 비용을 낮추면서 품질을 유지합니다. 여기에 서브 에이전트 격리까지 더하면, 각 에이전트가 자기 역할에만 집중하는 구조가 완성됩니다.

다음 글에서는 이 전체 구조가 제대로 작동하고 있는지 스스로 점검하는 방법 — self-audit 스킬을 다룹니다.

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"