Pereiti prie turinio
Chat Completions

Chat Completions

POST /v1/chat/completions priima pokalbį ir grąžina kitą modelio žinutę OpenAI Chat Completions formatu. Naudokite jį iš bet kurio OpenAI SDK arba per paprastą HTTP; šis puslapis yra žinynas lauką po lauko.

POST https://api.shannon-ai.com/v1/chat/completions

Mažiausia užklausa yra modelio id ir viena vartotojo žinutė.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)

print(response.choices[0].message.content)

Atsakymas yra vienas JSON objektas:

200 JSON
{
  "id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "object": "chat.completion",
  "created": 1791625200,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello, it is good to meet you.",
        "reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1184,
    "completion_tokens": 46,
    "total_tokens": 1230
  }
}

Antraštės

Užklausos antraštės

Antraštė Reikšmė Aprašymas
Authorization Bearer YOUR_API_KEY Jūsų API raktas. Vietoje jo kiekviename galiniame taške priimamas x-api-key: YOUR_API_KEY.
Content-Type application/json Privaloma. Bet kuri kita reikšmė grąžina 415.
x-request-id Neprivaloma. Jūsų pačių užklausos id. Jis grąžinamas atsakyme nepakeistas.

Atsakymo antraštės

Antraštė Aprašymas
x-request-id Kiekviename atsakyme, įskaitant klaidas ir srautus: jūsų išsiųsta reikšmė arba 12 šešioliktainių simbolių, jei nieko nesiuntėte. Nurodykite ją pranešdami apie problemą.
content-type application/json arba text/event-stream, kai stream yra true.

Užklausos laukai

Būtinas tik messages. Stulpelyje Taiko nurodyti modeliai, kuriuose laukas keičia atsakymą. Talpinami atvirų svorių modeliai yra dvylika modelių sąrašo id; Shannon 3 šeima yra shannon-3, shannon-3-pro, shannon-3.1 ir shannon-3.1-pro. Modeliai ir kainos

Laukas Tipas Numatytoji Aprašymas Taiko
model string shannon-1.6-lite Modelis, kuris atsako: id iš modelių sąrašo. Siųskite jį su kiekviena užklausa. Raidžių registras nesvarbus. Nepaskelbtas id grąžina 400 unknown model. Visi modeliai
messages array Privalomas. Pokalbis, seniausia žinutė pirma. Žr. žemiau Žinutės. Visi modeliai
stream boolean false true siunčia atsakymą kaip server-sent events, kol jis rašomas. Visi modeliai
max_tokens integer 4096 Viršutinė atsakymo riba tokenais. Reikšmė už intervalo nuo 1 iki 65,536 perkeliama į šį intervalą. Tai taip pat suma, kuri jūsų balanse rezervuojama, kol vykdoma užklausa. Žr. žemiau Išvesties ilgis. Talpinami atvirų svorių modeliai, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Tas pats kaip max_tokens. Kai siunčiami abu, naudojamas max_tokens. Talpinami atvirų svorių modeliai, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Mėginių ėmimo temperatūra. Talpinamuose atvirų svorių modeliuose numatytoji reikšmė yra 1, o reikšmės laikomos intervale nuo 0 iki 2. Talpinami atvirų svorių modeliai, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Branduolio (nucleus) mėginių ėmimas. Reikšmės laikomos intervale nuo 0 iki 1. Talpinami atvirų svorių modeliai
seed integer Mėginių ėmiklio sėkla, bet koks sveikasis skaičius. Be jos sėkla išvedama iš modelio ir pokalbio, todėl dukart išsiųsta ta pati užklausa naudoja tą pačią sėklą. Talpinami atvirų svorių modeliai
stop string | array Eilutė arba eilučių masyvas. Naudojamos iki 4. Atsakymas baigiasi prieš pirmąją pasirodžiusią; pats stabdymo tekstas negrąžinamas. Talpinami atvirų svorių modeliai
reasoning_effort string high Kiek modelis mąsto prieš atsakydamas: off, low, medium arba high. none ir minimal reiškia off, default reiškia medium, max reiškia high. Bet kuri kita reikšmė grąžina 400. Talpinami atvirų svorių modeliai
reasoning object Tas pats nustatymas objekto forma: {"effort": "low"}. Kai siunčiami abu, naudojamas reasoning_effort. Talpinami atvirų svorių modeliai
tools array Funkcijos, kurias modelis gali kviesti, kiekviena kaip {"type": "function", "function": {"name", "description", "parameters"}}. Modelio kreipiniai grįžta tool_calls; juos vykdo jūsų kodas. Visi modeliai
tool_choice string | object auto "auto" leidžia modeliui nuspręsti. "required" priverčia jį kviesti įrankį. {"type": "function", "function": {"name": "…"}} priverčia kviesti būtent tą įrankį. Talpinami atvirų svorių modeliai
response_format object {"type": "json_object"} JSON atsakymui arba {"type": "json_schema", "json_schema": {…}} atsakymui pagal jūsų schemą. Visi Shannon lygiai; talpinami atvirų svorių modeliai, kaip nurodyta pagal id
web_search boolean false true leidžia modeliui prieš atsakant ieškoti internete. shannon-1.6-*, shannon-2-*, Shannon 3 šeima

