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.
リクエストがアプリを離れる前に同時実行数を制御して、レート制限に対応します。CometAPI が 429 を返した場合は、指数バックオフとジッターを使ってリトライし、リトライが繰り返し発生する場合はバーストトラフィックを抑えてください。
同時実行数を制限する
次の Python の例では、非同期セマフォを使って同時実行の chat リクエスト数を制限しています。
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())
結果は model の出力を格納した配列になります。
[
"Hello.",
"A concise title",
"{\"key\":\"value\"}"
]
レート制限をリトライする
次の JavaScript の例では、ジッターを使って 429 レスポンスをリトライします。
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);
成功したレスポンスには、通常のチャット補完が含まれます。
{
"choices": [
{
"message": {
"content": "Hello."
}
}
]
}
よくあるエラー
| エラー | 修正方法 |
|---|
| 無制限の並列リクエスト | セマフォ、キュー、またはワーカープールを追加します。 |
| すべての失敗をリトライする | 429 と一時的なサーバー障害のみをリトライします。 |
| model ごとのメトリクスがない | 各リクエストについて route、model ID、status、latency を記録します。 |
| リトライストーム | ジッターを追加し、最大リトライ遅延を制限します。 |
関連リンク