Hopp til hovedinnhold

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.

Håndter rate limits ved å kontrollere samtidighet før forespørsler forlater appen din. Når CometAPI returnerer 429, prøv på nytt med eksponentiell backoff og jitter, og reduser deretter burst-trafikk hvis gjentatte forsøk skjer.

Begrens samtidighet

Følgende Python-eksempel begrenser samtidige chat-forespørsler med en asynkron semafor:
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())
Resultatet er en matrise med modellutdata:
[
  "Hello.",
  "A concise title",
  "{\"key\":\"value\"}"
]

Prøv rate limits på nytt

Følgende JavaScript-eksempel prøver 429-svar på nytt med 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);
Det vellykkede svaret inneholder en vanlig chat completion:
{
  "choices": [
    {
      "message": {
        "content": "Hello."
      }
    }
  ]
}

Vanlige feil

FeilLøsning
Ubegrensede parallelle forespørslerLegg til en semafor, kø eller worker pool.
Prøver alle feil på nyttPrøv bare 429 og midlertidige serverfeil på nytt.
Ingen metrics per modellLogg rute, model ID, status og latenstid for hver forespørsel.
Retry-stormLegg til jitter og sett en øvre grense for maksimal retry-forsinkelse.

Relaterte lenker

Last modified on May 28, 2026