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.
요청이 앱을 떠나기 전에 동시성을 제어하여 rate limit을 처리하세요. CometAPI가 429를 반환하면 exponential backoff와 jitter로 재시도하고, 재시도가 반복되면 버스트 트래픽을 줄이세요.
동시성 제한
다음 Python 예제는 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())
결과는 모델 출력의 배열입니다:
[
"Hello.",
"A concise title",
"{\"key\":\"value\"}"
]
rate limit 재시도
다음 JavaScript 예제는 jitter를 사용해 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."
}
}
]
}
일반적인 오류
| 오류 | 수정 방법 |
|---|
| 무제한 병렬 요청 | semaphore, queue 또는 worker pool을 추가하세요. |
| 모든 실패 재시도 | 429와 일시적인 서버 실패에 대해서만 재시도하세요. |
| model별 메트릭 없음 | 각 요청에 대해 route, model ID, status, latency를 기록하세요. |
| 재시도 폭주 | jitter를 추가하고 최대 재시도 지연 시간을 제한하세요. |
관련 링크