Kiti OpenAI laukai, tokie kaip n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store ir prompt_cache_key, priimami, kad esamas kliento kodas veiktų nepakeistas. Jie nekeičia atsakymo: visada yra vienas pasirinkimas, o srautas visada baigiasi naudojimo duomenimis.

Laukas su neteisingu JSON tipu, pavyzdžiui, "max_tokens": "100", grąžina 422. Taip pat ir užklausa be messages.

Įrankiai, struktūruota išvestis, mąstymas ir paieška internete turi savo puslapius: Funkcijų kvietimas, Struktūruoti išėjimai, Mąstymo pastangos, Žiniatinklio paieška.

Užklausa su parinktimis

Ši užklausa nustato sistemos žinutę, mėginių ėmimo laukus ir mąstymo pastangas. Ji naudoja talpinamą atvirų svorių modelį, kuris taiko visus šiuos nustatymus.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    messages=[
        {"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
        {"role": "user", "content": "Why is the sky blue?"},
    ],
    max_tokens=512,
    temperature=0.3,
    top_p=0.9,
    seed=7,
    stop=["\n\n"],
    reasoning_effort="low",
)

message = response.choices[0].message
print(message.reasoning_content)  # the reasoning
print(message.content)            # the answer
print(response.usage)

Atsakymas turi tą pačią formą kaip aukščiau. Talpinamuose atvirų svorių modeliuose jo usage prideda dvi detales: iš kešo nuskaitytus prompt tokenus ir mąstymui sunaudotus tokenus.

200 JSON
{
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 62,
    "total_tokens": 93,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 21
    }
  }
}

Išvesties ilgis

max_tokens daro dvi dalykus. Pirma, tai tokenų skaičius, kuris jūsų balanse rezervuojamas užklausai prasidedant. Kai atsakymas baigtas, ši suma pakeičiama užklausos sunaudotais tokenais. Jei max_tokens didesnis nei jūsų balanso likutis, užklausa grąžina 429 Quota exceeded, net jei pats atsakymas būtų tilpęs. Siųskite mažesnį max_tokens, kad rezervuotumėte mažiau.

shannon-coder-1 šiame galiniame taške skaičiuojamas kitaip: kiekviena užklausa yra vienas jūsų plano Shannon Coder kreipinys, ir tokenai jai nerezervuojami. Ribos ir balansas

Antra, jis riboja atsakymo ilgį šiuose modeliuose:

Modeliai Ką daro max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Pasiekus ribą atsakymas sustoja. Srautas tada baigiasi su finish_reason length.
Talpinami atvirų svorių modeliai Atsakymo tekstas sustoja ties max_tokens. Mąstymas į ribą neįskaičiuojamas. Reikšmės žemiau 256 veikia kaip 256.

Be max_tokens ar max_completion_tokens reikšmė yra 4,096. Modeliui shannon-coder-1 ji yra 65,536.

Žinutės

Kiekviena žinutė yra objektas su role ir content. content yra eilutė arba dalių masyvas, kai žinutėje yra ne tik tekstas.

Rolė Aprašymas Taiko
system Nurodymai modeliui. Dėkite jį pirmą. Shannon lygiuose naudojama pirmoji system žinutė. Talpinami atvirų svorių modeliai, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Skaitoma kaip system. Talpinami atvirų svorių modeliai
user Ką klausiate. Shannon lygiuose paskutinė user žinutė yra prompt, o prieš ją esančios žinutės yra istorija. Visi modeliai
assistant Ankstesni modelio atsakymai. Išsaugokite jo tool_calls, kai po jo siunčiate įrankio rezultatą. Visi modeliai
tool Įrankio kreipinio rezultatas: tool_call_id turi kreipinio id, o content rezultatą kaip eilutę. Visi modeliai

Su Shannon 3 šeimos id nurodymus, kurie privalo galioti, įrašykite į user žinutę.

Shannon lygiuose užklausa be vartotojo teksto ir be tools grąžina 400 No user message provided.

Turinio dalys

Dalis Aprašymas Prieinama
{"type": "text", "text": "…"} Paprastas tekstas. Visi modeliai
{"type": "image_url", "image_url": {"url": "…"}} Vaizdas, kaip data: URL su base64 turiniu arba kaip http(s) URL. Shannon 3 šeima, shannon-1.6-lite, shannon-1.6-pro ir talpinami atvirų svorių modeliai, kurie nurodo vaizdo įvestį
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokumentas (PDF, Word, PowerPoint ar Excel), kaip base64 arba pagal URL. Shannon 3 šeima

Dydžiai, ribos ir pilnas formų sąrašas aprašyti atskirame puslapyje. Vaizdai ir failai

Atsakymo objektas

