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) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.chat.completions.create({
model: "shannon-3",
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
console.log(response.choices[0].message.content); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}' Atsakymas yra vienas JSON objektas:
{
"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) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await 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",
});
const message = response.choices[0].message;
console.log(message.reasoning_content); // the reasoning
console.log(message.content); // the answer
console.log(response.usage); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"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"
}' 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.
{
"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
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Būsena | Tipas | Pranešimas | Kada |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid 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. |