Leum gun t-susbaint
Làimhseachadh mearachd

Làimhseachadh mearachd

Tillidh iarrtas a dh’fhailicheas còd staid HTTP agus bodhaig JSON le seòrsa mearachd agus teachdaireachd. Tha an duilleag seo a’ liostadh gach staid, a’ sealltainn bodhaig mearachd gach cruth API agus ag innse dè na mearachdan as fhiach an cur a-rithist.

Togaidh na SDKan nì mearachd a bhios a’ giùlan còd na staid agus raointean na bodhaig. Ainmichidh an t-iarrtas seo modail nach eil 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

Tillidh e staid 400 agus a’ bhodhaig seo:

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

Bodhaig na mearachd

Tha dà bhodhaig ann. Freagraidh /v1/messages ann an cruth Anthropic; freagraidh a h-uile endpoint eile ann an cruth OpenAI. Anns an dà chuid, tha am fiosrachadh ann an error.type agus error.message, agus mar sin fritheilidh aon leughadair gach endpoint.

401 Cruth OpenAI
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
401 Cruth Anthropic
{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key"
  }
}
Raon Seòrsa Tuairisgeul
error.type string Seòrsa na mearachd. Faic Seòrsaichean mearachd gu h-ìosal.
error.message string Seantans airson neach. Tha na teacsaichean sna clàran gu h-ìosal seasmhach ach airson na pàirtean caochlaideach aca, a tha air an sealltainn mar <id>, <n> no ….
error.code string | null An làthair air cuid de mhearachdan dhen chruth OpenAI: invalid_api_key le 401, request_too_large le 413, context_length_exceeded nuair a tha còmhradh ro fhada, air dhòigh eile null no às-làthair. Co-dhùin air an staid agus error.type an toiseach agus làimhsich code mar rud a bharrachd.
error.param null An làthair air na h-aon mhearachdan ri code. An-còmhnaidh null.
type string Cruth Anthropic a-mhàin. An-còmhnaidh error.

Seòrsaichean mearachd

Seòrsa Stàitean Tuairisgeul
invalid_request_error 400, 413, 415, 422 Tha an t-iarrtas fhèin ceàrr: raon, a’ bhodhaig, id a’ mhodail no input nach gabh am modail. Atharraich an t-iarrtas mus cuir thu a-rithist e.
authentication_error 401 Tha an iuchair API a dhìth, neo-aithnichte no air a cur à bith.
not_found_error 404 Chan eil an t-slighe ann.
rate_limit_error 429 Chan eil am balance a’ còmhdach an iarrtais, stad dìon thar-thuiltidh e, no tha am modail trang. Innsidh an teachdaireachd dè.
api_error 500, 502, 503, 504 Bha an t-iarrtas ceart agus tha am fàilligeadh air ar taobh-ne. Cuir a-rithist e.
server_error 500 Bha an t-iarrtas ceart agus tha am fàilligeadh air ar taobh-ne. Cuir a-rithist e.

Còdan staid

