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.
Beheer rate limits door concurrency te controleren voordat requests je app verlaten. Wanneer CometAPI 429 retourneert, probeer dan opnieuw met exponential backoff en jitter, en verlaag daarna burst-verkeer als herhaalde retries optreden.
Beperk concurrency
Het volgende Python-voorbeeld beperkt gelijktijdige chatrequests met een 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())
Het resultaat is een array met modeloutputs:
[
"Hello.",
"A concise title",
"{\"key\":\"value\"}"
]
Probeer rate limits opnieuw
Het volgende JavaScript-voorbeeld probeert 429-responses opnieuw met 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);
De succesvolle response bevat een normale chat completion:
{
"choices": [
{
"message": {
"content": "Hello."
}
}
]
}
Veelvoorkomende fouten
| Fout | Oplossing |
|---|
| Onbeperkte parallelle requests | Voeg een semaphore, wachtrij of worker pool toe. |
| Alle fouten opnieuw proberen | Probeer alleen 429 en tijdelijke serverfouten opnieuw. |
| Geen metrics per model | Log route, model ID, status en latency voor elke request. |
| Retry-storm | Voeg jitter toe en begrens de maximale retryvertraging. |
Gerelateerde links