Laukas Tipas Aprašymas
id string chatcmpl- ir 32 šešioliktainiai simboliai.
object string Visada chat.completion.
created integer Atsakymo laikas Unix sekundėmis.
model string Atsakiusio modelio kanoninis id. Rašyba jis gali skirtis nuo jūsų išsiųsto id.
choices array Visada lygiai vienas pasirinkimas su index 0.
choices[0].message.role string Visada assistant.
choices[0].message.content string | null Atsakymo tekstas. Su tool_calls Shannon lygiuose jis yra null; talpinami atvirų svorių modeliai šalia kreipinių gali siųsti tekstą.
choices[0].message.reasoning_content string | null Mąstymas, kurį modelis parašė prieš atsakymą, arba null, jei jo nėra.
choices[0].message.tool_calls array Yra tik tada, kai modelis kviečia įrankius. Kiekvienas įrašas turi id, type function ir function su name bei arguments kaip JSON eilute.
choices[0].message.annotations array Tik užklausoje su web_search: true, kurios paieška ką nors rado. Po vieną url_citation kiekvienam šaltiniui, kurį įvardija žymeklis content, su url, title, start_index ir end_index (žymeklio padėtis simboliais, pabaiga neįskaičiuojama).
choices[0].finish_reason string Kodėl atsakymas baigėsi. Žr. Pabaigos priežastys.
usage object Užklausos tokenai. Žr. Naudojimas.
sources array Tik užklausoje su web_search: true, kurios paieška ką nors rado: modeliui perduoti rezultatai, kiekvienas su index, title ir url. [1] atsakyme yra įrašas, kurio index yra 1.

Pabaigos priežastys

finish_reason Aprašymas
stop Modelis baigė atsakymą arba pasirodė stop eilutė.
tool_calls Modelis kviečia vieną ar daugiau įrankių. Paleiskite juos ir rezultatus siųskite tool žinutėse.
length Atsakymas nutrauktas pasiekus išvesties ribą. Pranešama modelių shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ir Shannon 3 šeimos srautuose.

Ne srautu siunčiamas atsakymas praneša stop arba tool_calls.

Naudojimas

Laukas Tipas Aprašymas Prieinama
usage.prompt_tokens integer Įvesties tokenai. Visi modeliai
usage.completion_tokens integer Išvesties tokenai: mąstymas, atsakymas ir įrankių kreipiniai kartu. Visi modeliai
usage.total_tokens integer prompt_tokens plius completion_tokens. Visi modeliai
usage.prompt_tokens_details.cached_tokens integer prompt_tokens dalis, nuskaityta iš prompt kešo. Talpinami atvirų svorių modeliai
usage.completion_tokens_details.reasoning_tokens integer completion_tokens dalis, sunaudota mąstymui. Talpinami atvirų svorių modeliai

Talpinamuose atvirų svorių modeliuose prompt_tokens yra jūsų žinutės ir įrankių apibrėžimai, suskaičiuoti paties modelio tokenizatoriumi, plius visų vaizdų tokenai. Tokenų skaičiavimo galiniai taškai grąžina tą patį skaičių prieš jums siunčiant. Tokenų skaičiavimas

Shannon lygiuose prompt_tokens skaičiuoja viską, ką modelis perskaitė atsakymui parašyti, todėl jis didesnis nei vien jūsų žinučių tekstas.

Srautinis perdavimas

Kai stream nustatytas į true, atsakymas ateina kaip chat.completion.chunk įvykiai ir baigiasi data: [DONE]. Paskutinis gabalas prieš jį perduoda finish_reason ir usage; stream_options nereikia. Gabalų formos, keep-alive eilutės ir klaidos sraute aprašytos atskirame puslapyje. Srautinė transliacija

Klaidos

Klaida yra JSON objektas su nariu error. Patikros vykdomos šia tvarka: API raktas, užklausos turinys, modelio id, tada balansas. Lentelėje išvardyta, ką šis galinis taškas grąžina dažniausiai. Pilnas sąrašas su nurodymais, ką kartoti, yra atskirame puslapyje. Klaidų tvarkymas

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Būsena Tipas Pranešimas Kada
401 authentication_error Missing authentication
Invalid API key
API raktas nebuvo išsiųstas arba raktas nežinomas ar atšauktas.
400 invalid_request_error unknown model: <id> model nėra paskelbtas id.
400 invalid_request_error No user message provided Shannon lygiai: užklausoje nėra vartotojo teksto ir nėra tools.
400 invalid_request_error <id> does not accept image input Vaizdo dalis išsiųsta talpinamam atvirų svorių modeliui, kuris nepriima vaizdo įvesties.
400 invalid_request_error <id> does not accept response_format response_format išsiųstas talpinamam atvirų svorių modeliui be struktūruotos išvesties.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort turi reikšmę, kurios nėra sąraše.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Trūksta messages arba lauko JSON tipas neteisingas.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens yra didesnis nei jūsų balanso likutis.
429 rate_limit_error Too many requests. Retry in <n>s. Apsauga nuo užplūdimo: per vieną minutę jūsų paskyroje gauta daugiau nei 120 užklausų.
500 server_error The model backend failed to answer. Please retry. Modelis neparengė atsakymo. Išsiųskite užklausą dar kartą.
502 api_error The model backend failed to answer. Please retry. Tas pats Shannon 3 šeimoje ir talpinamuose atvirų svorių modeliuose.