Chat Completions
POST /v1/chat/completions prijme konverzáciu a vráti ďalšiu správu modelu vo formáte OpenAI Chat Completions. Používajte ho z ľubovoľného SDK od OpenAI alebo cez čisté HTTP; táto stránka je referencia pole po poli.
POST https://api.shannon-ai.com/v1/chat/completions
Najmenší request je id modelu a jedna správa používateľa.
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."}]
}' Odpoveď je jeden objekt 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
}
} Hlavičky
Hlavičky requestu
| Hlavička | Hodnota | Popis |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Váš API kľúč. Na každom endpointe sa namiesto neho prijíma x-api-key: YOUR_API_KEY. |
Content-Type | application/json | Povinná. Akákoľvek iná hodnota vráti 415. |
x-request-id | Nepovinná. Vaše vlastné id requestu. V odpovedi sa vráti nezmenené. |
Hlavičky odpovede
| Hlavička | Popis |
|---|---|
x-request-id | Na každej odpovedi, vrátane chýb a streamov: hodnota, ktorú ste poslali, alebo 12 hexadecimálnych znakov, ak ste neposlali žiadnu. Pri hlásení problému ju uveďte. |
content-type | application/json alebo text/event-stream, keď je stream true. |
Polia requestu
Povinné je iba messages. Stĺpec Uplatňuje uvádza modely, na ktorých pole mení odpoveď. Hostované open-weight modely sú dvanásť id zo zoznamu modelov; rodinu Shannon 3 tvoria shannon-3, shannon-3-pro, shannon-3.1 a shannon-3.1-pro. Modely a ceny
| Pole | Typ | Predvolené | Popis | Uplatňuje |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Model, ktorý odpovedá: id zo zoznamu modelov. Posielajte ho s každým requestom. Na veľkosti písmen nezáleží. Id, ktoré nie je zverejnené, vráti 400 unknown model. | Všetky modely |
messages | array | Povinné. Konverzácia, najstaršia správa prvá. Pozrite Správy nižšie. | Všetky modely | |
stream | boolean | false | true pošle odpoveď ako server-sent events počas jej písania. | Všetky modely |
max_tokens | integer | 4096 | Horný limit odpovede v tokenoch. Hodnota mimo rozsahu 1 až 65,536 sa posunie do tohto rozsahu. Je to aj suma, ktorá sa počas behu requestu vyhradí zo zostatku. Pozrite Dĺžka výstupu nižšie. | Hostované open-weight modely, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | To isté ako max_tokens. Ak sa pošlú obe, použije sa max_tokens. | Hostované open-weight modely, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Teplota vzorkovania. Na hostovaných open-weight modeloch je predvolená hodnota 1 a hodnoty sa držia medzi 0 a 2. | Hostované open-weight modely, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. Hodnoty sa držia medzi 0 a 1. | Hostované open-weight modely |
seed | integer | Seed vzorkovača, ľubovoľné celé číslo. Bez neho sa seed odvodí z modelu a konverzácie, takže ten istý request poslaný dvakrát použije rovnaký seed. | Hostované open-weight modely | |
stop | string | array | Reťazec alebo pole reťazcov. Použijú sa najviac 4. Odpoveď sa skončí pred prvým z nich, ktorý sa objaví; samotný stop text sa nevracia. | Hostované open-weight modely | |
reasoning_effort | string | high | Ako dlho model uvažuje, kým odpovie: off, low, medium alebo high. none a minimal znamenajú off, default znamená medium, max znamená high. Akákoľvek iná hodnota vráti 400. | Hostované open-weight modely |
reasoning | object | To isté nastavenie v tvare objektu: {"effort": "low"}. Ak sa pošlú obe, použije sa reasoning_effort. | Hostované open-weight modely | |
tools | array | Funkcie, ktoré môže model volať, každá ako {"type": "function", "function": {"name", "description", "parameters"}}. Volania modelu sa vrátia v tool_calls; váš kód ich spustí. | Všetky modely | |
tool_choice | string | object | auto | "auto" nechá rozhodnúť model. "required" ho prinúti zavolať nástroj. {"type": "function", "function": {"name": "…"}} ho prinúti zavolať tento nástroj. | Hostované open-weight modely |
response_format | object | {"type": "json_object"} pre odpoveď JSON alebo {"type": "json_schema", "json_schema": {…}} pre odpoveď, ktorá sleduje vašu schému. | Všetky úrovne Shannon; hostované open-weight modely podľa uvedenia pri jednotlivých id | |
web_search | boolean | false | true umožní modelu pred odpoveďou vyhľadávať na webe. | shannon-1.6-*, shannon-2-*, rodina Shannon 3 |
Ďalšie polia OpenAI, ako n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store a prompt_cache_key, sa prijímajú, aby existujúci klientsky kód bežal bez zmien. Odpoveď nemenia: vždy je len jedna voľba a stream vždy končí usage.
Pole s nesprávnym typom JSON, napríklad "max_tokens": "100", vráti 422. Rovnako aj request bez messages.
Nástroje, štruktúrovaný výstup, uvažovanie a webové vyhľadávanie majú každé vlastnú stránku: Volanie funkcií, Štruktúrované výstupy, Úsilie pri uvažovaní, Vstavané webové vyhľadávanie.
Request s voľbami
Tento request nastavuje systémovú správu, polia vzorkovania a úsilie pri uvažovaní. Používa hostovaný open-weight model, ktorý uplatní všetky.
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"
}' Odpoveď má rovnaký tvar ako vyššie. Jej usage pridáva na hostovaných open-weight modeloch dva detaily: tokeny promptu prečítané z cache a tokeny minuté na uvažovanie.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Dĺžka výstupu
max_tokens robí dve veci. Po prvé, je to počet tokenov vyhradený zo zostatku, keď request začne. Po dokončení odpovede sa táto suma nahradí tokenmi, ktoré request použil. Ak je max_tokens väčšie, než koľko zostáva z vášho zostatku, request vráti 429 Quota exceeded, aj keby sa samotná odpoveď zmestila. Pošlite nižšie max_tokens, aby sa vyhradilo menej.
shannon-coder-1 sa na tomto endpointe počíta inak: každý request je jedno z volaní Shannon Coder vášho plánu a nevyhradzujú sa naň žiadne tokeny. Limity a zostatok
Po druhé, obmedzuje dĺžku odpovede na týchto modeloch:
| Modely | Čo robí max_tokens |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Odpoveď sa zastaví, keď dosiahne limit. Stream potom skončí s finish_reason length. |
| Hostované open-weight modely | Text odpovede sa zastaví pri max_tokens. Uvažovanie sa doň nezapočítava. Hodnoty pod 256 sa správajú ako 256. |
Bez max_tokens alebo max_completion_tokens je hodnota 4,096. Na shannon-coder-1 je 65,536.
Správy
Každá správa je objekt s role a content. content je reťazec alebo pole častí, keď správa nesie viac než text.
| Rola | Popis | Uplatňuje |
|---|---|---|
system | Pokyny pre model. Dajte ju na začiatok. Na úrovniach Shannon sa použije prvá správa system. | Hostované open-weight modely, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | Číta sa ako system. | Hostované open-weight modely |
user | Na čo sa pýtate. Na úrovniach Shannon je posledná správa user prompt a správy pred ňou sú história. | Všetky modely |
assistant | Skoršie odpovede modelu. Ponechajte jeho tool_calls, keď za ne posielate výsledok nástroja. | Všetky modely |
tool | Výsledok volania nástroja: tool_call_id obsahuje id volania a content výsledok ako reťazec. | Všetky modely |
S id z rodiny Shannon 3 dajte pokyny, ktoré musia platiť, do správy user.
Na úrovniach Shannon vráti request bez textu používateľa a bez tools 400 No user message provided.
Časti obsahu
| Časť | Popis | Dostupné na |
|---|---|---|
{"type": "text", "text": "…"} | Čistý text. | Všetky modely |
{"type": "image_url", "image_url": {"url": "…"}} | Obrázok, ako URL data: s obsahom base64 alebo ako URL http(s). | Rodina Shannon 3, shannon-1.6-lite, shannon-1.6-pro a hostované open-weight modely, ktoré uvádzajú obrázkový vstup |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Dokument (PDF, Word, PowerPoint alebo Excel), ako base64 alebo cez URL. | Rodina Shannon 3 |
Veľkosti, limity a úplný zoznam foriem majú vlastnú stránku. Obrázky a súbory
Objekt odpovede
| Pole | Typ | Popis |
|---|---|---|
id | string | chatcmpl- nasledované 32 hexadecimálnymi znakmi. |
object | string | Vždy chat.completion. |
created | integer | Čas odpovede v sekundách Unix. |
model | string | Kanonické id modelu, ktorý odpovedal. Môže sa pravopisom líšiť od id, ktoré ste poslali. |
choices | array | Vždy presne jedna voľba, s index 0. |
choices[0].message.role | string | Vždy assistant. |
choices[0].message.content | string | null | Text odpovede. S tool_calls je na úrovniach Shannon null; hostované open-weight modely môžu popri volaniach poslať text. |
choices[0].message.reasoning_content | string | null | Uvažovanie, ktoré model napísal pred odpoveďou, alebo null, ak žiadne nie je. |
choices[0].message.tool_calls | array | Prítomné iba vtedy, keď model volá nástroje. Každá položka má id, type function a function s name a arguments ako reťazcom JSON. |
choices[0].message.annotations | array | Len pri requeste s web_search: true, ktorého vyhľadávanie niečo našlo. Jedna url_citation pre každý zdroj, ktorý značka v content pomenúva, s poľami url, title, start_index a end_index (pozícia značky počítaná v znakoch, koniec sa nezahŕňa). |
choices[0].finish_reason | string | Prečo odpoveď skončila. Pozrite Dôvody ukončenia. |
usage | object | Tokeny requestu. Pozrite Usage. |
sources | array | Len pri requeste s web_search: true, ktorého vyhľadávanie niečo našlo: výsledky, ktoré model dostal, každý s index, title a url. [1] v odpovedi je záznam s index 1. |
Dôvody ukončenia
| finish_reason | Popis |
|---|---|
stop | Model dokončil odpoveď, alebo sa objavil reťazec stop. |
tool_calls | Model volá jeden alebo viac nástrojov. Spustite ich a pošlite výsledky v správach tool. |
length | Odpoveď bola odrezaná na limite výstupu. Hlási sa v streamoch shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 a rodiny Shannon 3. |
Odpoveď, ktorá sa nestreamuje, hlási stop alebo tool_calls.
Usage
| Pole | Typ | Popis | Dostupné na |
|---|---|---|---|
usage.prompt_tokens | integer | Vstupné tokeny. | Všetky modely |
usage.completion_tokens | integer | Výstupné tokeny: uvažovanie, odpoveď a volania nástrojov spolu. | Všetky modely |
usage.total_tokens | integer | prompt_tokens plus completion_tokens. | Všetky modely |
usage.prompt_tokens_details.cached_tokens | integer | Časť prompt_tokens, ktorá sa prečítala z prompt cache. | Hostované open-weight modely |
usage.completion_tokens_details.reasoning_tokens | integer | Časť completion_tokens, ktorá sa minula na uvažovanie. | Hostované open-weight modely |
Na hostovaných open-weight modeloch sú prompt_tokens vaše správy a definície nástrojov spočítané vlastným tokenizerom modelu plus tokeny prípadných obrázkov. Endpointy na počítanie tokenov vrátia rovnaké číslo ešte pred odoslaním. Počítanie tokenov
Na úrovniach Shannon prompt_tokens počíta všetko, čo model prečítal na napísanie odpovede, takže je väčšie než samotný text vašich správ.
Streamovanie
S stream nastaveným na true odpoveď prichádza ako udalosti chat.completion.chunk a končí data: [DONE]. Posledný chunk pred ním nesie finish_reason a usage; stream_options netreba. Tvary chunkov, keep-alive riadky a chyby vnútri streamu majú vlastnú stránku. Streamovanie
Chyby
Chyba je objekt JSON s členom error. Kontroly bežia v tomto poradí: API kľúč, telo requestu, id modelu, potom zostatok. Tabuľka uvádza, čo tento endpoint vracia najčastejšie. Úplný zoznam s odporúčaním, čo opakovať, má vlastnú stránku. Spracovanie chýb
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Stav | Typ | Správa | Kedy |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Nebol odoslaný žiadny API kľúč, alebo je kľúč neznámy či zrušený. |
400 | invalid_request_error | unknown model: <id> | model nie je zverejnené id. |
400 | invalid_request_error | No user message provided | Úrovne Shannon: request nemá žiadny text používateľa ani tools. |
400 | invalid_request_error | <id> does not accept image input | Časť s obrázkom bola odoslaná hostovanému open-weight modelu bez obrázkového vstupu. |
400 | invalid_request_error | <id> does not accept response_format | response_format bol odoslaný hostovanému open-weight modelu bez štruktúrovaného výstupu. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort obsahuje hodnotu mimo zoznamu. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages chýba alebo pole má nesprávny typ JSON. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens je väčšie, než koľko zostáva z vášho zostatku. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Ochrana pred zahltením: viac ako 120 requestov za minútu na vašom účte. |
500 | server_error | The model backend failed to answer. Please retry. | Model nevytvoril odpoveď. Odošlite request znova. |
502 | api_error | The model backend failed to answer. Please retry. | To isté, v rodine Shannon 3 a na hostovaných open-weight modeloch. |