Fuzja modeli w produkcji: Wewnątrz OrcaRouter Fusion i Routing DSL
Trzy modele graniczne równolegle, jedna odpowiedź z powrotem. Wywołaj to w jednej linii — lub skomponuj własną.
W skrócie. Claude Fable 5 został wycofany. Odpowiedzią nie jest większy model — to panel: uruchom kilka modeli z czołówki równolegle i pozwól sędziemu zwrócić najmocniejszą odpowiedź. OrcaRouter dostarcza to na dwa sposoby: wbudowane orcarouter/fusion routers wywołujesz jak każdy model, oraz Routing DSL aby skomponować własny. To jest przewodnik po obu — z gotowymi przepisami do skopiowania, pięcioma arbiterami (w tym synthesize, fuzja Mixture-of-Agents) oraz jak to wdrożyć bez ryzykowania SLA.
Część 1 — Wywołaj to w jednej linii: wbudowane routery Fusion
Fable 5 został wycofany i ograniczony, więc nie jest już powszechnie wywoływalny. Fusion odbudowuje ten poziom z modeli, które możesz wciąż wywołać — drop-in, OpenAI-compatible router, który uruchamia panel modeli frontier równolegle i zwraca najsilniejszą odpowiedź. Trzy wyselekcjonowane poziomy są dostarczane w każdym workspace:
Trzy poziomy Fusion (kompozycja paneli × okno kontekstu)
Claude Opus 4.8 + GPT-5.5 + Gemini 3.1 Pro
Okno kontekstu: 1,000,000
Najlepsze dla: poziom Fable-5 Maksymalna inteligencja
Claude Opus 4.8 + GPT-5.5
Okno kontekstu: 1,000,000
Najlepsze dla: zbalansowane wnioskowanie na poziomie Fable-5
Gemini 3.5 Flash + MiniMax M2.7 + GLM 5.1
Okno kontekstu: 200,000
Najlepsze dla: szybkie + tanie wnioskowanie na poziomie Fable-5
Okno kontekstu = najmniejszego członka panelu — wiążące ograniczenie na fan-out.
To nie są chwyty marketingowe; to prekompilowane routery DSL zarządzane centralnie. Oto rzeczywisty program orcarouter/fusion, dosłownie:
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: balancedDwa wybory projektowe, które warto wyróżnić:
Uaktywnia się tylko przy prawdziwej pracy. Bramka when: uruchamia panel dla promptów typu code, agent, tool-using, code-dense lub high-difficulty (difficulty >= 0.3); wszystko inne przechodzi do domyślnego ustawienia balanced w przestrzeni roboczej. Płacisz cenę panelu dokładnie tam, gdzie to pomaga, a nie za "hi".
Sędzia udziela prawdziwej odpowiedzi, dosłownie. best_of_n uruchamia sędziego LLM (tutaj Opus 4.8 z szablonem best_answer_v1), który wybiera pojedynczego, najmocniejszego kandydata i podaje go bez zmian — nigdy rozcieńczonej mieszanki. Wynikiem jest zawsze odpowiedź prawdziwego modelu.
Część 2 — Select vs. Fuse: best_of_n i arbiter synthesize
Routery Fusion wybierają. Ale OrcaRouter również zawiera fuse strategię — synthesize, Mixture-of-Agents wzorzec dodany w silniku routingu (service/dispatch_parallel/synthesize.go). Różnica to cała gra:
Załącznik 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 legPrzepis na prawdziwą fuzję:
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_v1Uczciwe zastrzeżenia:
- Rozliczenie jest N+1 — każda noga jest fakturowana, a agregator jako dodatkowe połączenie.
- Tylko format czatu OpenAI w V1 — agregator emituje odpowiedź czatu OpenAI; Claude/Gemini natywni klienci degradują do serve-first-successful (legs still billed).
Agregator musi znajdować się w autoryzowanym zestawie kandydatów routera, w przeciwnym razie ulega degradacji.
Kiedy użyć którego: best_of_n gdy odpowiedź jednego modelu jest prawdopodobnie w pełni poprawna (kod, factual Q&A) — chcesz czystą, rzeczywistą odpowiedź. synthesize gdy odpowiedzi są uzupełniające się (badania, analiza, długie formy) a połączenie sił pokonuje każdą pojedynczą odpowiedź.
Część 3 — Zbuduj własny: podręcznik Routing DSL
Nie chcesz panelu kuratorowanego? Zacznij od "Claude Fable 5 Level" szablony w edytorze Routing DSL (są dostarczane w każdym obszarze roboczym i odzwierciedlają routery Fusion), a następnie specjalizuj. Sześć wzorców kopiuj-wklej:
1 — Kod, który faktycznie działa → rozgałęź się, niech testy wybiorą zwycięzcę:
- 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 jest oparty na wykonaniu — służy kandydatowi, który przechodzi przez twój harness, nie jest potrzebny model LLM jako sędzia.
2 — Przestań przepłacać za łatwe prompty → brama trudności (wzór Fusion, twoje modele):
- 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 — Utrzymuj długie uruchomienia agenta na właściwym torze → eskaluj tylko gdy się zachwieje:
- 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 — Uczyń niestabilne wyniki deterministycznymi → głosuj, eskaluj w przypadku podziału:
- 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 — Pokonaj opóźnienie końcowe i zakłócenia dostawcy → ścigaj się, obsłuż pierwszego respondenta:
- 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 — Wdrożenie bez narażania SLA → shadow (oceniaj równolegle z ruchem na żywo, loguj co to by wybrało + różnica kosztów, serwuj wybór na żywo) → canary % (dsl_canary_pct 5 → 25 → 100, kryptograficznie losowy na żądanie). Migruj na podstawie zmierzonej rozbieżności, wycofaj natychmiast.
Ściągawka: pięciu arbitrów

Ekonomia i uczciwość
Rozgałęzienie sterowane trudnością utrzymuje stałą opłatę (Ilustracyjny; koszt = rzeczywiste obliczenia ceny tokena) — koszt mieszany = easy_share × cheap + hard_share × panel:

Łatwe obciążenie na 70% wykonuje pełny panel za jedną trzecią kosztów całego panelu.
