Neidio i'r cynnwys
Rheoli gwallau

Rheoli gwallau

Mae cais sy'n methu yn dychwelyd cod statws HTTP a chorff JSON gyda math o wall a neges. Mae'r dudalen hon yn rhestru pob statws, yn dangos corff gwall pob fformat API ac yn dweud pa wallau sy'n werth eu hanfon eto.

Mae'r SDKs yn codi gwrthrych gwall sy'n cario'r cod statws a meysydd y corff. Mae'r cais hwn yn enwi model nad yw'n bodoli:

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

Mae'n dychwelyd statws 400 a'r corff hwn:

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

Corff y gwall

Mae dau gorff. Mae /v1/messages yn ateb yn fformat Anthropic; mae pob pwynt terfyn arall yn ateb yn fformat OpenAI. Yn y ddau, mae'r manylion yn error.type ac error.message, felly mae un darllenydd yn gwasanaethu pob pwynt terfyn.

401 Fformat OpenAI
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
401 Fformat Anthropic
{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key"
  }
}
Maes Math Disgrifiad
error.type string Y math o wall. Gweler Mathau o wallau isod.
error.message string Brawddeg i berson. Mae'r testunau yn y tablau isod yn sefydlog ac eithrio eu rhannau amrywiol, a ddangosir fel <id>, <n> neu ….
error.code string | null Yn bresennol ar rai gwallau yn fformat OpenAI: invalid_api_key gyda 401, request_too_large gyda 413, context_length_exceeded pan fo sgwrs yn rhy hir, fel arall null neu'n absennol. Penderfynwch ar sail y statws a error.type yn gyntaf a thrinnwch code fel ychwanegiad.
error.param null Yn bresennol ar yr un gwallau â code. Bob amser yn null.
type string Fformat Anthropic yn unig. Bob amser yn error.

Mathau o wallau

Math Statysau Disgrifiad
invalid_request_error 400, 413, 415, 422 Mae'r cais ei hun yn anghywir: maes, y corff, id y model neu fewnbwn nad yw'r model yn ei gymryd. Newidiwch y cais cyn i chi ei anfon eto.
authentication_error 401 Mae'r allwedd API ar goll, yn anhysbys neu wedi'i dirymu.
not_found_error 404 Nid yw'r llwybr yn bodoli.
rate_limit_error 429 Nid yw'r balans yn cwmpasu'r cais, stopiodd amddiffyniad rhag llifogydd ef, neu mae'r model yn brysur. Mae'r neges yn dweud pa un.
api_error 500, 502, 503, 504 Roedd y cais yn iawn ac mae'r methiant ar ein hochr ni. Anfonwch ef eto.
server_error 500 Roedd y cais yn iawn ac mae'r methiant ar ein hochr ni. Anfonwch ef eto.

Codau statws

