Documentation Index
Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
Use this file to discover all available pages before exploring further.
تعامل مع حدود المعدل من خلال التحكم في التزامن قبل أن تغادر الطلبات تطبيقك. عندما تُرجع CometAPI الاستجابة 429، أعد المحاولة باستخدام exponential backoff وjitter، ثم خفّض حركة الاندفاع إذا تكررت إعادة المحاولة.
تقييد التزامن
يوضح مثال Python التالي كيفية وضع حد أقصى لطلبات الدردشة المتزامنة باستخدام async semaphore:
import asyncio
import os
from openai import AsyncOpenAI
client = AsyncOpenAI(
api_key=os.environ["COMETAPI_KEY"],
base_url="https://api.cometapi.com/v1",
)
semaphore = asyncio.Semaphore(5)
async def ask(prompt):
async with semaphore:
completion = await client.chat.completions.create(
model="your-model-id",
messages=[{"role": "user", "content": prompt}],
)
return completion.choices[0].message.content
async def main():
prompts = ["Say hello.", "Write a title.", "Return one JSON key."]
results = await asyncio.gather(*(ask(prompt) for prompt in prompts))
print(results)
asyncio.run(main())
النتيجة هي مصفوفة من مخرجات النموذج:
[
"Hello.",
"A concise title",
"{\"key\":\"value\"}"
]
إعادة محاولة حدود المعدل
يوضح مثال JavaScript التالي كيفية إعادة محاولة استجابات 429 مع jitter:
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.COMETAPI_KEY,
baseURL: "https://api.cometapi.com/v1",
});
async function sleep(milliseconds) {
return new Promise((resolve) => setTimeout(resolve, milliseconds));
}
async function createCompletion() {
for (let attempt = 0; attempt < 5; attempt += 1) {
try {
return await client.chat.completions.create({
model: "your-model-id",
messages: [{ role: "user", content: "Say hello." }],
});
} catch (error) {
if (error.status !== 429 || attempt === 4) {
throw error;
}
const delay = Math.min(30000, 1000 * 2 ** attempt);
await sleep(delay + Math.random() * 1000);
}
}
}
const completion = await createCompletion();
console.log(completion.choices[0].message.content);
تحتوي الاستجابة الناجحة على chat completion عادي:
{
"choices": [
{
"message": {
"content": "Hello."
}
}
]
}
الأخطاء الشائعة
| الخطأ | الحل |
|---|
| طلبات متوازية غير محدودة | أضف semaphore أو queue أو worker pool. |
| إعادة محاولة جميع حالات الفشل | أعد المحاولة فقط مع 429 وإخفاقات الخادم المؤقتة. |
| عدم وجود مقاييس لكل model | سجّل المسار وmodel ID والحالة وزمن الاستجابة لكل طلب. |
| عاصفة إعادة المحاولة | أضف jitter وضع حدًا أقصى لتأخير إعادة المحاولة. |
روابط ذات صلة