Staid Seòrsa Teachdaireachd Cuin
400 invalid_request_error Failed to parse the request body as JSON: … Chan eil a’ bhodhaig na JSON dligheach.
400 invalid_request_error unknown model: <id> Chan e id foillsichte a th’ ann an model. Air /v1/responses cuideachd nuair a tha model a dhìth.
400 invalid_request_error No user message provided Ìrean Shannon: chan eil teacsa neach-cleachdaidh san iarrtas.
400 invalid_request_error <id> does not accept image input Chaidh dealbh a chur gu modail open-weight hosted gun input dealbh.
400 invalid_request_error audio and video input are not supported by any hosted model Chaidh pàirt claisneachd no bhidio a chur gu modail open-weight hosted.
400 invalid_request_error <id> does not accept response_format Chaidh output structaraichte iarraidh air modail open-weight hosted às aonais.
400 invalid_request_error <id> does not accept response_format json_schema; use json_object Chaidh JSON schema a chur gu modail open-weight hosted nach gabh ach json_object.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Chan eil an oidhirp reusanachaidh air aon dhe na luachan air an liostadh. Modailean open-weight hosted.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <id> Chaidh cunntadh token iarraidh airson modail taobh a-muigh nam modailean open-weight hosted.
401 authentication_error Missing authentication Cha deach iuchair API a chur.
401 authentication_error Invalid API key Tha an iuchair neo-aithnichte, chaidh fear nas ùire a chur na àite, no chaidh a cur à bith.
404 not_found_error Not Found Chan eil an t-slighe ann, mar eisimpleir /v1/embeddings.
405 api_error Method Not Allowed Tha an t-slighe ann ach chan ann leis an dòigh HTTP seo.
413 invalid_request_error Failed to buffer the request body: … Tha bodhaig an iarrtais nas motha na 32 MiB.
415 invalid_request_error Expected request with `Content-Type: application/json` Tha header Content-Type a dhìth no chan e application/json a th’ ann.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Tha raon riatanach a dhìth, leithid messages, no tha seòrsa JSON ceàrr air raon.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Tha crìoch output an iarrtais nas motha na tha air fhàgail dhen bhalance agad.
429 rate_limit_error Too many requests. Retry in <n>s. Dìon thar-thuiltidh: còrr air 120 iarrtas ann am mionaid air a’ chunntas agad. Is e <n> an àireamh de dhiogan gus an tig a’ mhionaid gu crìch.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1 air /v1/chat/completions agus /v1/messages: chaidh gairmean Shannon Coder a’ phlana agad airson na h-uinneige 4 uairean làithrich a chleachdadh.
429 rate_limit_error Shannon routes are temporarily busy. Please retry. Tha am modail trang aig an àm seo.
500 server_error The model backend failed to answer. Please retry. Cha tug am modail freagairt.
500 server_error An internal error occurred. Please retry. Fàilligeadh a-staigh fhad ‘s a bha an t-iarrtas ga ullachadh.
502 api_error The model backend failed to answer. Please retry. Cha tug am modail freagairt. Teaghlach Shannon 3 agus modailean open-weight hosted.
503 api_error Could not verify your quota right now. Please retry. Cha b’ urrainnear do bhalance a leughadh aig an àm seo.
503 api_error token counting is temporarily unavailable for this model Chan eil cunntadh token ri fhaighinn airson a’ mhodail seo aig an àm seo.
504 api_error upstream timed out Thug modail open-weight hosted barrachd ùine na crìoch ama iarrtais gun streaming.

Ruithidh na sgrùdaidhean san òrdugh seo: iuchair API, bodhaig an iarrtais, id modail, dìon thar-thuiltidh, balance. Mar sin tillidh iarrtas le iuchair cheàrr agus bodhaig cheàrr 401. Chan eil iarrtas a thèid a dhiùltadh le staid 4xx air a chosg.

Balance agus dìon thar-thuiltidh

Thèid gach iarrtas a fhrithealadh co-ionnan: chan eil ìrean ìre-chuingeachaidh no cuota API fa leth ann. Faodaidh dà rud fhathast 429 a fhreagairt, an dà chuid leis an t-seòrsa rate_limit_error. Seallaidh an teachdaireachd an diofar.

Balance

Is e do bhalance cuibhreann plana an-diugh, a dh’ath-shuidhicheas aig 00:00 UTC, agus às a dhèidh creideas a cheannaich thu. Tarraingidh còmhradh agus an API às an aon bhalance.

Cuiridh gach iarrtas crìoch an output aige an dàrna taobh an toiseach: max_tokens, no max_output_tokens air /v1/responses, 4,096 mura cuir thu gin. Nuair a bhios am freagairt coileanta, thèid na chaidh a chur an dàrna taobh a chur an àite na chleachd an t-iarrtas. Mura h-eil an t-suim a’ freagairt dhen bhalance a tha air fhàgail, tillidh an t-iarrtas Quota exceeded mus tòisich am modail.

Cuiridh iarrtasan a ruitheas aig an aon àm an t-suim aca fhèin an dàrna taobh. Mar sin faodaidh mòran iarrtasan co-shìnte le max_tokens àrd am balance a chleachdadh airson greis, fiù ‘s ma tha gach freagairt goirid. Cuiridh max_tokens nas lugha nas lugha an dàrna taobh.

Dìon thar-thuiltidh