Statws Math Neges Pryd
400 invalid_request_error Failed to parse the request body as JSON: … Nid yw'r corff yn JSON dilys.
400 invalid_request_error unknown model: <id> Nid yw model yn id cyhoeddedig. Ar /v1/responses hefyd pan fo model ar goll.
400 invalid_request_error No user message provided Haenau Shannon: nid yw'r cais yn cynnwys testun defnyddiwr.
400 invalid_request_error <id> does not accept image input Anfonwyd delwedd i fodel pwysau agored a gynhelir heb fewnbwn delwedd.
400 invalid_request_error audio and video input are not supported by any hosted model Anfonwyd rhan sain neu fideo i fodel pwysau agored a gynhelir.
400 invalid_request_error <id> does not accept response_format Gofynnwyd am allbwn strwythuredig gan fodel pwysau agored a gynhelir hebddo.
400 invalid_request_error <id> does not accept response_format json_schema; use json_object Anfonwyd sgema JSON i fodel pwysau agored a gynhelir sy'n cymryd json_object yn unig.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Nid yw'r ymdrech resymu yn un o'r gwerthoedd a restrir. Modelau pwysau agored a gynhelir.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <id> Gofynnwyd am gyfrif tokenau ar gyfer model y tu allan i'r modelau pwysau agored a gynhelir.
401 authentication_error Missing authentication Ni anfonwyd allwedd API.
401 authentication_error Invalid API key Mae'r allwedd yn anhysbys, wedi'i disodli gan un newyddach, neu wedi'i dirymu.
404 not_found_error Not Found Nid yw'r llwybr yn bodoli, er enghraifft /v1/embeddings.
405 api_error Method Not Allowed Mae'r llwybr yn bodoli ond nid gyda'r dull HTTP hwn.
413 invalid_request_error Failed to buffer the request body: … Mae corff y cais yn fwy na 32 MiB.
415 invalid_request_error Expected request with `Content-Type: application/json` Mae'r pennawd Content-Type ar goll neu nid yw'n application/json.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Mae maes gofynnol ar goll, fel messages, neu mae gan faes y math JSON anghywir.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Mae terfyn allbwn y cais yn fwy na'r hyn sy'n weddill o'ch balans.
429 rate_limit_error Too many requests. Retry in <n>s. Amddiffyniad rhag llifogydd: mwy na 120 cais mewn un funud ar eich cyfrif. <n> yw nifer yr eiliadau nes bod y funud yn dod i ben.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1 ar /v1/chat/completions a /v1/messages: mae galwadau Shannon Coder eich cynllun ar gyfer y ffenestr 4 awr gyfredol wedi'u defnyddio.
429 rate_limit_error Shannon routes are temporarily busy. Please retry. Mae'r model yn brysur ar hyn o bryd.
500 server_error The model backend failed to answer. Please retry. Ni chynhyrchodd y model ateb.
500 server_error An internal error occurred. Please retry. Methiant mewnol wrth baratoi'r cais.
502 api_error The model backend failed to answer. Please retry. Ni chynhyrchodd y model ateb. Teulu Shannon 3 a modelau pwysau agored a gynhelir.
503 api_error Could not verify your quota right now. Please retry. Ni ellid darllen eich balans ar hyn o bryd.
503 api_error token counting is temporarily unavailable for this model Nid yw cyfrif tokenau ar gael ar gyfer y model hwn ar hyn o bryd.
504 api_error upstream timed out Cymerodd model pwysau agored a gynhelir yn hirach na therfyn amser cais nad yw'n cael ei ffrydio.

Mae'r gwiriadau'n rhedeg yn y drefn hon: allwedd API, corff y cais, id y model, amddiffyniad rhag llifogydd, balans. Felly mae cais gydag allwedd anghywir a chorff anghywir yn dychwelyd 401. Ni chodir tâl am gais a wrthodir â statws 4xx.

Balans ac amddiffyniad rhag llifogydd

Mae pob cais yn cael ei wasanaethu'n gyfartal: nid oes haenau cyfradd na chwota API ar wahân. Gall dau beth ateb 429 o hyd, y ddau gyda'r math rate_limit_error. Mae'r neges yn eu gwahaniaethu.

Balans

Eich balans yw lwfans y cynllun heddiw, sy'n ailosod am 00:00 UTC, ac ar ei ôl eich credyd a brynwyd. Mae sgwrs a'r API yn tynnu o'r un balans.

Mae pob cais yn neilltuo ei derfyn allbwn yn gyntaf: max_tokens, neu max_output_tokens ar /v1/responses, 4,096 pan nad anfonwch yr un. Pan fo'r ateb yn gyflawn, caiff y swm a neilltuwyd ei ddisodli gan yr hyn a ddefnyddiodd y cais. Os nad yw'r swm yn ffitio i'r balans sy'n weddill, mae'r cais yn dychwelyd Quota exceeded cyn i'r model ddechrau.

Mae ceisiadau sy'n rhedeg ar yr un pryd yn neilltuo eu swm eu hunain. Felly gall llawer o geisiadau cyfochrog gyda max_tokens uchel ddefnyddio'r balans am eiliad, hyd yn oed pan fo pob ateb yn fyr. Mae max_tokens is yn neilltuo llai.

Amddiffyniad rhag llifogydd

