중급플랫폼 / AI 엔지니어

혼합 멀티 벤더 모델 스택: Opus가 계획, Qwen / DeepSeek가 실행

에이전트 역할별로 서로 다른 벤더의 최상위 모델을 고정하세요 — 계획은 Anthropic Opus를 유지하고 실행은 Qwen3.8-Max / DeepSeek V4.1 Flash로 가며, 클라이언트 변경 없이 프로토콜이 자동 번역됩니다.

커뮤니티가 실제로 불평하는 것

Claude Code를 끝까지 Claude Opus로 돌리면 너무 비싸고, 일괄적으로 Sonnet으로 내리면 계획과 아키텍처 판단이 눈에 띄게 떨어져 재작업 비용이 커집니다. 개발자는 다른 벤더의 최상위 모델(Qwen, DeepSeek)을 섞고 싶지만, 클라이언트는 Anthropic 프로토콜과 claude-* 모델 이름만 사용하며 구성을 바꾸려면 모든 개발자 머신을 건드려야 합니다.

설상가상으로 계획 루프, 메인 실행 루프, 배치 하위 작업은 기능과 가격에 대한 요구가 실제로 다릅니다 — 클라이언트에서의 단일 모델 전환으로는 맞출 수 없습니다.

GateLLM은 이렇게 합니다

GateLLM은 인그레스 게이트 이후, 라우팅 이전에 아이덴티티 기준으로 모델 이름을 다시 씁니다 — 클라이언트 변경 제로. 계획과 아키텍처 판단은 claude-opus-5가 그대로 Anthropic으로 가고, 메인 실행 루프의 claude-sonnet-*는 DashScope의 qwen3.8-max로 매핑되며, 배치 하위 작업(포맷팅, 커밋 메시지, 검색 요약)은 OpenAI 호환 업스트림을 통해 deepseek-flash로 매핑됩니다. 프로토콜 교차 번역은 게이트웨이가 처리하며, 왕복에서 SSE 스트림과 tool_call_id가 보존됩니다.

규칙은 액세스 키나 키 그룹에 붙어 팀별로 적용됩니다. 이그레스 게이트는 대상이 아이덴티티의 허용 목록에 있는지 검증합니다 — 매핑을 구성하는 것은 권한을 부여하는 것이 아닙니다.

실제로 효과가 있는 5가지 레버

  • 아이덴티티 범위 모델 매핑: 액세스 키 / 키 그룹에서 from → to, 인그레스 이후 라우팅 이전에 재작성되며 중간 세그먼트를 잡는 단일 * 지원, 핫 리로드
  • 프로토콜 교차 번역: Claude Code는 Anthropic으로, Codex / OpenAI SDK는 OpenAI로, 게이트웨이가 DashScope / OpenAI / Gemini / Bedrock 업스트림으로 번역. 긴 업스트림 추론에는 :keep-alive, 스트림 중단 시 _gateway_warning
  • 요청 헤더 조건부 라우팅: 같은 from이 X-Tenant 등으로 다른 대상에 라우팅(정확 일치 / 접두사 / 정규식 / 존재 / 부재). 조건부 규칙 우선, 무조건 폴백, 첫 일치 우선 — 카나리에 활용 가능
  • 계획 모드 탐지: Claude Code의 계획 모드가 Plan mode is active / Exited Plan Mode 마커를 주입하며, 마지막 위치를 비교하는 스크립트가 라우팅을 전환 — 계획은 Opus, 실행은 비용 효율 모델
  • 권한 및 관측성: 이그레스 게이트가 대상이 아이덴티티 허용 목록에 있는지 검증(매핑 ≠ 권한). 로그 모델 열에 MM 태그가 표시되고 호버하면 원본 → 매핑 이름을 보여줍니다. 통계와 과금은 매핑 후 실제 모델 이름으로 귀속되어 혼합 스택 비용을 한눈에 비교할 수 있습니다
전체 방법: 아이덴티티 범위 모델 매핑 구성(문서)

FAQ