Leigidh dìon thar-thuiltidh 120 iarrtas gach mionaid gach cunntais. Cunntaidh e an cunntas, chan e an iuchair, thar /v1/chat/completions, /v1/responses agus /v1/messages còmhla. Tòisichidh a’ mhionaid leis a’ chiad iarrtas agad.

Tillidh iarrtas àireamh 121 sa mhionaid sin Too many requests. Retry in <n>s. agus chan eil e a’ cosg dad. Thèid iarrtasan a chaidh a dhiùltadh a chunntadh cuideachd, agus mar sin fanaidh client a chuireas a-rithist gun feitheamh air a dhiùltadh gus an tig a’ mhionaid gu crìch. Fuirich na <n> diogan a tha san teachdaireachd.

Chan eil iarrtasan a thèid a chur ann an co-shìnte air an diùltadh air sgàth sin. Fuirichidh iad sa chiudha agus thèid am freagairt an tur.

Chan eil GET /v1/models agus na h-endpoints cunntais token air an cunntadh.

Tuilleadh mu chrìochan agus balance, agus càite am faic thu do bhalance agus do chleachdadh fhèin: Crìochan agus balance Iuchraichean & cleachdadh

Dè ri fheuchainn a-rithist

Cuir iarrtas a-rithist dìreach nuair a dh’fhaodadh an t-aon iarrtas soirbheachadh. Bidh SDKan OpenAI agus Anthropic mar-thà a’ feuchainn freagairtean 429 agus 5xx a-rithist dà thuras leotha fhèin; suidhich max_retries (maxRetries ann an JavaScript) gus sin atharrachadh.

Mearachd A bheil e ri chur a-rithist? Ciamar
400, 404, 405, 413, 415, 422 Chan eil. Ceartaich an t-iarrtas an toiseach. Ainmichidh an teachdaireachd an raon, am modail no an input a tha ceàrr.
401 Chan eil. Cleachd iuchair dhligheach. Cruthaich no cuir iuchair eile an àite na h-iuchrach air an duilleag Keys & usage.
429 Too many requests Tha, às dèidh na feitheimh. Fuirich an àireamh de dhiogan san teachdaireachd, an uair sin cuir an t-aon iarrtas.
429 Quota exceeded Chan ann mar a tha e. Ìosal max_tokens, fuirich airson ath-shuidheachadh làitheil aig 00:00 UTC, no cuir creideas ris.
429 Shannon Coder call quota reached Tha, san ath uinneig. Tòisichidh na h-uinneagan gach 4 uairean o 00:00 UTC. Freagraidh modail eile sa bhad.
429 … temporarily busy Tha. Fuirich beagan dhiogan, an uair sin nas fhaide a h-uile oidhirp eile.
500, 502, 503 Tha. Fuirich 1 diog, an uair sin 2, 4 agus 8. Stad às dèidh beagan oidhirpean agus thoir aithris air id an iarrtais.
504 Tha. Cuir e le stream air a shuidheachadh gu true: tha an crìoch ama a’ buntainn ri freagairtean gun streaming.

Lùb feuchainn a-rithist a leanas an clàr 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)

Mearachdan am broinn stream

Tha staid 200 aig stream bhon chiad byte. Thig fàilligeadh às dèidh sin mar thachartas am broinn an stream: chunk le ball error air /v1/chat/completions, tachartas error air /v1/messages, tachartas response.failed no error air /v1/responses. Thig tachartasan dùnaidh an stream fhathast às a dhèidh. Làimhsich a leithid de fhreagairt mar fhàilligeadh agus cuir an t-iarrtas a-rithist, mar airson staid 5xx.

Thèid còmhradh a tha nas fhaide na uinneag cho-theacsa a’ mhodail aithris san dòigh seo, leis an t-seòrsa invalid_request_error agus an còd context_length_exceeded. Giorraich an còmhradh mus cuir thu a-rithist e.

Tha na frèaman cruinn air am mìneachadh còmhla ri streaming. Sruthadh

Ids iarrtais

Tha header x-request-id aig gach freagairt, mearachdan nam measg. Is e an luach a chuir thu san header x-request-id agad fhèin, no 12 caractaran sia-deugach mura do chuir thu gin. Clàraich e, agus thoir iomradh air nuair a dh’iarras tu taic le iarrtas.