نستخدم ملفات تعريف الارتباط. تُبقيك ملفات تعريف الارتباط وتخزين المتصفح مسجّلًا للدخول وتتذكر تفضيلاتك. وبإذنك نقيس أيضًا كيفية استخدام الموقع. يمكنك في أي وقت. راجع سياسة ملفات تعريف الارتباط.

توجيه المزوّد والبدائل

نقاط النهاية

توجيه المزوّد والبدائل

اختر مزوّدي النماذج وارتّبهم وصفِّهم عبر الكائن provider، وانتقل تلقائيًا بين النماذج بالمصفوفة models عند الأعطال أو حدود الطلبات.

جرّبه في ساحة التجربة

تُقدَّم كثير من النماذج عبر عدة مزوّدين، ولكل منهم سعره وسرعته وسياسة بياناته. افتراضيًا توزَّع الطلبات بين المزوّدين بحسب السعر وزمن التشغيل، وتنتقل إلى مزوّد آخر عند فشل أحدهم. استخدم الكائن provider لتغيير ذلك، وmodels للانتقال بين نماذج مختلفة.

الكائن provider

الحقلالنوعالوصف
orderstring[]المزوّدون الذين تُجرَّب أولًا بالترتيب، مثل ["Anthropic", "Amazon Bedrock"].
allow_fallbacksbooleanالقيمة false تمنع الطلب من الذهاب إلى مزوّدين خارج order أو only (الافتراضي true).
onlystring[]اسمح بهؤلاء المزوّدين فقط.
ignorestring[]لا تستخدم هؤلاء المزوّدين أبدًا.
sortstring"price" أو "throughput" أو "latency" بدل توزيع الحمل.
data_collectionstringالقيمة "deny" تستبعد المزوّدين الذين قد يخزّنون المطالبات أو يتدربون عليها. الافتراضي "allow".
require_parametersbooleanاستخدم فقط المزوّدين الذين يدعمون كل معامل في طلبك (مثل tools وresponse_format).
quantizationsstring[]الدقّات المسموح بها، مثل ["fp8", "bf16"].
max_priceobjectحدود قصوى للسعر بالدولار لكل مليون رمز، مثل { "prompt": 1, "completion": 3 }.
{
  "model": "meta-llama/llama-3.3-70b-instruct",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "order": ["Groq", "Fireworks"],
    "allow_fallbacks": true,
    "data_collection": "deny",
    "sort": "throughput"
  }
}

المتغير :nitro اختصار لـ sort: "throughput"، و:floor اختصار لـ sort: "price". راجع معرّفات النماذج.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

const result = await client.chat.completions.create({
  "model": "openai/gpt-5-mini",
  "messages": [
    {
      "role": "user",
      "content": "Explain vector databases in two sentences."
    }
  ]
});
console.log(result.choices[0].message.content);

النماذج الاحتياطية عبر models

مرّر قائمة نماذج. إذا فشل الأول (انقطاع أو حد طلبات أو إشراف على المحتوى أو خطأ طول السياق) يُجرَّب التالي:

{
  "models": ["anthropic/claude-sonnet-4.5", "openai/gpt-5-mini", "google/gemini-2.5-flash"],
  "messages": [{ "role": "user", "content": "Summarize this ticket." }]
}
  • الحقل model اختياري عند ضبط models. وإذا أرسلت الاثنين يُجرَّب model أولًا.
  • يجب أن يجتاز كل نموذج في القائمة فحوص البوابة قبل إرسال الطلب: أن يكون موجودًا ومفعّلًا، وضمن قائمة النماذج المسموح بها لمفتاحك، ومشمولًا في خطتك. نموذج واحد يفشل في الفحوص يرفض الطلب كله (403 model_not_allowed أو 403 plan_required أو 404 model_not_found).
  • تُحاسَب فقط على النموذج الذي أجاب، بسعره. يخبرك الحقل model في الاستجابة بأيّها كان.

الاستجابة

{
  "id": "gen-1760000000-route",
  "model": "openai/gpt-5-mini",
  "provider": "OpenAI",
  "choices": [{ "index": 0, "finish_reason": "stop", "message": { "role": "assistant", "content": "..." } }],
  "usage": { "prompt_tokens": 140, "completion_tokens": 60, "total_tokens": 200, "cost": 0.000155 }
}

يبيّن provider أي مزوّد خدم الطلب. يعرض البحث عن عملية توليد تفاصيل التوجيه كاملة.

الأخطاء

إذا لم يطابق أي مزوّد مرشّحاتك (مثل only مع require_parameters)، يُعيد المزوّد 404 مع الرسالة "No endpoints found". بقية الأخطاء هي نفسها في Chat completions. راجع الأخطاء.