Naar hoofdinhoud gaan

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

FoutOplossing
Onbeperkte parallelle requestsVoeg een semaphore, wachtrij of worker pool toe.
Alle fouten opnieuw proberenProbeer alleen 429 en tijdelijke serverfouten opnieuw.
Geen metrics per modelLog route, model ID, status en latency voor elke request.
Retry-stormVoeg jitter toe en begrens de maximale retryvertraging.
Last modified on May 28, 2026