توافق SDK وإعداد عنوان URL الأساسي
قم بتوصيل كود العميل الحالي الخاص بك عن طريق توجيهه إلى نقطة النهاية المخصصة الخاصة بنا. هذا openai compatible API يقبل الرؤوس القياسية وإعدادات SDK بدون تغييرات في الكود. تحتاج فقط إلى تحديث عنوان URL الأساسي وتقديم مفتاح API الخاص بك من لوحة التحكم.
https://api.openrouterratelimits.com/v1 هو نقطة الدخول الوحيدة لجميع الطلبات. يعتمد المصادقة على مخطط رمز الحامل القياسي الموجود في معظم مكتبات LLM الحديثة. مرر مفتاحك في Authorization رأس للتحقق من هويتك. يعمل هذا الإعداد مع أي عميل يتوقع واجهة على غرار OpenAI، مما يجعل الهجرة فورية للفرق التي سئمت من احتكار المزود.
- URL الأساسي:
https://api.openrouterratelimits.com/v1 - رأس المصادقة:
Authorization: Bearer YOUR_API_KEY - معرف النموذج:
uncensored
استجابات التدفق عبر أحداث الإرسال عبر الخادم (SSE)
فعّل البث عن طريق تعيين stream: true في حمولة الطلب الخاصة بك. تُعيد واجهة برمجة التطبيقات أحداث مُرسلة من الخادم (SSE) لتسليم الرموز في الوقت الفعلي. تحتوي كل شريحة على النص المُولّد حتى تتضمن الشريحة الأخيرة إحصائيات الاستخدام. يحافظ هذا النهج على استجابة واجهة المستخدم حتى مع نوافذ السياق الطويلة.
يُعد البث المباشر مثاليًا لواجهات الدردشة أو سيناريوهات لعب الأدوار حيث تلزم الاستجابة السريعة. لا تحتاج إلى الانتظار حتى اكتمال النص الكامل لعرضه. يحتوي الشق الأخير دائمًا على عدد الرموز المميزة للفوترة الدقيقة. حتى أثناء حدوث أخطاء أثناء البث، تُعاد أكواد حالة HTTP الصحيحة للتعامل الفوري معها.
استدعاء الوظائف ووضع JSON
استخدم المخرجات المهيكلة لاستخراج البيانات الموثوق أو التكامل مع الأدوات. فعّل response_format مع {"type": "json_object"} لإجبار الامتثال لـ JSON. هذا الوضع ضروري لتحليل الهياكل المتداخلة المعقدة دون منطق تنظيف إضافي. يعمل استدعاء الأدوات جنبًا إلى جنب مع توليد النص القياسي لعمليات عمل الوكلاء الديناميكية.
عرّف أدواتك في tools مصفوفة وحدد tool_choice للتطبيق الصارم. تُرجع النموذج استدعاءات الوظائف بتنسيق OpenAI القياسي. تدعم هذه الميزة كلًا من استدعاءات الأداة الفردية والمتعددة ضمن دور واحد. استخدم هذا لبناء وكلاء يتفاعلون مع واجهات برمجة التطبيقات الخارجية أو قواعد البيانات بشكل موثوق.
إدارة التوكنات والمعلمات
تحكّم في سلوك التوليد باستخدام معاملات قياسية مثل temperature, top_p، و stop. تدعم نافذة السياق ما يصل إلى 100,000 رمز للمدخلات والمخرجات مجتمعة. هذا يسمح بسياق تاريخي موسع أو معالجة مستندات كبيرة في طلب واحد.
تعيين max_tokens لتقييد طول المخرجات، مع افتراض 2,048 إذا لم يتم تحديدها. يتعامل النموذج مع presence_penalty و frequency_penalty للتحكم الأسلوبي. يُحسب استخدام الرموز بناءً على عدد المدخلات والمخرجات الفعلية. لا تستهلك الأخطاء الرموز، مما يضمن الفوترة العادلة للطلبات الفاشلة.
فهم حدود معدل الطلبات لكل مفتاح
يدعم كل مفتاح API 300 طلب في الدقيقة مع حد تزامن يبلغ 8 طلبات متزامنة. ينطبق هذا الحد على كل مفتاح، لذا فإن إنشاء مفاتيح متعددة يوسع معدل نقل البيانات بشكل خطي. الحد الأقصى لحجم جسم الطلب هو 8 ميجابايت، وهو يتسع ضمن نافذة السياق لمعظم حالات الاستخدام.
تعيد حدود المعدلات تعيينها باستمرار بناءً على نافذة منزلقة. إذا تجاوزت الحد، ستعيد واجهة برمجة التطبيقات خطأ 429. قم بترقية رصيدك المدفوع مسبقاً للحفاظ على الوصول ذي الأولوية. على عكس الطبقات المشتركة، لا تعاني خوادمنا المخصصة من ضوضاء الجيران. راقب لوحة استخدامك للبقاء ضمن هذه الحدود لأداء متسق.
استكشاف الأخطاء الشائعة
التعامل مع الأخطاء من خلال التحقق من رمز حالة HTTP وجسم الاستجابة. يشير خطأ 401 إلى مفتاح API غير صالح أو مفقود. أعد إنشاء مفتاحك من لوحة التحكم إذا فشل المصادقة. يعني خطأ 402 استنفاد رصيدك المدفوع مسبقاً؛ قم بشحن الرصيد عبر العملات المشفرة لاستئناف الخدمة.
يشير خطأ 429 إلى أنك تجاوزت حدود المعدل. قلل من وتيرة طلباتك أو وزع أحمال العمل عبر مفاتيح متعددة. لا تحسب واجهة برمجة التطبيقات الرموز لهذه الأخطاء، لذا لا تخسر الرصيد لإعادة المحاولة. تأكد من أن مكتبة العميل الخاصة بك تتعامل مع إعادة المحاثة بزيادة زمنية أسية للمتانة.
cURL
curl https://api.openrouterratelimits.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Process one million logs"}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouterratelimits.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouterratelimits.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);التدفق
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)