IntermedioPlataforma / Ing. de IA

Stack de modelos mixto y multiproveedor: Opus planifica, Qwen / DeepSeek ejecutan

Fije los mejores modelos de distintos proveedores por rol de agente: la planificación conserva Anthropic Opus, la ejecución recae en Qwen3.8-Max / DeepSeek V4.1 Flash, sin cambios en el cliente y con traducción automática entre protocolos.

De qué se queja realmente la comunidad

Ejecutar Claude Code con Claude Opus de principio a fin es demasiado caro; bajar todo a Sonnet degrada visiblemente la planificación y el criterio arquitectónico, y el retrabajo sale más caro. Los desarrolladores quieren mezclar los mejores modelos de otros proveedores (Qwen, DeepSeek), pero el cliente solo habla el protocolo de Anthropic y nombres de modelo claude-*, y cambiar la configuración implica tocar cada máquina de desarrollo.

Peor aún, el bucle de planificación, el bucle principal de ejecución y las subtareas por lotes tienen necesidades genuinamente distintas de capacidad frente a precio; un único cambio de modelo en el cliente no puede igualarlo.

Cómo lo hace GateLLM

GateLLM reescribe el nombre del modelo por identidad después de la compuerta de entrada y antes del enrutamiento, sin cambios en el cliente. La planificación y el criterio arquitectónico mantienen claude-opus-5 hacia Anthropic; el claude-sonnet-* del bucle principal de ejecución se mapea a qwen3.8-max de DashScope; las subtareas por lotes (formateo, mensajes de commit, resúmenes de recuperación) se mapean a deepseek-flash mediante un upstream compatible con OpenAI. La traducción entre protocolos la maneja el gateway, conservando los flujos SSE y el tool_call_id en el viaje de ida y vuelta.

Las reglas se asocian a claves de acceso o grupos de claves y surten efecto por equipo; la compuerta de salida verifica que el destino esté en la lista de permitidos de la identidad: configurar un mapeo no otorga permiso.

5 palancas que realmente funcionan

  • Mapeo de modelos por identidad: de → a en claves de acceso y grupos de claves, reescrito después de la entrada y antes del enrutamiento; admite un único * que captura un segmento intermedio y se recarga en caliente
  • Traducción entre protocolos: Claude Code en Anthropic, Codex / SDK de OpenAI en OpenAI, y el gateway traduce a upstreams de DashScope / OpenAI / Gemini / Bedrock; :keep-alive en inferencias upstream largas y _gateway_warning si el flujo se corta
  • Enrutamiento condicional por cabeceras de solicitud: el mismo origen enruta a destinos distintos según X-Tenant, etc. (exacto / prefijo / regex / existe / ausente); primero las reglas condicionales, luego la alternativa incondicional y gana la primera coincidencia, lo que sirve para canarios
  • Detección del modo de planificación: el modo de planificación de Claude Code inyecta los marcadores Plan mode is active / Exited Plan Mode; un script que compara la última posición cambia el enrutamiento: planificación en Opus, ejecución en el modelo rentable
  • Permisos y observabilidad: la compuerta de salida verifica que el destino esté en la lista de permitidos de la identidad (mapeo ≠ permiso); la columna de modelo del log muestra una etiqueta MM con el nombre original → mapeado al pasar el cursor; las estadísticas y la facturación atribuyen por el nombre real posterior al mapeo, así que el costo del stack mixto es comparable de un vistazo
Guía completa: configurar el mapeo de modelos por identidad (docs)

Preguntas frecuentes