Zum Hauptinhalt springen

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.

Behandle Rate Limits, indem du die Concurrency kontrollierst, bevor Anfragen deine App verlassen. Wenn CometAPI 429 zurückgibt, versuche es mit exponentiellem Backoff und Jitter erneut und reduziere dann Burst-Traffic, falls wiederholt Retries auftreten.

Concurrency begrenzen

Das folgende Python-Beispiel begrenzt gleichzeitige Chat-Anfragen mit einem asynchronen 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())
Das Ergebnis ist ein Array von model-Ausgaben:
[
  "Hello.",
  "A concise title",
  "{\"key\":\"value\"}"
]

Rate Limits erneut versuchen

Das folgende JavaScript-Beispiel versucht 429-Antworten mit Jitter erneut:
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);
Die erfolgreiche Antwort enthält eine normale Chat Completion:
{
  "choices": [
    {
      "message": {
        "content": "Hello."
      }
    }
  ]
}

Häufige Fehler

FehlerLösung
Unbegrenzte parallele AnfragenFüge ein Semaphore, eine Queue oder einen Worker-Pool hinzu.
Alle Fehler erneut versuchenVersuche nur 429 und temporäre Serverfehler erneut.
Keine Metriken pro modelProtokolliere für jede Anfrage Route, model ID, Status und Latenz.
Retry-SturmFüge Jitter hinzu und begrenze die maximale Retry-Verzögerung.
Last modified on May 28, 2026