Gafee gaa n'ọdịnaya
Njikwa njehie

Njikwa njehie

Request dara na-eweghachi HTTP status code na JSON body nwere error type na ozi. Peeji a depụtara status niile, na-egosi error body nke API format ọ bụla, ma na-ekwu njehie ndị kwesịrị ịzighachi.

SDKs na-ebili error object nke nwere status code na fields nke body. Request a na-akpọ model na-adịghị adị:

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

Ọ na-eweghachi status 400 na body a:

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}

Error body

Enwere bodies abụọ. /v1/messages na-aza n'Anthropic format; endpoint ọ bụla ọzọ na-aza n'OpenAI format. N'abụọ, nkọwa dị na error.type na error.message, ya mere otu reader na-ejere endpoints niile ozi.

401 OpenAI format
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
401 Anthropic format
{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key"
  }
}
Field Ụdị Nkọwa
error.type string Ụdị njehie. Lee Error types n'okpuru.
error.message string Okwu maka mmadụ. Ederede dị n'ime tebụl ndị dị n'okpuru kwụsiri ike ruo akụkụ ha na-agbanwe, egosiri dị ka <id>, <n> ma ọ bụ ….
error.code string | null Dị na ụfọdụ njehie nke OpenAI format: invalid_api_key nwere 401, request_too_large nwere 413, context_length_exceeded mgbe mkparịta ụka toro ogologo, ma ọ bụghị null ma ọ bụ adịghị. Buru ụzọ kpebie site na status na error.type, were code dị ka ihe mgbakwunye.
error.param null Dị na njehie ndị ahụ dị ka code. Mgbe niile null.
type string Anthropic format naanị. Mgbe niile error.

Error types

Ụdị Status Nkọwa
invalid_request_error 400, 413, 415, 422 Request n'onwe ya adịghị mma: field, body, model id ma ọ bụ input model anaghị anara. Gbanwee request ahụ tupu ị zighachi ya.
authentication_error 401 API key adịghị, amabeghị ya ma ọ bụ a kagburu ya.
not_found_error 404 Path ahụ adịghị.
rate_limit_error 429 Balance adịghị ekpuchi request ahụ, flood protection kwụsịrị ya, ma ọ bụ model nọ n'ọrụ. Ozi ahụ na-ekwu nke ọ bụ.
api_error 500, 502, 503, 504 Request ahụ dị mma, ọdịda ahụ si n'akụkụ anyị. Zighachi ya.
server_error 500 Request ahụ dị mma, ọdịda ahụ si n'akụkụ anyị. Zighachi ya.

Status codes

Status Ụdị Ozi Mgbe
400 invalid_request_error Failed to parse the request body as JSON: … Body abụghị JSON ziri ezi.
400 invalid_request_error unknown model: <id> model abụghị id e bipụtara. Na /v1/responses ọ bụkwa mgbe model adịghị.
400 invalid_request_error No user message provided Shannon tiers: request enweghị user text.
400 invalid_request_error <id> does not accept image input Zipụrụ image na hosted open-weight model na-enweghị image input.
400 invalid_request_error audio and video input are not supported by any hosted model Zipụrụ audio ma ọ bụ video part na hosted open-weight model.
400 invalid_request_error <id> does not accept response_format Arịrịọ structured output site na hosted open-weight model na-enweghị ya.
400 invalid_request_error <id> does not accept response_format json_schema; use json_object Zipụrụ JSON schema na hosted open-weight model na-anara json_object naanị.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Reasoning effort abụghị otu n'ime uru ndị depụtara. Hosted open-weight models.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <id> Arịrịọ token counting maka model na-abụghị hosted open-weight models.
401 authentication_error Missing authentication Ezipụghị API key.
401 authentication_error Invalid API key Amabeghị key ahụ, key ọhụrụ dochiri ya, ma ọ bụ a kagburu ya.
404 not_found_error Not Found Path ahụ adịghị, dịka /v1/embeddings.
405 api_error Method Not Allowed Path ahụ dị ma ọ bụghị na HTTP method a.
413 invalid_request_error Failed to buffer the request body: … Request body buru ibu karịa 32 MiB.
415 invalid_request_error Expected request with `Content-Type: application/json` Header Content-Type adịghị ma ọ bụ abụghị application/json.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Field chọrọ achọrọ adịghị, dị ka messages, ma ọ bụ field nwere JSON type na-ezighi ezi.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Output limit nke request ka ukwuu karịa ihe fọdụrụ na balance gị.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: karịa requests 120 n'otu nkeji na akaụntụ gị. <n> bụ ọnụọgụ sekọnd ruo mgbe nkeji ahụ gwụrụ.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1 na /v1/chat/completions na /v1/messages: ejirila Shannon Coder calls nke plan gị maka 4-hour window dị ugbu a.
429 rate_limit_error Shannon routes are temporarily busy. Please retry. Model nọ n'ọrụ n'oge a.
500 server_error The model backend failed to answer. Please retry. Model emepụtaghị azịza.
500 server_error An internal error occurred. Please retry. Ọdịda dị n'ime mgbe a na-akwado request ahụ.
502 api_error The model backend failed to answer. Please retry. Model emepụtaghị azịza. Shannon 3 family na hosted open-weight models.
503 api_error Could not verify your quota right now. Please retry. Enweghị ike ịgụ balance gị n'oge a.
503 api_error token counting is temporarily unavailable for this model Token counting adịghị maka model a n'oge a.
504 api_error upstream timed out Hosted open-weight model were oge karịrị oke oge nke request na-abụghị stream.

