การรวมโมเดลในระดับการผลิต: ภายใน OrcaRouter Fusion และ Routing DSL
โมเดลชั้นนำสามตัวทำงานแบบขนาน ได้คำตอบเดียวกลับมา เรียกมันในบรรทัดเดียว — หรือเขียนของคุณเอง
TL;DR. Claude Fable 5 ถูกถอดออกจากรายการ คำตอบไม่ใช่โมเดลที่ใหญ่กว่า — แต่มันคือ แผง: รันโมเดลชั้นนำหลายตัวพร้อมกัน แล้วให้ผู้ตัดสินส่งคืนคำตอบที่แข็งแกร่งที่สุด OrcaRouter จัดส่งสิ่งนี้สองวิธี: เราเตอร์ orcarouter/fusion ในตัว คุณเรียกใช้เหมือนโมเดลอื่นๆ และ Routing DSL เพื่อสร้างระบบของคุณเอง นี่คือคู่มือภาคสนามสำหรับทั้งสอง — พร้อมสูตรคัดลอกและวาง, ผู้ตัดสินห้าประเภท (รวมถึง synthesize, ฟิวชัน Mixture-of-Agents), และวิธีนำไปใช้โดยไม่ต้องเสี่ยงกับ SLA ของคุณ
ส่วนที่ 1 — เรียกมันในบรรทัดเดียว: เราเตอร์ Fusion ในตัว
Fable 5 ถูกยกเลิกและจำกัดการใช้งาน ดังนั้นจึงไม่สามารถเรียกใช้ได้อย่างกว้างขวางอีกต่อไป Fusion สร้างระดับนั้นขึ้นมาใหม่จากโมเดลที่คุณ ได้ ยังเรียกใช้ — เราเตอร์แบบ drop‑in ที่เข้ากันได้กับ OpenAI ซึ่งรันแผงของโมเดลแนวหน้าแบบขนานและส่งคืนคำตอบที่แข็งแกร่งที่สุด สามระดับที่คัดสรรมีให้ในทุกเวิร์กสเปซ:
สามระดับ Fusion (องค์ประกอบแผง × หน้าต่างบริบท)
Claude Opus 4.8 + GPT-5.5 + Gemini 3.1 Pro
หน้าต่างบริบท: 1,000,000
เหมาะสำหรับ: Fable-5 ระดับ Max intelligence
Claude Opus 4.8 + GPT-5.5
หน้าต่างบริบท: 1,000,000
เหมาะสำหรับ: การอนุมานที่สมดุลระดับ Fable-5
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สองตัวเลือกการออกแบบที่ควรค่าแก่การกล่าวถึง:
มันจะกระจายเฉพาะในงานจริงเท่านั้นเกท when: จะเปิดใช้งานแผงสำหรับพรอมต์ที่เกี่ยวกับโค้ด, เอเจนต์, การใช้เครื่องมือ, โค้ดหนาแน่น, หรือความยากสูง (difficulty >= 0.3); ส่วนอื่นๆ ทั้งหมดจะตกไปที่ค่าเริ่มต้นแบบสมดุลของเวิร์กสเปซ คุณจะจ่ายราคาแผงเฉพาะในจุดที่มันช่วยได้เท่านั้น ไม่ใช่กับ "สวัสดี"
ผู้พิพากษาให้คำตอบที่แท้จริงแบบตรงตามต้นฉบับ best_of_n เรียกใช้ผู้พิพากษา LLM (ในที่นี้คือ Opus 4.8 กับเทมเพลต best_answer_v1) ที่ เลือกผู้สมัครที่แข็งแกร่งที่สุดเพียงคนเดียวและส่งมอบตามที่เป็น — ไม่เคยเป็นการผสมที่เจือจาง ผลลัพธ์คือคำตอบของโมเดลจริงเสมอ
ส่วนที่ 2 — เลือก vs. รวม: best_of_n และ synthesize arbiter
The Fusion routers select. But OrcaRouter also ships a fuse strategy — synthesize, the Mixture-of-Agents pattern added in the routing engine (service/dispatch_parallel/synthesize.go). The difference is the whole game:
เอกสารแนบ 2 — เลือกเทียบกับรวม
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 — ทุกเลกจะถูกคิดค่าบริการ รวมถึง aggregator เป็นสายเรียกเพิ่มเติม
- OpenAI รูปแบบแชทเฉพาะใน V1 — ตัวรวบรวมส่งออกการตอบกลับแชทแบบ OpenAI; Claude/Gemini เนทีฟ ไคลเอนต์ลดระดับลงเป็น serve-first-successful (legs still billed).
ตัวรวบรวมต้องอยู่ในชุดผู้สมัครที่ได้รับอนุญาตของเราเตอร์ มิฉะนั้นจะเสื่อมประสิทธิภาพ
เมื่อใดควรใช้แบบไหน: best_of_n เมื่อคำตอบของโมเดลเดียวน่าจะ ทั้งหมด ถูกต้อง (code, factual Q&A) — คุณต้องการคำตอบที่สะอาดและเป็นจริง ใช้ synthesize เมื่อคำตอบเป็น ส่วนเสริมกัน (research, analysis, long-form) และการรวมจุดแข็งนั้นดีกว่าการใช้เพียงอย่างเดียว
ส่วนที่ 3 — สร้างของคุณเอง: คู่มือ Routing DSL
ไม่ต้องการแผงที่จัดสรรไว้ใช่ไหม? เริ่มจาก "Claude Fable 5 Level" templates ใน Routing DSL editor (พวกมันมาพร้อมกับทุกพื้นที่ทำงานและเหมือนกับ Fusion routers) แล้วปรับแต่งเอง มีรูปแบบการคัดลอกและวาง 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 — หยุดจ่ายเกินสำหรับ prompt ง่ายๆ → ประตูความยาก (รูปแบบ 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 — เอาชนะ tail latency และปัญหาขัดข้องของผู้ให้บริการ → แข่งขัน, ให้บริการผู้ตอบกลับรายแรก:
- 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 → shadow (ประเมินควบคู่ไปกับทราฟฟิกจริง, บันทึกสิ่งที่มัน จะ เลือก + ส่วนต่างต้นทุน, ให้บริการการเลือกจริง) → canary % (dsl_canary_pct 5 → 25 → 100, crypto-random ต่อคำขอ). ย้ายตามความคลาดเคลื่อนที่วัดได้, ย้อนกลับทันที.
เอกสารสรุป: ผู้ชี้ขาดห้าคน

เศรษฐศาสตร์และความซื่อสัตย์
การกระจายตามระดับความยากทำให้ค่าใช้จ่ายคงที่ (เพื่อเป็นตัวอย่าง; ต้นทุน = คณิตศาสตร์ราคาโทเค็นจริง) — ต้นทุนผสม = easy_share × cheap + hard_share × panel:

ภาระงานที่ง่าย 70% ทำงานแผงเต็มในราคาหนึ่งในสามของค่าใช้จ่ายแผงทั้งหมด.
