Przejdź do głównej treści

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.

Obsługuj limity szybkości, kontrolując współbieżność, zanim żądania opuszczą Twoją aplikację. Gdy CometAPI zwróci 429, ponów próbę z wykładniczym backoffem i jitterem, a następnie ogranicz ruch szczytowy, jeśli powtarzające się ponowienia nadal występują.

Ogranicz współbieżność

Poniższy przykład w Python ogranicza liczbę równoczesnych żądań czatu za pomocą asynchronicznego semafora:
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())
Wynikiem jest tablica odpowiedzi modelu:
[
  "Hello.",
  "A concise title",
  "{\"key\":\"value\"}"
]

Ponawianie przy limitach szybkości

Poniższy przykład w JavaScript ponawia odpowiedzi 429 z jitterem:
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);
Pomyślna odpowiedź zawiera standardowe chat completion:
{
  "choices": [
    {
      "message": {
        "content": "Hello."
      }
    }
  ]
}

Typowe błędy

BłądRozwiązanie
Nieograniczona liczba równoległych żądańDodaj semafor, kolejkę lub pulę workerów.
Ponawianie wszystkich niepowodzeńPonawiaj tylko 429 i tymczasowe błędy serwera.
Brak metryk per modelRejestruj ścieżkę, model ID, status i opóźnienie dla każdego żądania.
Burza ponowieńDodaj jitter i ogranicz maksymalne opóźnienie ponowienia.

Powiązane linki

Last modified on May 28, 2026