الانتقال إلى المحتوى الرئيسي
يستطيع OrcaRouter تجربة عدة نماذج بالترتيب حتى ينجح أحدها. وهذا مفيد للصمود (إذا كان أحد المزوّدين يخنق الطلبات أو متوقفًا) وللتحكّم في التكلفة (تفضيل نموذج أرخص، ثم الرجوع إلى نموذج أقوى عند الحاجة).

طريقة الاستخدام

ضع قائمة مرتّبة من معرّفات النماذج في extra_body.models واضبط extra_body.route على "fallback". حقل model الأساسي يبقى مهمًّا — فهو المحاولة الأولى — لكن OrcaRouter يتجاهله لصالح السلسلة إذا كانت السلسلة موجودة.
response = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "..."}],
    extra_body={
        "models": ["openai/gpt-4o", "anthropic/claude-haiku-4.5", "google/gemini-2.5-pro"],
        "route": "fallback",
    },
)

القواعد

  • الحدّ الأقصى 5 نماذج في السلسلة. ما زاد يُقتطع بصمت.
  • الموصى به: جميع النماذج في السلسلة يجب أن تكون من نفس نوع النقطة (كلها chat أو كلها صور). خلط نموذج chat بنموذج صور لن يُعطّل البوّابة، لكن النموذج الاحتياطي الذي يخدم الطلب فعلًا يجب أن يطابق النقطة التي استدعيتها (مثلًا إذا استدعيت /v1/chat/completions، فلا يكون قابلاً للاستخدام في السلسلة سوى نماذج chat).
  • سلوك الاحتياط:
    • مدخلات orcarouter/{name} التي لا يمكن حلّها (اسم غير صالح، موجّه معطّل) تُتجاوز بصمت.
    • النماذج التي لا يستطيع المفتاح الطالب الوصول إليها (عدم تطابق قائمة النماذج المسموح بها) تُتجاوز بصمت.
    • عندما يفشل النموذج الأساسي على جانب المزوّد (5xx / 429 / خطأ شبكة)، تُجرَّب المدخلة التالية في السلسلة.
    • يفشل الطلب فقط عندما تُستنفد كل مدخلات السلسلة.
    • تحفظ خاص بالبثّ: بمجرّد إرسال أي بايت من الاستجابة إلى العميل، لم يعد بإمكان الاحتياط أن يتدخّل — فإذا انقطع المزوّد في منتصف البثّ، فسيرى العميل بثًّا مقطوعًا، لا إعادة محاولة شفّافة على النموذج التالي.
  • تتمّ الفوترة على النموذج الذي خدم فعلًا الاستجابة، بسعر ذلك النموذج — لا بسعر النموذج الأساسي.
  • يجب أن تكون قيمة extra_body.route تمامًا "fallback" لكي تنشط السلسلة. أي قيمة أخرى (أو غيابها) → تُتجاهل السلسلة ويُستخدم فقط حقل model الأعلى.

كيف تعرف أيّ نموذج خدم الاستجابة

تفقّد ترويستَي الاستجابة X-Orca-Fallback-Level وX-Orca-Fallback-Model. انظر ترويسات الاستجابة.
response = client.chat.completions.with_raw_response.create(...)
served_by = response.headers.get("X-Orca-Fallback-Model", "primary")
# "primary" means level 0; otherwise the fallback model name

متى لا تستخدم هذا

إذا أردت أن يختار OrcaRouter تلقائيًا أرخص نموذج متاح دون كتابة سلسلة، استخدم orcarouter/auto بدلاً من ذلك. سلاسل الاحتياط مخصّصة للحالات التي تريد فيها تحكّمًا صريحًا في الترتيب.