Mae amddiffyniad rhag llifogydd yn caniatáu 120 cais y funud i bob cyfrif. Mae'n cyfrif y cyfrif, nid yr allwedd, ar draws /v1/chat/completions, /v1/responses a /v1/messages gyda'i gilydd. Mae'r funud yn dechrau gyda'ch cais cyntaf.

Mae cais rhif 121 o fewn y funud honno yn dychwelyd Too many requests. Retry in <n>s. ac nid yw'n costio dim. Mae ceisiadau a wrthodir yn cyfrif hefyd, felly mae cleient sy'n anfon eto heb aros yn parhau i gael ei wrthod nes bod y funud ar ben. Arhoswch y <n> eiliad o'r neges.

Nid yw ceisiadau a anfonir yn gyfochrog yn cael eu gwrthod am eu bod yn gyfochrog. Maent yn aros yn y rhes ac yn cael eu hateb bob yn ail.

Nid yw GET /v1/models a'r pwyntiau terfyn cyfrif tokenau yn cael eu cyfrif.

Mwy am derfynau a balans, a ble i weld eich balans a'ch defnydd eich hun: Terfynau a balans Allweddi a defnydd

Beth i'w ailgeisio

Anfonwch gais eto dim ond pan all yr un cais lwyddo. Mae SDKs OpenAI ac Anthropic eisoes yn ailgeisio atebion 429 a 5xx ddwywaith ar eu pen eu hunain; gosodwch max_retries (maxRetries yn JavaScript) i newid hynny.

Gwall Anfon eto? Sut
400, 404, 405, 413, 415, 422 Na. Cywirwch y cais yn gyntaf. Mae'r neges yn enwi'r maes, y model neu'r mewnbwn sy'n anghywir.
401 Na. Defnyddiwch allwedd ddilys. Crëwch neu amnewidiwch yr allwedd ar y dudalen Keys & usage.
429 Too many requests Ie, ar ôl yr aros. Arhoswch nifer yr eiliadau yn y neges, yna anfonwch yr un cais.
429 Quota exceeded Nid fel y mae. Gostyngwch max_tokens, arhoswch am yr ailosod dyddiol am 00:00 UTC, neu ychwanegwch gredyd.
429 Shannon Coder call quota reached Ie, yn y ffenestr nesaf. Mae'r ffenestri'n dechrau bob 4 awr o 00:00 UTC. Mae model arall yn ateb ar unwaith.
429 … temporarily busy Ie. Arhoswch ychydig eiliadau, yna'n hirach ar bob ymgais bellach.
500, 502, 503 Ie. Arhoswch 1 eiliad, yna 2, 4 ac 8. Stopiwch ar ôl ychydig ymdrechion ac adroddwch yr id cais.
504 Ie. Anfonwch ef gyda stream wedi'i osod i true: mae'r terfyn amser yn berthnasol i atebion nad ydynt yn cael eu ffrydio.

Dolen ailgeisio sy'n dilyn y tabl hwn:

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)

Gwallau y tu mewn i ffrwd

Mae gan ffrwd statws 200 o'i bytiad cyntaf. Mae methiant ar ôl hynny yn cyrraedd fel digwyddiad y tu mewn i'r ffrwd: darn ag aelod error ar /v1/chat/completions, digwyddiad error ar /v1/messages, digwyddiad response.failed neu error ar /v1/responses. Mae digwyddiadau cau'r ffrwd yn dilyn o hyd. Trinnwch ateb o'r fath fel un a fethodd ac anfonwch y cais eto, fel ar gyfer statws 5xx.

Adroddir sgwrs sy'n hirach na ffenestr cyd-destun y model fel hyn, gyda'r math invalid_request_error a'r cod context_length_exceeded. Byrhewch y sgwrs cyn i chi ei hanfon eto.

Disgrifir y fframiau union gyda ffrydio. Ffrydio

Ids cais

Mae gan bob ateb, gwallau yn gynwysedig, bennawd x-request-id. Dyma'r gwerth a anfonoch yn eich pennawd x-request-id eich hun, neu 12 nod hecsadegol pan na anfonoch un. Cofnodwch ef, a'i ddyfynnu pan ofynnwch am help gyda chais.