Chat Completions
POST /v1/chat/completions přijímá konverzaci a vrací další zprávu modelu ve formátu OpenAI Chat Completions. Použijte jej z libovolného OpenAI SDK nebo přes prosté HTTP; tato stránka je reference pole po poli.
POST https://api.shannon-ai.com/v1/chat/completions
Nejmenší požadavek je id modelu a jedna zpráva uživatele.
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."}]
}' Odpověď 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 požadavku
| Hlavička | Hodnota | Popis |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Váš API klíč. Místo něj se na každém endpointu přijímá x-api-key: YOUR_API_KEY. |
Content-Type | application/json | Povinná. Jakákoli jiná hodnota vrátí 415. |
x-request-id | Volitelná. Vaše vlastní id požadavku. Vrátí se v odpovědi beze změny. |
Hlavičky odpovědi
| Hlavička | Popis |
|---|---|
x-request-id | V každé odpovědi, včetně chyb a streamů: hodnota, kterou jste poslali, nebo 12 hexadecimálních znaků, pokud jste neposlali žádnou. Uveďte ji, když hlásíte problém. |
content-type | application/json, nebo text/event-stream, když je stream true. |
Pole požadavku
Povinné je pouze messages. Sloupec Uplatňují uvádí modely, u nichž pole mění odpověď. Hostované modely s otevřenými váhami je dvanáct id ze seznamu modelů; rodina Shannon 3 je shannon-3, shannon-3-pro, shannon-3.1 a shannon-3.1-pro. Modely a ceny
| Pole | Typ | Výchozí | Popis | Uplatňují |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Model, který odpovídá: id ze seznamu modelů. Posílejte jej s každým požadavkem. Porovnání nerozlišuje velikost písmen. Id, které není zveřejněné, vrátí 400 unknown model. | Všechny modely |
messages | array | Povinné. Konverzace, nejstarší zpráva první. Viz Zprávy níže. | Všechny modely | |
stream | boolean | false | true pošle odpověď jako server-sent events, jak se píše. | Všechny modely |
max_tokens | integer | 4096 | Horní limit odpovědi v tokenech. Hodnota mimo rozsah 1 až 65,536 se posune do tohoto rozsahu. Je to také částka, která se vašemu zůstatku vyhradí po dobu běhu požadavku. Viz Délka výstupu níže. | Hostované modely s otevřenými váhami, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | Totéž jako max_tokens. Když se pošlou obě, použije se max_tokens. | Hostované modely s otevřenými váhami, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Teplota vzorkování. U hostovaných modelů s otevřenými váhami je výchozí hodnota 1 a hodnoty se drží mezi 0 a 2. | Hostované modely s otevřenými váhami, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. Hodnoty se drží mezi 0 a 1. | Hostované modely s otevřenými váhami |
seed | integer | Seed vzorkovače, libovolné celé číslo. Bez něj se seed odvozuje z modelu a konverzace, takže stejný požadavek odeslaný dvakrát použije stejný seed. | Hostované modely s otevřenými váhami | |
stop | string | array | Řetězec nebo pole řetězců. Použijí se nejvýše 4. Odpověď skončí před prvním z nich, který se objeví; samotný zastavovací text se nevrací. | Hostované modely s otevřenými váhami | |
reasoning_effort | string | high | Kolik model uvažuje, než odpoví: off, low, medium nebo high. none a minimal znamenají off, default znamená medium, max znamená high. Jakákoli jiná hodnota vrátí 400. | Hostované modely s otevřenými váhami |
reasoning | object | Stejné nastavení v podobě objektu: {"effort": "low"}. Když se pošlou obě, použije se reasoning_effort. | Hostované modely s otevřenými váhami | |
tools | array | Funkce, které model smí volat, každá jako {"type": "function", "function": {"name", "description", "parameters"}}. Volání modelu se vrací v tool_calls; váš kód je spouští. | Všechny modely | |
tool_choice | string | object | auto | "auto" nechá rozhodnout model. "required" jej přiměje zavolat nástroj. {"type": "function", "function": {"name": "…"}} jej přiměje zavolat daný nástroj. | Hostované modely s otevřenými váhami |
response_format | object | {"type": "json_object"} pro odpověď JSON, nebo {"type": "json_schema", "json_schema": {…}} pro odpověď, která sleduje vaše schéma. | Všechny úrovně Shannon; hostované modely s otevřenými váhami podle toho, jak je uvedeno u každého id | |
web_search | boolean | false | true umožní modelu před odpovědí vyhledávat na webu. | shannon-1.6-*, shannon-2-*, rodina Shannon 3 |
Další pole OpenAI, například n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store a prompt_cache_key, se přijímají, aby stávající klientský kód běžel beze změny. Odpověď neovlivňují: vždy existuje jedna volba a stream vždy končí využitím.
Pole se špatným typem JSON, například "max_tokens": "100", vrátí 422. Stejně tak požadavek bez messages.
Nástroje, strukturovaný výstup, uvažování a vyhledávání na webu mají každé vlastní stránku: Volání funkcí, Strukturované výstupy, Úsilí uvažování, Vestavěné webové vyhledávání.
Požadavek s volbami
Tento požadavek nastavuje zprávu system, pole vzorkování a úsilí uvažování. Používá hostovaný model s otevřenými váhami, který uplatní všechny.
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"
}' Odpověď má stejný tvar jako výše. Její usage u hostovaných modelů s otevřenými váhami přidává dva údaje: prompt tokeny přečtené z cache a tokeny spotřebované na uvažování.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Délka výstupu
max_tokens dělá dvě věci. Za prvé je to počet tokenů, které se vašemu zůstatku vyhradí při zahájení požadavku. Po dokončení odpovědi se tato částka nahradí tokeny, které požadavek skutečně spotřeboval. Pokud je max_tokens větší, než kolik zbývá z vašeho zůstatku, požadavek vrátí 429 Quota exceeded, i když by se samotná odpověď vešla. Pošlete nižší max_tokens, aby se vyhradilo méně.
shannon-coder-1 se na tomto endpointu počítá jinak: každý požadavek je jedno z volání Shannon Coder vašeho plánu a nevyhrazují se pro něj žádné tokeny. Limity a zůstatek
Za druhé omezuje délku odpovědi u těchto modelů:
| Modely | Co dělá max_tokens |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Odpověď se zastaví, když dosáhne limitu. Stream pak skončí s finish_reason length. |
| Hostované modely s otevřenými váhami | Text odpovědi se zastaví na max_tokens. Uvažování se do něj nepočítá. Hodnoty pod 256 se chovají jako 256. |
Bez max_tokens nebo max_completion_tokens je hodnota 4,096. U shannon-coder-1 je 65,536.
Zprávy
Každá zpráva je objekt s role a content. content je řetězec, nebo pole částí, když zpráva nese víc než text.
| Role | Popis | Uplatňují |
|---|---|---|
system | Instrukce pro model. Dejte ji na začátek. Na úrovních Shannon se používá první zpráva system. | Hostované modely s otevřenými váhami, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | Čte se jako system. | Hostované modely s otevřenými váhami |
user | Na co se ptáte. Na úrovních Shannon je poslední zpráva user prompt a zprávy před ní jsou historie. | Všechny modely |
assistant | Dřívější odpovědi modelu. Ponechte jeho tool_calls, když za ně posíláte výsledek nástroje. | Všechny modely |
tool | Výsledek volání nástroje: tool_call_id obsahuje id volání a content výsledek jako řetězec. | Všechny modely |
U id z rodiny Shannon 3 dejte instrukce, které musí platit, do zprávy user.
Na úrovních Shannon vrátí požadavek bez uživatelského textu a bez tools 400 No user message provided.
Části obsahu
| Část | Popis | Dostupné na |
|---|---|---|
{"type": "text", "text": "…"} | Prostý text. | Všechny modely |
{"type": "image_url", "image_url": {"url": "…"}} | Obrázek, jako URL data: s obsahem base64 nebo jako URL http(s). | Rodina Shannon 3, shannon-1.6-lite, shannon-1.6-pro a hostované modely s otevřenými váhami, které uvádějí obrázkový vstup |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Dokument (PDF, Word, PowerPoint nebo Excel), jako base64 nebo pomocí URL. | Rodina Shannon 3 |
Velikosti, limity a úplný seznam forem mají vlastní stránku. Obrázky a soubory
Objekt odpovědi
| Pole | Typ | Popis |
|---|---|---|
id | string | chatcmpl- následované 32 hexadecimálními znaky. |
object | string | Vždy chat.completion. |
created | integer | Čas odpovědi, v sekundách Unix. |
model | string | Kanonické id modelu, který odpověděl. Může se v zápisu lišit od id, které jste poslali. |
choices | array | Vždy právě jedna volba, s index 0. |
choices[0].message.role | string | Vždy assistant. |
choices[0].message.content | string | null | Text odpovědi. S tool_calls je na úrovních Shannon null; hostované modely s otevřenými váhami mohou vedle volání poslat text. |
choices[0].message.reasoning_content | string | null | Uvažování, které model napsal před odpovědí, nebo null, pokud žádné není. |
choices[0].message.tool_calls | array | Přítomno, pouze když model volá nástroje. Každá položka má id, type function a function s name a arguments jako řetězcem JSON. |
choices[0].message.annotations | array | Jen u požadavku s web_search: true, jehož vyhledávání něco našlo. Jeden url_citation pro každý zdroj, který jmenuje značka v content, s url, title, start_index a end_index (pozice značky počítaná ve znacích, konec se nezahrnuje). |
choices[0].finish_reason | string | Proč odpověď skončila. Viz Důvody ukončení. |
usage | object | Tokeny požadavku. Viz Využití. |
sources | array | Jen u požadavku s web_search: true, jehož vyhledávání něco našlo: výsledky, které model dostal, každý s index, title a url. [1] v odpovědi je záznam s index 1. |
Důvody ukončení
| finish_reason | Popis |
|---|---|
stop | Model dokončil odpověď, nebo se objevil řetězec stop. |
tool_calls | Model volá jeden nebo více nástrojů. Spusťte je a pošlete výsledky ve zprávách tool. |
length | Odpověď byla useknuta na výstupním limitu. Hlásí se ve streamech shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 a rodiny Shannon 3. |
Odpověď, která není streamovaná, hlásí stop nebo tool_calls.
Využití
| Pole | Typ | Popis | Dostupné na |
|---|---|---|---|
usage.prompt_tokens | integer | Vstupní tokeny. | Všechny modely |
usage.completion_tokens | integer | Výstupní tokeny: uvažování, odpověď a volání nástrojů dohromady. | Všechny modely |
usage.total_tokens | integer | prompt_tokens plus completion_tokens. | Všechny modely |
usage.prompt_tokens_details.cached_tokens | integer | Část prompt_tokens, která byla přečtena z cache promptů. | Hostované modely s otevřenými váhami |
usage.completion_tokens_details.reasoning_tokens | integer | Část completion_tokens, která byla spotřebována na uvažování. | Hostované modely s otevřenými váhami |
U hostovaných modelů s otevřenými váhami jsou prompt_tokens vaše zprávy a definice nástrojů spočítané vlastním tokenizérem modelu plus tokeny případných obrázků. Endpointy pro počítání tokenů vrací stejné číslo dřív, než odešlete. Počítání tokenů
Na úrovních Shannon prompt_tokens počítá všechno, co model přečetl, aby napsal odpověď, takže je větší než samotný text vašich zpráv.
Streamování
S stream nastaveným na true odpověď přichází jako události chat.completion.chunk a končí data: [DONE]. Poslední chunk před ním nese finish_reason a usage; stream_options nejsou potřeba. Tvary chunků, keep-alive řádky a chyby uvnitř streamu mají vlastní stránku. Streamování
Chyby
Chyba je objekt JSON se členem error. Kontroly probíhají v tomto pořadí: API klíč, tělo požadavku, id modelu, pak zůstatek. Tabulka uvádí, co tento endpoint vrací nejčastěji. Úplný seznam, včetně toho, co opakovat, má vlastní stránku. Zpracování chyb
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Stav | Typ | Zpráva | Kdy |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Nebyl odeslán žádný API klíč, nebo je klíč neznámý či zrušený. |
400 | invalid_request_error | unknown model: <id> | model není zveřejněné id. |
400 | invalid_request_error | No user message provided | Úrovně Shannon: požadavek neobsahuje žádný uživatelský text ani tools. |
400 | invalid_request_error | <id> does not accept image input | Část s obrázkem byla odeslána hostovanému modelu s otevřenými váhami bez obrázkového vstupu. |
400 | invalid_request_error | <id> does not accept response_format | response_format byl odeslán hostovanému modelu s otevřenými váhami bez strukturovaného výstupu. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort obsahuje hodnotu mimo seznam. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | Chybí messages, nebo má některé pole špatný typ JSON. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens je větší, než kolik zbývá z vašeho zůstatku. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Ochrana proti zahlcení: více než 120 požadavků za jednu minutu na vašem účtu. |
500 | server_error | The model backend failed to answer. Please retry. | Model nevytvořil odpověď. Odešlete požadavek znovu. |
502 | api_error | The model backend failed to answer. Please retry. | Totéž, u rodiny Shannon 3 a hostovaných modelů s otevřenými váhami. |