Chat Completions
POST /v1/chat/completions-ek elkarrizketa bat hartzen du eta modeloaren hurrengo mezua itzultzen du OpenAI Chat Completions formatuan. Erabili edozein OpenAI SDK-tik edo HTTP hutsean; orrialde hau eremuz eremuko erreferentzia da.
POST https://api.shannon-ai.com/v1/chat/completions
Eskaerarik txikiena modelo-id bat eta erabiltzaile-mezu bat da.
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."}]
}' Erantzuna JSON objektu bakar bat da:
{
"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
}
} Goiburuak
Eskaera-goiburuak
| Goiburua | Balioa | Deskribapena |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Zure API gakoa. Haren ordez x-api-key: YOUR_API_KEY onartzen da endpoint guztietan. |
Content-Type | application/json | Beharrezkoa. Beste edozein balioak 415 itzultzen du. |
x-request-id | Aukerakoa. Eskaerarentzako zure id propioa. Erantzunean aldatu gabe itzultzen da. |
Erantzun-goiburuak
| Goiburua | Deskribapena |
|---|---|
x-request-id | Erantzun guztietan, erroreak eta streamak barne: zuk bidalitako balioa, edo 12 karaktere hexadezimal ezer bidali ez baduzu. Aipatu arazo bat jakinarazten duzunean. |
content-type | application/json, edo text/event-stream stream true denean. |
Eskaera-eremuak
messages bakarrik da beharrezkoa. Aplikatzen duena zutabeak eremu batek erantzuna aldatzen duen modeloak adierazten ditu. Pisu irekiko modelo ostatatuak modelo-zerrendako hamabi id dira; Shannon 3 familia shannon-3, shannon-3-pro, shannon-3.1 eta shannon-3.1-pro da. Modeloak eta prezioak
| Eremua | Mota | Lehenetsia | Deskribapena | Aplikatzen duena |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Erantzuten duen modeloa: modelo-zerrendako id bat. Bidali eskaera guztiekin. Maiuskulak eta minuskulak ez dira bereizten. Argitaratu gabeko id batek 400 unknown model itzultzen du. | Modelo guztiak |
messages | array | Beharrezkoa. Elkarrizketa, mezurik zaharrena lehenik. Ikus beheko Mezuak. | Modelo guztiak | |
stream | boolean | false | true balioak erantzuna server-sent events gisa bidaltzen du idazten den heinean. | Modelo guztiak |
max_tokens | integer | 4096 | Erantzunaren goiko muga, tokenetan. 1etik 65,536ra bitarteko tartetik kanpoko balioa tarte horretara mugitzen da. Eskaerak irauten duen bitartean zure saldotik bereizten den kopurua ere bada. Ikus beheko Irteeraren luzera. | Pisu irekiko modelo ostatatuak, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens bezala. Biak bidaltzen direnean, max_tokens erabiltzen da. | Pisu irekiko modelo ostatatuak, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Laginketa-tenperatura. Pisu irekiko modelo ostatatuetan lehenetsia 1 da eta balioak 0 eta 2 artean mantentzen dira. | Pisu irekiko modelo ostatatuak, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nukleo-laginketa. Balioak 0 eta 1 artean mantentzen dira. | Pisu irekiko modelo ostatatuak |
seed | integer | Laginketaren hazia, edozein zenbaki oso. Gabe, hazia modeloaren eta elkarrizketaren arabera ateratzen da, beraz bi aldiz bidalitako eskaera berak hazi bera erabiltzen du. | Pisu irekiko modelo ostatatuak | |
stop | string | array | Kate bat edo kate-array bat. 4 arte erabiltzen dira. Erantzuna agertzen den lehenaren aurretik amaitzen da; gelditze-testua bera ez da itzultzen. | Pisu irekiko modelo ostatatuak | |
reasoning_effort | string | high | Modeloak erantzun aurretik zenbat arrazoitzen duen: off, low, medium edo high. none eta minimal off dira, default medium da, max high da. Beste edozein balioak 400 itzultzen du. | Pisu irekiko modelo ostatatuak |
reasoning | object | Ezarpen bera objektu-forman: {"effort": "low"}. Biak bidaltzen direnean, reasoning_effort erabiltzen da. | Pisu irekiko modelo ostatatuak | |
tools | array | Modeloak dei diezazkiokeen funtzioak, bakoitza {"type": "function", "function": {"name", "description", "parameters"}} gisa. Modeloaren deiak tool_calls-en itzultzen dira; zure kodeak exekutatzen ditu. | Modelo guztiak | |
tool_choice | string | object | auto | "auto" balioak modeloari erabakitzen uzten dio. "required" balioak tresna bati deitzera behartzen du. {"type": "function", "function": {"name": "…"}} balioak tresna jakin horri deitzera behartzen du. | Pisu irekiko modelo ostatatuak |
response_format | object | {"type": "json_object"} JSON erantzunerako, edo {"type": "json_schema", "json_schema": {…}} zure eskema jarraitzen duen erantzunerako. | Shannon maila guztiak; pisu irekiko modelo ostatatuak id bakoitzeko zerrendatu bezala | |
web_search | boolean | false | true balioak modeloari erantzun aurretik weba bilatzen uzten dio. | shannon-1.6-*, shannon-2-*, Shannon 3 familia |
OpenAI-ren beste eremu batzuk, hala nola n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store eta prompt_cache_key, onartzen dira lehendik dagoen bezero-kodea aldatu gabe ibil dadin. Ez dute erantzuna aldatzen: beti dago aukera bakarra, eta stream bat beti erabilerarekin amaitzen da.
JSON mota okerra duen eremu batek, adibidez "max_tokens": "100", 422 itzultzen du. messages gabeko eskaerak ere bai.
Tresnek, irteera egituratuak, arrazonamenduak eta web bilaketak beren orrialdea dute: Funtzio-deiak, Irteera egituratuak, Arrazonamendu-esfortzua, Web bilaketa.
Aukerak dituen eskaera
Eskaera honek system mezu bat, laginketa-eremuak eta arrazonamendu-esfortzua ezartzen ditu. Pisu irekiko modelo ostatatu bat erabiltzen du, eta horrek guztiak aplikatzen ditu.
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"
}' Erantzunak goiko forma bera du. Bere usage-k bi xehetasun gehitzen ditu pisu irekiko modelo ostatatuetan: cachetik irakurritako prompt-tokenak eta arrazonamenduan gastatutako tokenak.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Irteeraren luzera
max_tokens-ek bi gauza egiten ditu. Lehenik, eskaera hasten denean zure saldotik bereizten den token-kopurua da. Erantzuna osatzen denean, kopuru hori eskaerak erabilitako tokenek ordezkatzen dute. max_tokens zure saldoan geratzen dena baino handiagoa bada, eskaerak 429 Quota exceeded itzultzen du erantzuna bera sartuko litzatekeenean ere. Bidali max_tokens txikiagoa gutxiago bereizteko.
shannon-coder-1 modu desberdinean kontatzen da endpoint honetan: eskaera bakoitza zure planeko Shannon Coder dei bat da, eta ez da tokenik bereizten. Mugak eta saldoa
Bigarrenik, erantzunaren luzera mugatzen du modelo hauetan:
| Modeloak | Zer egiten duen max_tokens-ek |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Erantzuna mugara iristean gelditzen da. Streamak orduan finish_reason length balioarekin amaitzen da. |
| Pisu irekiko modelo ostatatuak | Erantzunaren testua max_tokens-en gelditzen da. Arrazonamendua ez da kontatzen. 256 azpiko balioek 256 bezala jokatzen dute. |
max_tokens edo max_completion_tokens gabe, balioa 4,096 da. shannon-coder-1-en 65,536 da.
Mezuak
Mezu bakoitza role eta content dituen objektu bat da. content kate bat da, edo zati-array bat mezuak testua baino gehiago daramanean.
| Rola | Deskribapena | Aplikatzen duena |
|---|---|---|
system | Modeloarentzako jarraibideak. Jarri lehenik. Shannon mailetan lehen system mezua da erabiltzen dena. | Pisu irekiko modelo ostatatuak, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system gisa irakurtzen da. | Pisu irekiko modelo ostatatuak |
user | Zer galdetzen duzun. Shannon mailetan azken user mezua prompt-a da, eta haren aurreko mezuak historia. | Modelo guztiak |
assistant | Modeloaren aurreko erantzunak. Mantendu haren tool_calls ondoren tresna-emaitza bat bidaltzen duzunean. | Modelo guztiak |
tool | Tresna-dei baten emaitza: tool_call_id-k deiaren id-a du eta content-ek emaitza kate gisa. | Modelo guztiak |
Shannon 3 familiako id batekin, jarri bete behar diren jarraibideak user mezuan.
Shannon mailetan, erabiltzaile-testurik eta tools-ik gabeko eskaerak 400 No user message provided itzultzen du.
Eduki-zatiak
| Zatia | Deskribapena | Eskuragarri hemen |
|---|---|---|
{"type": "text", "text": "…"} | Testu soila. | Modelo guztiak |
{"type": "image_url", "image_url": {"url": "…"}} | Irudi bat, base64 edukia duen data: URL gisa edo http(s) URL gisa. | Shannon 3 familia, shannon-1.6-lite, shannon-1.6-pro, eta irudi-sarrera zerrendatzen duten pisu irekiko modelo ostatatuak |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Dokumentu bat (PDF, Word, PowerPoint edo Excel), base64 gisa edo URL bidez. | Shannon 3 familia |
Tamainek, mugek eta forma guztien zerrendak beren orrialdea dute. Irudiak eta fitxategiak
Erantzun-objektua
| Eremua | Mota | Deskribapena |
|---|---|---|
id | string | chatcmpl- eta ondoren 32 karaktere hexadezimal. |
object | string | Beti chat.completion. |
created | integer | Erantzunaren unea, Unix segundotan. |
model | string | Erantzun duen modeloaren id kanonikoa. Idazkeran bidali duzun id-tik desberdin daiteke. |
choices | array | Beti aukera bakarra, index 0 duena. |
choices[0].message.role | string | Beti assistant. |
choices[0].message.content | string | null | Erantzunaren testua. tool_calls dagoenean null da Shannon mailetan; pisu irekiko modelo ostatatuek testua bidal dezakete deien ondoan. |
choices[0].message.reasoning_content | string | null | Modeloak erantzunaren aurretik idatzitako arrazonamendua, edo null ezer ez dagoenean. |
choices[0].message.tool_calls | array | Modeloak tresnei deitzen dienean bakarrik dago. Sarrera bakoitzak id bat, type function eta function bat ditu, name eta arguments JSON kate gisa dituela. |
choices[0].message.annotations | array | web_search: true duen eskaeran bakarrik, bilaketak zerbait aurkitu badu. url_citation bat content-eko marka batek izendatzen duen iturri bakoitzeko, url, title, start_index eta end_index eremuekin (markaren posizioa, karaktere kopuruan zenbatuta, amaiera barne gabe). |
choices[0].finish_reason | string | Erantzuna zergatik amaitu den. Ikus Amaiera-arrazoiak. |
usage | object | Eskaeraren tokenak. Ikus Erabilera. |
sources | array | web_search: true duen eskaeran bakarrik, bilaketak zerbait aurkitu badu: modeloak jaso dituen emaitzak, bakoitza index, title eta url eremuekin. Erantzunean [1] index 1 duen sarrera da. |
Amaiera-arrazoiak
| finish_reason | Deskribapena |
|---|---|
stop | Modeloak erantzuna amaitu du, edo stop kate bat agertu da. |
tool_calls | Modeloak tresna bati edo gehiagori deitzen die. Exekutatu eta bidali emaitzak tool mezuetan. |
length | Erantzuna irteera-mugan moztu da. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 eta Shannon 3 familiaren streametan jakinarazten da. |
Stream bidez ez doan erantzun batek stop edo tool_calls jakinarazten du.
Erabilera
| Eremua | Mota | Deskribapena | Eskuragarri hemen |
|---|---|---|---|
usage.prompt_tokens | integer | Sarrera-tokenak. | Modelo guztiak |
usage.completion_tokens | integer | Irteera-tokenak: arrazonamendua, erantzuna eta tresna-deiak batera. | Modelo guztiak |
usage.total_tokens | integer | prompt_tokens gehi completion_tokens. | Modelo guztiak |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens-en prompt cachetik irakurritako zatia. | Pisu irekiko modelo ostatatuak |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens-en arrazonamenduan gastatutako zatia. | Pisu irekiko modelo ostatatuak |
Pisu irekiko modelo ostatatuetan, prompt_tokens zure mezuak eta tresna-definizioak dira, modeloaren tokenizatzaile propioarekin kontatuta, gehi irudien tokenak. Token-kontaketako endpoint-ek zenbaki bera itzultzen dute bidali aurretik. Tokenen kontaketa
Shannon mailetan, prompt_tokens-ek modeloak erantzuna idazteko irakurri duen guztia kontatzen du, beraz zure mezuen testua bakarrik baino handiagoa da.
Streaminga
stream true bezala ezarrita, erantzuna chat.completion.chunk gertaera gisa iristen da eta data: [DONE]-rekin amaitzen da. Haren aurreko azken chunk-ak finish_reason eta usage ditu; ez da stream_options beharrik. Chunk-en formek, keep-alive lerroek eta streamen barruko erroreek beren orrialdea dute. Streaminga
Erroreak
Errore bat error kide bat duen JSON objektu bat da. Egiaztapenak ordena honetan egiten dira: API gakoa, eskaera-gorputza, modelo-id-a, eta gero saldoa. Taulak endpoint honek maizen itzultzen duena zerrendatzen du. Zerrenda osoak, zer berriz saiatu behar den adierazita, bere orrialdea du. Errore‑kudeaketa
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Egoera | Mota | Mezua | Noiz |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Ez da API gakorik bidali, edo gakoa ezezaguna edo indargabetua da. |
400 | invalid_request_error | unknown model: <id> | model ez da argitaratutako id bat. |
400 | invalid_request_error | No user message provided | Shannon mailak: eskaerak ez du erabiltzaile-testurik eta ez du tools-ik. |
400 | invalid_request_error | <id> does not accept image input | Irudi-zati bat bidali da irudi-sarrerarik ez duen pisu irekiko modelo ostatatu batera. |
400 | invalid_request_error | <id> does not accept response_format | response_format bidali da irteera egituraturik ez duen pisu irekiko modelo ostatatu batera. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort-ek zerrendatik kanpoko balio bat du. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages falta da, edo eremu batek JSON mota okerra du. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens zure saldoan geratzen dena baino handiagoa da. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood protection: minutu batean 120 eskaera baino gehiago zure kontuan. |
500 | server_error | The model backend failed to answer. Please retry. | Modeloak ez du erantzunik sortu. Bidali eskaera berriro. |
502 | api_error | The model backend failed to answer. Please retry. | Bera, Shannon 3 familian eta pisu irekiko modelo ostatatuetan. |