本番環境におけるモデル融合:OrcaRouter FusionとルーティングDSLの内部

本番環境におけるモデル融合:OrcaRouter FusionとルーティングDSLの内部

公開日

すべての記事に戻る

3つのフロンティアモデルを並列に、1つの回答を返す。1行で呼び出すか、自分で構成する。

要約. Claude Fable 5 は削除されました。答えはより大きなモデルではありません — それは パネル: 複数の最先端モデルを並列実行し、判定器に最も強い答えを返させます。OrcaRouter はこれを2つの方法で提供します: ビルトインの orcarouter/fusion ルーター 他のモデルと同じように呼び出し、さらに Routing DSL 独自のものを構成するためのものです。これが両方のフィールドガイドです — コピペ可能なレシピ、5つのアービター(synthesize と Mixture-of-Agents の融合を含む)、そしてSLAを危険にさらさずに展開する方法が含まれています。


パート1 — ワンライナーで呼び出す:組み込みのFusionルーター

Fable 5は廃止され、制限されたため、広く呼び出すことはできなくなりました。Fusionは、そのレベルをモデルから再構築します。あなたがことができますまだ呼び出す — ドロップインで、OpenAI互換のルーターで、フロンティアモデルのパネルを並列実行し、最強の回答を返します。厳選された3つのティアがすべてのワークスペースに付属しています。

3つのFusionティア (パネル構成×コンテキストウィンドウ)


orcarouter/fusion

Claude Opus 4.8 + GPT-5.5 + Gemini 3.1 Pro

コンテキストウィンドウ: 1,000,000

最適なのは:Fable-5 level Max intelligence


orcarouter/fusion-mini

Claude Opus 4.8 + GPT-5.5

コンテキストウィンドウ: 1,000,000

最適な用途:Fable-5 レベルバランス推論


orcarouter/fusion-flash

Gemini 3.5 Flash + MiniMax M2.7 + GLM 5.1

コンテキストウィンドウ:200,000

最適: Fable-5 レベルの高速かつ低コストな推論

コンテキストウィンドウ = 最も小さいパネルメンバーの — ファンアウトに対する制約。


これらはマーケティング用の宣伝文句ではなく、プリコンパイル済みDSLルーター中央管理されています。以下が実際のorcarouter/fusionプログラムを逐語的に示したものです:

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: balanced


2つの設計上の選択肢を特に指摘しておく価値があります。

それは実際の作業でのみ展開します。 The when: ゲートは、コード、エージェント、ツール使用、コード密度が高い、または高難易度(難易度 >= 0.3)のプロンプトに対してパネルを起動します。その他すべてはワークスペースの balanced デフォルトにフォールスルーします。パネル価格は役立つ場合にのみ支払われ、"hi."には支払われません。

ジャッジは実際の回答をそのまま提供します。 best_of_n はLLMジャッジ(ここではOpus 4.8とbest_answer_v1テンプレートを使用)を実行し、 最も強い候補を1つ選び、それをそのまま提供します — 決して希釈されたマージではありません。 出力は常に実際のモデルの回答です。


第2部 — 選択対融合: best_of_n と synthesize arbiter

Fusion ルーターは選択します。しかし、OrcaRouter も fuse 戦略 — synthesize、その Mixture-of-Agents パターンがルーティングエンジンに追加されました ( service/dispatch_parallel/synthesize.go)。違いはすべてです:

展示2 — 選択 vs. 融合

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 leg

真の融合のレシピ:

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_v1


正直な注意事項:

- 課金はN+1 — すべてのレッグが課金され、さらにアグリゲーターが追加のコールとして課金されます。

- OpenAI チャット形式は V1 のみ — アグリゲーターは OpenAI チャット完了を出力します; Claude/Gemini ネイティブ クライアントは serve-first-successful に劣化します(legs の課金は継続)。

アグリゲーターはルーターの許可された候補セット内になければならず、そうでなければ低下します。

どちらをいつ使うか:best_of_n は、あるモデルの回答がおそらく完全に正しい場合 (コード、事実に基づくQ&A) — クリーンで実際の回答が欲しい。synthesize は、回答が補完的な場合 (研究、分析、長文) であり、強みを統合することで単一の回答よりも優れています。


パート3 — 自分で作る:Routing DSLプレイブック

厳選されたパネルが不要ですか?まずは、「Claude Fable 5 Level」テンプレートをRouting DSL エディター(これらはすべてのワークスペースに同梱されており、Fusion ルーターをミラーリングしています)で使用し、その後特化させます。コピー&ペーストの6つのパターン:

1 — 実際に動作するコードを出荷する → ファンアウトし、 テスト 勝者を選ぶ:

- 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 は実行に基づいています — あなたのハーネスを通過する候補を提供し、判定用のLLMは必要ありません。

2 — 簡単なプロンプトに過剰に支払うのをやめましょう → 難易度ゲート (Fusionパターン、あなたのモデル):

- 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 — エージェントの長期実行を軌道に保つ → 不安定になったときのみエスカレート:

- 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 — 不安定な出力を決定論的にする → 投票、分割時にエスカレーション:

- 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 — テールレイテンシとプロバイダのブリップを克服 → 競争し、最初の応答者にサービスを提供する:

- 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 — SLAを賭けずにロールアウト → シャドウ (本番トラフィックと並行して評価し、それが するであろう ピック + コスト差分、本番のピックを提供) → カナリー% (dsl_canary_pct 5 → 25 → 100、リクエストごとに暗号論的ランダム)。測定された乖離に基づいて移行し、即座にロールバックする。


チートシート:5人の裁定者

経済と正直

難易度ゲート付きファンアウトにより請求額を一定に保つ (例示; コスト = 実際のトークン価格計算) — 混合コスト = イージーシェア × 安価 + ハードシェア × パネル:

70%の簡単なワークロードがフルパネルを実行するための全パネル請求額の3分の1