Nlele na-aga n'usoro a: API key, request body, model id, flood protection, balance. Ya mere request nwere key na-ezighi ezi na body na-ezighi ezi na-eweghachi 401. A naghị akwụ ụgwọ maka request a jụrụ site na 4xx status.

Balance na flood protection

A na-ejere request ọ bụla otu aka: enweghị rate tiers, enweghịkwa API quota dị iche. Ihe abụọ nwere ike ịzakwa 429, ha abụọ nwere ụdị rate_limit_error. Ozi ahụ na-egosi ndịiche.

Balance

Balance gị bụ plan allowance nke taa, nke na-ebido ọzọ na 00:00 UTC, na mgbe ya credit i zụtara. Chat na API na-eji otu balance.

Request ọ bụla buru ụzọ debe output limit ya: max_tokens, ma ọ bụ max_output_tokens na /v1/responses, 4,096 mgbe ị zipụghị ọ bụla n'ime ha. Mgbe azịza zuru ezu, ego edebere ahụ na-anọchi ihe request ahụ jiri. Ọ bụrụ na ego ahụ abaghị n'ime balance fọdụrụ, request ahụ na-eweghachi Quota exceeded tupu model amalite.

Requests na-agba n'otu oge na-edebe ego nke ha ọ bụla. Ya mere ọtụtụ requests n'otu oge nwere max_tokens dị elu nwere ike ịmechu balance nwa oge, ọbụlagodi mgbe azịza ọ bụla dị mkpụmkpụ. max_tokens dị ala na-edebe obere.

Flood protection

Flood protection na-ekwe 120 requests n'otu nkeji maka akaụntụ ọ bụla. Ọ na-agụ akaụntụ, ọ bụghị key, n'elu /v1/chat/completions, /v1/responses na /v1/messages ọnụ. Nkeji ahụ na-amalite site na request mbụ gị.

Request nọmba 121 n'ime nkeji ahụ na-eweghachi Too many requests. Retry in <n>s. ma ọ naghị efu ihe ọ bụla. A na-agụkwa requests a jụrụ, ya mere client na-ezighachi na-echeghị ga-anọgide na-ajụ ruo mgbe nkeji ahụ gwụrụ. Chere sekọnd <n> si n'ozi ahụ.

A naghị ajụ requests a zipụrụ n'otu oge n'ihi na ha dị n'otu oge. Ha na-eche n'ahịrị ma a na-aza ha n'usoro.

A naghị agụ GET /v1/models na token counting endpoints.

Ihe ndị ọzọ gbasara limits na balance, na ebe ịhụ balance na ojiji nke gị: Limits na balance Keys & usage

Ihe a ga-ezighachi

Zighachi request naanị mgbe otu request ahụ nwere ike ịga nke ọma. OpenAI na Anthropic SDKs na-anwa ọzọ azịza 429 na 5xx ugboro abụọ n'onwe ha; tọọ max_retries (maxRetries na JavaScript) iji gbanwee nke ahụ.

Njehie Zighachi? Otu esi eme
400, 404, 405, 413, 415, 422 Mba. Buru ụzọ dozie request ahụ. Ozi ahụ na-akpọ field, model ma ọ bụ input ahụ na-adịghị mma.
401 Mba. Jiri key ziri ezi. Mepụta ma ọ bụ dochie key na peeji Keys & usage.
429 Too many requests Ee, mgbe ịchere. Chere ọnụọgụ sekọnd dị n'ozi ahụ, wee zipụ otu request ahụ.
429 Quota exceeded Ọ bụghị dị ka ọ dị. Belata max_tokens, chere daily reset na 00:00 UTC, ma ọ bụ gbakwunye credit.
429 Shannon Coder call quota reached Ee, n'window na-esote. Windows na-amalite kwa awa 4 site na 00:00 UTC. Model ọzọ na-aza ozugbo.
429 … temporarily busy Ee. Chere ihe ọbụla sekọnd ole na ole, wee chere ogologo oge n'ịnwa ọ bụla ọzọ.
500, 502, 503 Ee. Chere sekọnd 1, wee 2, 4 na 8. Kwụsị mgbe nnwale ole na ole gasịrị ma kọọ request id.
504 Ee. Zipụ ya na stream tọrọ true: oke oge na-emetụta azịza ndị na-abụghị stream.

Retry loop na-eso tebụl a:

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)

Njehie n'ime stream

Stream nwere status 200 site na byte mbụ ya. Ọdịda emere mgbe nke ahụ gasịrị na-abịa dị ka event n'ime stream: chunk nwere member error na /v1/chat/completions, event error na /v1/messages, event response.failed ma ọ bụ error na /v1/responses. Events mmechi nke stream ka na-eso. Lee azịza dị otú ahụ dị ka nke dara ma zighachi request ahụ, dị ka maka 5xx status.

A na-akọ mkparịta ụka toro ogologo karịa context window nke model n'ụzọ a, na ụdị invalid_request_error na koodu context_length_exceeded. Mee ka mkparịta ụka ahụ dị mkpụmkpụ tupu ị zighachi ya.

A kọwara frames ziri ezi na streaming. Nzipu ozugbo

Request ids

Azịza ọ bụla, gụnyere njehie, nwere header x-request-id. Ọ bụ uru i zipụrụ na header x-request-id nke gị, ma ọ bụ mkpụrụedemede hexadecimal 12 mgbe ị zipụghị ọ bụla. Debe ya na log, ma kwuo ya mgbe ị na-arịọ enyemaka gbasara request.