Fusión de modelos en producción: dentro de OrcaRouter Fusion y el DSL de enrutamiento
Tres modelos frontera en paralelo, una respuesta de vuelta. Llámalo en una línea — o compón el tuyo propio.
En resumen. Claude Fable 5 fue retirado. La respuesta no es un modelo más grande — es un panel: ejecutar varios modelos de frontera en paralelo y dejar que un juez devuelva la respuesta más fuerte. OrcaRouter ofrece esto de dos maneras: integrados orcarouter/fusion routers que llamas como cualquier modelo, y un Routing DSL para componer el tuyo propio. Esta es la guía de campo para ambos — con recetas listas para copiar y pegar, los cinco árbitros (incluyendo synthesize, la fusión Mixture-of-Agents), y cómo implementarlo sin apostar tu SLA.
Parte 1 — Llámalo en una línea: los routers Fusion integrados
Fable 5 fue descontinuada y restringida, por lo que ya no se puede llamar ampliamente. Fusion reconstruye ese nivel a partir de los modelos que tú puedes seguir llamando — un router de reemplazo compatible con OpenAI que ejecuta un panel de modelos fronterizos en paralelo y devuelve la respuesta más fuerte. Tres niveles seleccionados se envían en cada espacio de trabajo:
Los tres niveles de Fusion (composición del panel × ventana de contexto)
Claude Opus 4.8 + GPT-5.5 + Gemini 3.1 Pro
Ventana de contexto: 1,000,000
Mejor para: nivel Fable-5 inteligencia máxima
Claude Opus 4.8 + GPT-5.5
Ventana de contexto: 1,000,000
Mejor para: inferencia equilibrada de nivel Fable-5
Gemini 3.5 Flash + MiniMax M2.7 + GLM 5.1
Ventana de contexto: 200,000
Mejor para: inferencia rápida y barata de nivel Fable-5
(Ventana de contexto = la del miembro de panel más pequeño — la restricción vinculante en una expansión de salida.)
Estos no son cebos de marketing; son routers DSL precompilados gestionados centralmente. Aquí está el real programa orcarouter/fusion, textualmente:
version: 1
rules:
- id: hard_panel
when: task_class == "code" || task_class == "agent" || code_keyword_density >= 0.3 || has_tools || difficulty >= 0.3
use:
parallel:
- { model: "anthropic/claude-opus-4.8" }
- { model: "openai/gpt-5.5" }
- { model: "google/gemini-3.1-pro-preview" }
arbiter:
strategy: best_of_n
model: "anthropic/claude-opus-4.8"
template: best_answer_v1
max_latency_ms: 120000
default:
delegate: balancedDos decisiones de diseño que vale la pena destacar:
Solo se distribuye en trabajo real. La puerta when: activa el panel para indicaciones de código, agente, uso de herramientas, código denso o alta dificultad (dificultad >= 0.3); todo lo demás pasa al valor predeterminado equilibrado del espacio de trabajo. Pagas el precio del panel exactamente donde ayuda, no en 'hola'.
El juez proporciona una respuesta real, textualmente. best_of_n ejecuta un juez LLM (aquí, Opus 4.8 con la plantilla best_answer_v1) que selecciona el candidato más fuerte y lo sirve tal cual — nunca una fusión diluida. La salida es siempre la respuesta de un modelo real.
Parte 2 — Seleccionar vs. Fusionar: best_of_n y el árbitro synthesize
Los routers Fusion seleccionan. Pero OrcaRouter también incluye una fuse estrategia — synthesize, el Mixture-of-Agents patrón añadido en el motor de enrutamiento (service/dispatch_parallel/synthesize.go). La diferencia es todo el juego:
Anexo 2 — Select vs. Fuse
best_of_n (SELECT) synthesize (FUSE)
┌─ Opus 4.8 ─┐ ┌─ Opus 4.8 ─┐
├─ GPT-5.5 ─┼─► judge picks leg k ├─ GPT-5.5 ─┼─► aggregator LLM writes
└─ Gemini ─┘ └─► serve leg k verbatim └─ Gemini ─┘ ONE new fused answer
output = a real model's answer output = a new answer better than any legReceta para la verdadera fusión:
use:
parallel:
- { model: "anthropic/claude-opus-4.8" }
- { model: "openai/gpt-5.5" }
- { model: "google/gemini-3.1-pro-preview" }
arbiter:
strategy: synthesize
model: "anthropic/claude-opus-4.8" # aggregator: fuses candidates into one new answer
template: synthesize_v1Advertencias honestas:
- La facturación es N+1 — cada tramo factura, más el agregador como una llamada extra.
- Formato de chat OpenAI solo en V1 — el agregador emite una finalización de chat de OpenAI; Claude/Gemini nativos clientes se degradan a serve-first-successful (tramos aún facturados).
El agregador debe estar en el conjunto de candidatos autorizados del enrutador, o se degrada.
Cuándo usar cada uno: best_of_n cuando es probable que la respuesta de un modelo sea completamente correcta (código, Q&A factual) — quieres una respuesta limpia y real. synthesize cuando las respuestas son complementarias (investigación, análisis, formato extenso) y la combinación de fortalezas supera cualquier enfoque individual.
Parte 3 — Construye tu propio: el manual de Routing DSL
¿No quieres el panel seleccionado? Empieza desde las plantillas "Claude Fable 5 Level" en el editor de Routing DSL (vienen incluidas en cada espacio de trabajo y reflejan los routers Fusion), luego especializa. Seis patrones de copiar y pegar:
1 — Envía código que realmente funciona → despliega, deja que las pruebas elijan al ganador:
- id: hard_code
when: task_class == "code" && difficulty > 0.6
use:
parallel:
- { model: "anthropic/claude-opus-4.8", thinking_budget_tokens: 16000 }
- { model: "openai/gpt-5.5", reasoning_effort: high }
- { model: "google/gemini-3.1-pro-preview" }
arbiter: { strategy: tests_pass }tests_pass está basado en la ejecución — sirve al candidato que pasa tu arnés, no se necesita un juez LLM.
2 — Deja de pagar de más por prompts fáciles → puerta de dificultad (el patrón Fusion, tus modelos):
- id: easy
when: difficulty < 0.3
use: { delegate: cheapest }
- id: hard
when: difficulty >= 0.3
use:
parallel:
- { model: "anthropic/claude-opus-4.8" }
- { model: "openai/gpt-5.5" }
arbiter: { strategy: best_of_n, model: "anthropic/claude-opus-4.8", template: best_answer_v1 }3 — Mantén las ejecuciones largas del agente encarriladas → escalar solo cuando se tambalea:
- id: agent
when: task_class == "agent" && agent_state.consecutive_errors == 0
use: { model: "anthropic/claude-sonnet-4.6", affinity_ttl: "5m" }
on_low_confidence:
signals: [next_turn_test_failed, self_doubt]
use: { model: "anthropic/claude-opus-4.8", thinking_budget_tokens: 24000 }4 — Hacer que las salidas inestables sean deterministas → votar, escalar en una división:
- id: extract
when: task_class == "rag"
use:
parallel:
- { model: "anthropic/claude-opus-4.8" }
- { model: "openai/gpt-5.5" }
- { model: "google/gemini-3.1-pro-preview" }
arbiter: { strategy: majority }
on_disagreement: { model: "anthropic/claude-opus-4.8", thinking_budget_tokens: 32000 }5 — Reduzca la latencia de cola y los fallos del proveedor → compita, sirva al primer respondedor:
- id: race
when: request.stream == true && difficulty < 0.5
use:
parallel:
- { model: "google/gemini-3.5-flash" }
- { model: "minimax/minimax-m2.7" }
- { model: "z-ai/glm-5.1" }
arbiter: { strategy: first }6 — Desplegar sin apostar el SLA → sombra (evaluar junto al tráfico en vivo, registrar lo que él haría elegir + delta de costo, servir la elección en vivo) → canary % (dsl_canary_pct 5 → 25 → 100, cripto-aleatorio por solicitud). Migrar según divergencia medida, revertir instantáneamente.
La guía rápida: cinco árbitros

Economía y honestidad
El fan-out controlado por dificultad mantiene la factura plana (Ilustrativo; costo = matemática real del precio de token) — costo combinado = easy_share × cheap + hard_share × panel:

Una carga de trabajo fácil al 70% ejecuta el panel completo por un tercio de la factura de todos los paneles.
