Láimhseáil Earráide
Filleann iarratas a theipeann cód stádais HTTP agus corp JSON le cineál earráide agus teachtaireacht. Liostaíonn an leathanach seo gach stádas, taispeánann sé corp earráide gach formáid API agus insíonn sé cé acu earráidí is fiú a sheoladh arís.
Ardaíonn na SDKanna réad earráide a iompraíonn an cód stádais agus réimsí an choirp. Ainmníonn an t-iarratas seo múnla nach bhfuil ann:
import openai
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
try:
client.chat.completions.create(
model="no-such-model",
messages=[{"role": "user", "content": "Hello"}],
)
except openai.APIStatusError as error:
print(error.status_code) # 400
print(error.type) # invalid_request_error
print(error.body["message"]) # unknown model: no-such-model
print(error.response.headers.get("x-request-id")) # the id of this request import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
try {
await client.chat.completions.create({
model: "no-such-model",
messages: [{ role: "user", content: "Hello" }],
});
} catch (error) {
if (!(error instanceof OpenAI.APIError)) throw error;
console.log(error.status); // 400
console.log(error.type); // invalid_request_error
console.log(error.error.message); // unknown model: no-such-model
} curl -i https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "no-such-model",
"messages": [{"role": "user", "content": "Hello"}]
}' Filleann sé stádas 400 agus an corp seo:
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} Corp na hearráide
Tá dhá chorp ann. Freagraíonn /v1/messages i bhformáid Anthropic; freagraíonn gach críochphointe eile i bhformáid OpenAI. Sa dá cheann, tá na sonraí in error.type agus error.message, mar sin freastalaíonn léitheoir amháin ar gach críochphointe.
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} | Réimse | Cineál | Cur síos |
|---|---|---|
error.type | string | Cineál na hearráide. Féach Cineálacha earráide thíos. |
error.message | string | Abairt do dhuine. Tá na téacsanna sna táblaí thíos cobhsaí seachas a gcodanna athraitheacha, a thaispeántar mar <id>, <n> nó …. |
error.code | string | null | Ann ar roinnt earráidí de chuid fhormáid OpenAI: invalid_api_key le 401, request_too_large le 413, context_length_exceeded nuair a bhíonn comhrá rófhada, seachas sin null nó as láthair. Socraigh ar an stádas agus ar error.type ar dtús agus caith le code mar bhreis. |
error.param | null | Ann ar na hearráidí céanna le code. null i gcónaí. |
type | string | Formáid Anthropic amháin. error i gcónaí. |
Cineálacha earráide
| Cineál | Stádais | Cur síos |
|---|---|---|
invalid_request_error | 400, 413, 415, 422 | Tá an t-iarratas féin mícheart: réimse, an corp, an id múnla nó ionchur nach nglacann an múnla leis. Athraigh an t-iarratas sula seolann tú arís é. |
authentication_error | 401 | Tá an eochair API ar iarraidh, anaithnid nó cúlghairthe. |
not_found_error | 404 | Níl an cosán ann. |
rate_limit_error | 429 | Ní chlúdaíonn an t-iarmhéid an t-iarratas, stop cosaint tuile é, nó tá an múnla gnóthach. Insíonn an teachtaireacht cé acu. |
api_error | 500, 502, 503, 504 | Bhí an t-iarratas ceart agus tá an teip ar ár dtaobh féin. Seol arís é. |
server_error | 500 | Bhí an t-iarratas ceart agus tá an teip ar ár dtaobh féin. Seol arís é. |
Cóid stádais
| Stádas | Cineál | Teachtaireacht | Cathain |
|---|---|---|---|
400 | invalid_request_error | Failed to parse the request body as JSON: … | Ní JSON bailí é an corp. |
400 | invalid_request_error | unknown model: <id> | Ní id foilsithe é model. Ar /v1/responses freisin nuair a bhíonn model ar iarraidh. |
400 | invalid_request_error | No user message provided | Leibhéil Shannon: níl aon téacs úsáideora san iarratas. |
400 | invalid_request_error | <id> does not accept image input | Seoladh íomhá chuig múnla open-weight óstáilte gan ionchur íomhá. |
400 | invalid_request_error | audio and video input are not supported by any hosted model | Seoladh cuid fuaime nó físe chuig múnla open-weight óstáilte. |
400 | invalid_request_error | <id> does not accept response_format | Iarradh aschur struchtúrtha ar mhúnla open-weight óstáilte nach bhfuil aige. |
400 | invalid_request_error | <id> does not accept response_format json_schema; use json_object | Seoladh scéim JSON chuig múnla open-weight óstáilte nach nglacann ach le json_object. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Níl an iarracht réasúnaíochta ar cheann de na luachanna liostaithe. Múnlaí open-weight óstáilte. |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <id> | Iarradh comhaireamh token ar mhúnla lasmuigh de na múnlaí open-weight óstáilte. |
401 | authentication_error | Missing authentication | Níor seoladh aon eochair API. |
401 | authentication_error | Invalid API key | Tá an eochair anaithnid, cuireadh ceann níos nuaí ina háit, nó cúlghaireadh í. |
404 | not_found_error | Not Found | Níl an cosán ann, mar shampla /v1/embeddings. |
405 | api_error | Method Not Allowed | Tá an cosán ann ach ní leis an modh HTTP seo. |
413 | invalid_request_error | Failed to buffer the request body: … | Tá corp an iarratais níos mó ná 32 MiB. |
415 | invalid_request_error | Expected request with `Content-Type: application/json` | Tá an ceanntásc Content-Type ar iarraidh nó ní application/json é. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | Tá réimse riachtanach ar iarraidh, mar messages, nó tá cineál JSON mícheart ar réimse. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | Tá teorainn aschuir an iarratais níos mó ná an méid atá fágtha d'iarmhéid. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Cosaint tuile: níos mó ná 120 iarratas in aon nóiméad amháin ar do chuntas. Is é <n> líon na soicindí go dtí go gcríochnaíonn an nóiméad. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1 ar /v1/chat/completions agus /v1/messages: tá glaonna Shannon Coder do phlean na fuinneoige 4 uair an chloig reatha úsáidte. |
429 | rate_limit_error | Shannon routes are temporarily busy. Please retry. | Tá an múnla gnóthach faoi láthair. |
500 | server_error | The model backend failed to answer. Please retry. | Níor tháirg an múnla freagra. |
500 | server_error | An internal error occurred. Please retry. | Teip inmheánach agus an t-iarratas á ullmhú. |
502 | api_error | The model backend failed to answer. Please retry. | Níor tháirg an múnla freagra. Teaghlach Shannon 3 agus múnlaí open-weight óstáilte. |
503 | api_error | Could not verify your quota right now. Please retry. | Níorbh fhéidir d'iarmhéid a léamh faoi láthair. |
503 | api_error | token counting is temporarily unavailable for this model | Níl comhaireamh token ar fáil don mhúnla seo faoi láthair. |
504 | api_error | upstream timed out | Thóg múnla open-weight óstáilte níos faide ná teorainn ama iarratais nach sruthaítear. |
Ritheann seiceálacha san ord seo: eochair API, corp iarratais, id múnla, cosaint tuile, iarmhéid. Dá bhrí sin, filleann iarratas le heochair mhícheart agus corp mícheart 401. Ní mhuirearaítear iarratas a dhiúltaítear le stádas 4xx.
Iarmhéid agus cosaint tuile
Freastalaítear ar gach iarratas ar an gcaoi chéanna: níl aon leibhéil ráta ann agus níl aon chuóta API ar leith ann. Fós féin, féadfaidh dhá rud 429 a fhreagairt, an dá cheann leis an gcineál rate_limit_error. Idirdhealaíonn an teachtaireacht iad.
Iarmhéid
Is é d'iarmhéid liúntas an phlean don lá inniu, a athshocraítear ag 00:00 UTC, agus ina dhiaidh sin do chreidmheas ceannaithe. Tarraingíonn comhrá agus an API as an iarmhéid céanna.
Cuireann gach iarratas a theorainn aschuir i leataobh ar dtús: max_tokens, nó max_output_tokens ar /v1/responses, 4,096 nuair nach seolann tú ceachtar. Nuair a bhíonn an freagra críochnaithe, cuirtear an méid a d'úsáid an t-iarratas in ionad an méid a cuireadh i leataobh. Mura n-oireann an méid don iarmhéid atá fágtha, filleann an t-iarratas Quota exceeded sular tosaíonn an múnla.
Cuireann iarratais a ritheann ag an am céanna a méid féin i leataobh. Dá bhrí sin, is féidir le go leor iarratas comhthreomhar le max_tokens ard an t-iarmhéid a úsáid suas ar feadh meandair, fiú nuair a bhíonn gach freagra gearr. Cuireann max_tokens níos ísle níos lú i leataobh.
Cosaint tuile
Ceadaíonn cosaint tuile 120 iarratas in aghaidh an nóiméid in aghaidh an chuntais. Comhaireann sí an cuntas, ní an eochair, thar /v1/chat/completions, /v1/responses agus /v1/messages le chéile. Tosaíonn an nóiméad le d'iarratas ar dtús.
Filleann iarratas uimhir 121 laistigh den nóiméad sin Too many requests. Retry in <n>s. agus ní chosnaíonn sé faic. Comhairtear iarratais dhiúltaithe freisin, mar sin fanann cliant a sheolann arís gan fanacht diúltaithe go dtí go mbíonn an nóiméad thart. Fan na <n> soicind ón teachtaireacht.
Ní dhiúltaítear d'iarratais a sheoltar comhthreomhar toisc go bhfuil siad comhthreomhar. Fanann siad sa scuaine agus freagraítear iad ar a seal.
Ní chomhairtear GET /v1/models ná na críochphointí comhairimh token.
Tuilleadh faoi theorainneacha agus iarmhéid, agus cá bhfeiceann tú d'iarmhéid agus d'úsáid féin: Teorainneacha agus iarmhéid Eochracha agus úsáid
Cad ba cheart a athiarraidh
Ná seol iarratas arís ach amháin nuair a d'fhéadfadh an t-iarratas céanna éirí leis. Déanann SDKanna OpenAI agus Anthropic triail eile faoi dhó cheana féin ar fhreagraí 429 agus 5xx astu féin; socraigh max_retries (maxRetries i JavaScript) chun é sin a athrú.
| Earráid | An seolfar arís? | Conas |
|---|---|---|
400, 404, 405, 413, 415, 422 | Ná seol. Ceartaigh an t-iarratas ar dtús. | Ainmníonn an teachtaireacht an réimse, an múnla nó an t-ionchur atá mícheart. |
401 | Ná seol. Úsáid eochair bhailí. | Cruthaigh nó athchuir an eochair ar an leathanach Eochracha agus úsáid. |
429 Too many requests | Seol, tar éis na fanachta. | Fan líon na soicindí sa teachtaireacht, ansin seol an t-iarratas céanna. |
429 Quota exceeded | Ní mar atá sé. | Ísligh max_tokens, fan le hathshocrú laethúil ag 00:00 UTC, nó cuir creidmheas leis. |
429 Shannon Coder call quota reached | Seol, san fhuinneog dár gcionn. | Tosaíonn na fuinneoga gach 4 uair an chloig ó 00:00 UTC. Freagraíonn múnla eile láithreach. |
429 … temporarily busy | Seol. | Fan cúpla soicind, ansin níos faide gach iarracht bhreise. |
500, 502, 503 | Seol. | Fan 1 soicind, ansin 2, 4 agus 8. Stop tar éis cúpla iarracht agus tuairiscigh an id iarratais. |
504 | Seol. | Seol é le stream socraithe go true: baineann an teorainn ama le freagraí nach sruthaítear. |
Lúb athiarrachta a leanann an tábla seo:
import re
import time
import openai
from openai import OpenAI
# max_retries=0: this loop does the retrying, the SDK does not add its own.
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1", max_retries=0)
def create_with_retry(attempts=5, **request):
for attempt in range(attempts):
try:
return client.chat.completions.create(**request)
except openai.RateLimitError as error:
text = str(error)
flood = re.search(r"Retry in (\d+)s", text)
if flood:
time.sleep(int(flood.group(1))) # flood protection: wait out the minute
elif "temporarily busy" in text:
time.sleep(2 ** attempt)
else:
raise # balance: a wait of seconds does not help
except (openai.InternalServerError, openai.APIConnectionError):
time.sleep(2 ** attempt) # 1, 2, 4, 8 seconds
raise RuntimeError("the request failed after all attempts")
response = create_with_retry(
model="shannon-3",
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content) import OpenAI from "openai";
// maxRetries: 0 — this loop does the retrying, the SDK does not add its own.
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1", maxRetries: 0 });
const sleep = (seconds) => new Promise((resolve) => setTimeout(resolve, seconds * 1000));
async function createWithRetry(request, attempts = 5) {
for (let attempt = 0; attempt < attempts; attempt++) {
try {
return await client.chat.completions.create(request);
} catch (error) {
const text = String(error.message);
const flood = text.match(/Retry in (\d+)s/);
if (error.status === 429 && flood) {
await sleep(Number(flood[1])); // flood protection: wait out the minute
} else if (error.status === 429 && text.includes("temporarily busy")) {
await sleep(2 ** attempt);
} else if (error.status >= 500 || error instanceof OpenAI.APIConnectionError) {
await sleep(2 ** attempt); // 1, 2, 4, 8 seconds
} else {
throw error; // wrong request, wrong key or balance
}
}
}
throw new Error("the request failed after all attempts");
}
const response = await createWithRetry({
model: "shannon-3",
messages: [{ role: "user", content: "Hello" }],
});
console.log(response.choices[0].message.content); Earráidí laistigh de shruth
Tá stádas 200 ag sruth óna chéad bheart. Tagann teip ina dhiaidh sin mar imeacht laistigh den sruth: píosa le ball error ar /v1/chat/completions, imeacht error ar /v1/messages, imeacht response.failed nó error ar /v1/responses. Leanann imeachtaí deiridh an tsrutha fós. Caith leis an bhfreagra sin mar theip agus seol an t-iarratas arís, mar a dhéanfá le stádas 5xx.
Tuairiscítear comhrá atá níos faide ná fuinneog comhthéacs an mhúnla ar an mbealach seo, leis an gcineál invalid_request_error agus an cód context_length_exceeded. Giorraigh an comhrá sula seolann tú arís é.
Déantar cur síos ar na frámaí cruinne le sruthú. Sruthú
Ids iarratais
Tá ceanntásc x-request-id ar gach freagra, earráidí san áireamh. Is é an luach a sheol tú i do cheanntásc x-request-id féin é, nó 12 charachtar heicsidheachúlacha mura seol tú aon cheann. Logáil é, agus luaigh é nuair a iarrann tú cabhair le hiarratas.