نقاط النهاية
توجيه المزوّد والبدائل
اختر مزوّدي النماذج وارتّبهم وصفِّهم عبر الكائن provider، وانتقل تلقائيًا بين النماذج بالمصفوفة models عند الأعطال أو حدود الطلبات.
جرّبه في ساحة التجربةتُقدَّم كثير من النماذج عبر عدة مزوّدين، ولكل منهم سعره وسرعته وسياسة بياناته. افتراضيًا توزَّع الطلبات بين المزوّدين بحسب السعر وزمن التشغيل، وتنتقل إلى مزوّد آخر عند فشل أحدهم. استخدم الكائن provider لتغيير ذلك، وmodels للانتقال بين نماذج مختلفة.
الكائن provider
| الحقل | النوع | الوصف |
|---|---|---|
order | string[] | المزوّدون الذين تُجرَّب أولًا بالترتيب، مثل ["Anthropic", "Amazon Bedrock"]. |
allow_fallbacks | boolean | القيمة false تمنع الطلب من الذهاب إلى مزوّدين خارج order أو only (الافتراضي true). |
only | string[] | اسمح بهؤلاء المزوّدين فقط. |
ignore | string[] | لا تستخدم هؤلاء المزوّدين أبدًا. |
sort | string | "price" أو "throughput" أو "latency" بدل توزيع الحمل. |
data_collection | string | القيمة "deny" تستبعد المزوّدين الذين قد يخزّنون المطالبات أو يتدربون عليها. الافتراضي "allow". |
require_parameters | boolean | استخدم فقط المزوّدين الذين يدعمون كل معامل في طلبك (مثل tools وresponse_format). |
quantizations | string[] | الدقّات المسموح بها، مثل ["fp8", "bf16"]. |
max_price | object | حدود قصوى للسعر بالدولار لكل مليون رمز، مثل { "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. راجع الأخطاء.