Chat Completions
POST /v1/chat/completions ottaa keskustelun ja palauttaa mallin seuraavan viestin OpenAI Chat Completions -muodossa. Käytä sitä miltä tahansa OpenAI SDK:lta tai suoraan HTTP:llä; tämä sivu on kenttäkohtainen viite.
POST https://api.shannon-ai.com/v1/chat/completions
Pienin pyyntö on mallin id ja yksi käyttäjän viesti.
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."}]
}' Vastaus on yksi JSON-objekti:
{
"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
}
} Otsakkeet
Pyynnön otsakkeet
| Otsake | Arvo | Kuvaus |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | API-avaimesi. x-api-key: YOUR_API_KEY hyväksytään sen sijasta jokaisessa päätepisteessä. |
Content-Type | application/json | Pakollinen. Mikä tahansa muu arvo palauttaa 415. |
x-request-id | Valinnainen. Oma id pyynnölle. Se palautuu vastauksessa muuttumattomana. |
Vastauksen otsakkeet
| Otsake | Kuvaus |
|---|---|
x-request-id | Jokaisessa vastauksessa, myös virheissä ja virroissa: lähettämäsi arvo tai 12 heksadesimaalimerkkiä, jos et lähettänyt mitään. Mainitse se ongelmaa ilmoittaessasi. |
content-type | application/json tai text/event-stream, kun stream on true. |
Pyynnön kentät
Vain messages on pakollinen. Käyttävät mallit -sarake nimeää mallit, joilla kenttä muuttaa vastausta. Hostatut avoimen painon mallit ovat mallilistan kaksitoista id:tä; Shannon 3 -perhe on shannon-3, shannon-3-pro, shannon-3.1 ja shannon-3.1-pro. Mallit ja hinnoittelu
| Kenttä | Tyyppi | Oletus | Kuvaus | Käyttävät mallit |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Vastaava malli: id mallilistasta. Lähetä se jokaisen pyynnön mukana. Kirjainkoolla ei ole merkitystä. Julkaisematon id palauttaa 400 unknown model. | Kaikki mallit |
messages | array | Pakollinen. Keskustelu vanhin viesti ensin. Katso alta Viestit. | Kaikki mallit | |
stream | boolean | false | true lähettää vastauksen server-sent events -tapahtumina sitä kirjoitettaessa. | Kaikki mallit |
max_tokens | integer | 4096 | Vastauksen yläraja tokeneina. Alueen 1–65,536 ulkopuolinen arvo siirretään tälle alueelle. Se on myös määrä, joka varataan saldostasi pyynnön ajaksi. Katso alta Tulosteen pituus. | Hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | Sama kuin max_tokens. Kun molemmat lähetetään, käytetään max_tokens-arvoa. | Hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Näytteenoton lämpötila. Hostatuilla avoimen painon malleilla oletus on 1 ja arvot pidetään välillä 0–2. | Hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus-näytteenotto. Arvot pidetään välillä 0–1. | Hostatut avoimen painon mallit |
seed | integer | Näytteistäjän siemen, mikä tahansa kokonaisluku. Ilman sitä siemen johdetaan mallista ja keskustelusta, joten kaksi kertaa lähetetty sama pyyntö käyttää samaa siementä. | Hostatut avoimen painon mallit | |
stop | string | array | Merkkijono tai merkkijonojen taulukko. Käytetään enintään 4. Vastaus päättyy ennen ensimmäistä niistä, joka esiintyy; pysäytystekstiä itseään ei palauteta. | Hostatut avoimen painon mallit | |
reasoning_effort | string | high | Kuinka paljon malli päättelee ennen vastaamista: off, low, medium tai high. none ja minimal tarkoittavat off, default tarkoittaa medium ja max tarkoittaa high. Mikä tahansa muu arvo palauttaa 400. | Hostatut avoimen painon mallit |
reasoning | object | Sama asetus objektimuodossa: {"effort": "low"}. Kun molemmat lähetetään, käytetään reasoning_effort-arvoa. | Hostatut avoimen painon mallit | |
tools | array | Funktiot, joita malli saa kutsua, kukin muodossa {"type": "function", "function": {"name", "description", "parameters"}}. Mallin kutsut palaavat kentässä tool_calls; koodisi suorittaa ne. | Kaikki mallit | |
tool_choice | string | object | auto | "auto" antaa mallin päättää. "required" pakottaa sen kutsumaan työkalua. {"type": "function", "function": {"name": "…"}} pakottaa sen kutsumaan kyseistä työkalua. | Hostatut avoimen painon mallit |
response_format | object | {"type": "json_object"} JSON-vastaukselle tai {"type": "json_schema", "json_schema": {…}} skeemasi mukaiselle vastaukselle. | Kaikki Shannon-tasot; hostatut avoimen painon mallit id:kohtaisen listauksen mukaan | |
web_search | boolean | false | true antaa mallin hakea verkosta ennen vastaamista. | shannon-1.6-*, shannon-2-*, Shannon 3 -perhe |
Muut OpenAI-kentät, kuten n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store ja prompt_cache_key, hyväksytään, jotta olemassa oleva asiakaskoodi toimii muuttumattomana. Ne eivät muuta vastausta: vaihtoehtoja on aina yksi, ja virta päättyy aina käyttötietoihin.
Kenttä, jonka JSON-tyyppi on väärä, esimerkiksi "max_tokens": "100", palauttaa 422. Samoin pyyntö ilman messages-kenttää.
Työkaluilla, strukturoidulla tulosteella, päättelyllä ja verkkohaulla on kullakin oma sivunsa: Toiminto kutsu, Strukturoidut lähdöt, Päättelyn teho, Sisäänrakennettu verkkohaku.
Pyyntö asetuksineen
Tämä pyyntö asettaa system-viestin, näytteenottokentät ja päättelyn tehon. Se käyttää hostattua avoimen painon mallia, joka soveltaa niitä kaikkia.
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"
}' Vastauksella on sama muoto kuin yllä. Sen usage lisää hostatuilla avoimen painon malleilla kaksi tietoa: välimuistista luetut prompt-tokenit ja päättelyyn käytetyt tokenit.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Tulosteen pituus
max_tokens tekee kaksi asiaa. Ensinnäkin se on tokenien määrä, joka varataan saldostasi pyynnön alussa. Kun vastaus on valmis, tämä määrä korvataan pyynnön käyttämillä tokeneilla. Jos max_tokens on suurempi kuin saldostasi jäljellä oleva määrä, pyyntö palauttaa 429 Quota exceeded, vaikka vastaus itsessään olisi mahtunut. Lähetä pienempi max_tokens, jos haluat varata vähemmän.
shannon-coder-1 lasketaan tässä päätepisteessä eri tavalla: jokainen pyyntö on yksi tilauksesi Shannon Coder -kutsuista, eikä sille varata tokeneita. Rajat ja saldo
Toiseksi se rajoittaa vastauksen pituutta näillä malleilla:
| Mallit | Mitä max_tokens tekee |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Vastaus päättyy, kun raja saavutetaan. Virta päättyy tällöin arvoon finish_reason length. |
| Hostatut avoimen painon mallit | Vastausteksti päättyy arvoon max_tokens. Päättelyä ei lasketa siihen. Alle 256 olevat arvot toimivat arvona 256. |
Ilman max_tokens- tai max_completion_tokens-kenttää arvo on 4,096. Mallilla shannon-coder-1 se on 65,536.
Viestit
Jokainen viesti on objekti, jolla on role ja content. content on merkkijono tai osien taulukko, kun viesti sisältää muutakin kuin tekstiä.
| Rooli | Kuvaus | Käyttävät mallit |
|---|---|---|
system | Ohjeet mallille. Laita se ensimmäiseksi. Shannon-tasoilla käytetään ensimmäistä system-viestiä. | Hostatut avoimen painon mallit, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | Luetaan kuten system. | Hostatut avoimen painon mallit |
user | Mitä kysyt. Shannon-tasoilla viimeinen user-viesti on prompt ja sitä edeltävät viestit ovat historiaa. | Kaikki mallit |
assistant | Mallin aiemmat vastaukset. Säilytä sen tool_calls, kun lähetät työkalun tuloksen sen jälkeen. | Kaikki mallit |
tool | Työkalukutsun tulos: tool_call_id sisältää kutsun id:n ja content tuloksen merkkijonona. | Kaikki mallit |
Shannon 3 -perheen id:llä pakollisesti noudatettavat ohjeet kuuluvat user-viestiin.
Shannon-tasoilla pyyntö ilman käyttäjän tekstiä ja ilman tools-kenttää palauttaa 400 No user message provided.
Sisältöosat
| Osa | Kuvaus | Saatavilla |
|---|---|---|
{"type": "text", "text": "…"} | Pelkkä teksti. | Kaikki mallit |
{"type": "image_url", "image_url": {"url": "…"}} | Kuva data:-URL:na base64-sisällöllä tai http(s)-URL:na. | Shannon 3 -perhe, shannon-1.6-lite, shannon-1.6-pro ja hostatut avoimen painon mallit, joiden syötteeksi kuva on merkitty |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Dokumentti (PDF, Word, PowerPoint tai Excel), base64-muodossa tai URL:llä. | Shannon 3 -perhe |
Koot, rajat ja muotojen täydellinen lista on kuvattu omalla sivullaan. Kuvat ja tiedostot
Vastausobjekti
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
id | string | chatcmpl- ja sen perässä 32 heksadesimaalimerkkiä. |
object | string | Aina chat.completion. |
created | integer | Vastauksen aika Unix-sekunteina. |
model | string | Vastanneen mallin kanoninen id. Sen kirjoitusasu voi poiketa lähettämästäsi id:stä. |
choices | array | Aina täsmälleen yksi vaihtoehto, jonka index on 0. |
choices[0].message.role | string | Aina assistant. |
choices[0].message.content | string | null | Vastauksen teksti. Kun tool_calls on mukana, se on Shannon-tasoilla null; hostatut avoimen painon mallit voivat lähettää tekstiä kutsujen rinnalla. |
choices[0].message.reasoning_content | string | null | Päättely, jonka malli kirjoitti ennen vastausta, tai null, jos sitä ei ole. |
choices[0].message.tool_calls | array | Mukana vain, kun malli kutsuu työkaluja. Jokaisella merkinnällä on id, type function ja function, jossa on name ja arguments JSON-merkkijonona. |
choices[0].message.annotations | array | Vain pyynnössä, jossa on web_search: true ja jonka haku löysi jotain. Yksi url_citation jokaista lähdettä kohti, jonka merkintä kentässä content nimeää, kentillä url, title, start_index ja end_index (merkinnän paikka merkkeinä laskettuna, loppua ei lasketa mukaan). |
choices[0].finish_reason | string | Miksi vastaus päättyi. Katso Päättymissyyt. |
usage | object | Pyynnön tokenit. Katso Käyttö. |
sources | array | Vain pyynnössä, jossa on web_search: true ja jonka haku löysi jotain: tulokset, jotka malli sai, kukin kentillä index, title ja url. Vastauksen [1] on merkintä, jonka index on 1. |
Päättymissyyt
| finish_reason | Kuvaus |
|---|---|
stop | Malli päätti vastauksensa, tai stop-merkkijono esiintyi. |
tool_calls | Malli kutsuu yhtä tai useampaa työkalua. Suorita ne ja lähetä tulokset tool-viesteissä. |
length | Vastaus katkaistiin tulosteen rajaan. Raportoidaan malleilla shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ja Shannon 3 -perheen virroissa. |
Suoratoistamaton vastaus raportoi arvon stop tai tool_calls.
Käyttö
| Kenttä | Tyyppi | Kuvaus | Saatavilla |
|---|---|---|---|
usage.prompt_tokens | integer | Syötetokenit. | Kaikki mallit |
usage.completion_tokens | integer | Tulostetokenit: päättely, vastaus ja työkalukutsut yhteensä. | Kaikki mallit |
usage.total_tokens | integer | prompt_tokens plus completion_tokens. | Kaikki mallit |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens-arvon osa, joka luettiin prompt-välimuistista. | Hostatut avoimen painon mallit |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens-arvon osa, joka käytettiin päättelyyn. | Hostatut avoimen painon mallit |
Hostatuilla avoimen painon malleilla prompt_tokens on viestiesi ja työkalumääritystesi koko mallin oman tokenisoijan laskemana sekä mahdollisten kuvien tokenit. Tokenien laskennan päätepisteet palauttavat saman luvun ennen lähettämistä. Tokenien laskenta
Shannon-tasoilla prompt_tokens laskee kaiken, minkä malli luki vastauksen kirjoittamiseksi, joten se on suurempi kuin pelkkä viestiesi teksti.
Suoratoisto
Kun stream on true, vastaus saapuu chat.completion.chunk-tapahtumina ja päättyy data: [DONE]. Sitä edeltävä viimeinen pala kuljettaa kentät finish_reason ja usage; stream_options-kenttiä ei tarvita. Palojen muodot, keep-alive-rivit ja virran sisäiset virheet on kuvattu omalla sivullaan. Suoratoisto
Virheet
Virhe on JSON-objekti, jossa on error-jäsen. Tarkistukset tehdään tässä järjestyksessä: API-avain, pyynnön runko, mallin id, sitten saldo. Taulukossa on yleisimmin palautuvat virheet tästä päätepisteestä. Täydellinen lista ja ohjeet uudelleenyritykseen ovat omalla sivullaan. Virheiden käsittely
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Tila | Tyyppi | Viesti | Milloin |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API-avainta ei lähetetty, tai avain on tuntematon tai mitätöity. |
400 | invalid_request_error | unknown model: <id> | model ei ole julkaistu id. |
400 | invalid_request_error | No user message provided | Shannon-tasot: pyynnössä ei ole käyttäjän tekstiä eikä tools-kenttää. |
400 | invalid_request_error | <id> does not accept image input | Kuvaosa lähetettiin hostatulle avoimen painon mallille, joka ei tue kuvasyötettä. |
400 | invalid_request_error | <id> does not accept response_format | response_format lähetettiin hostatulle avoimen painon mallille, jolla ei ole strukturoitua tulostetta. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort sisältää arvon, joka ei ole listalla. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages puuttuu, tai jonkin kentän JSON-tyyppi on väärä. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens on suurempi kuin saldostasi jäljellä oleva määrä. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Tulvasuoja: tililtäsi tuli yli 120 pyyntöä minuutissa. |
500 | server_error | The model backend failed to answer. Please retry. | Malli ei tuottanut vastausta. Lähetä pyyntö uudelleen. |
502 | api_error | The model backend failed to answer. Please retry. | Sama Shannon 3 -perheellä ja hostatuilla avoimen painon malleilla. |