Chat Completions
I-POST /v1/chat/completions yamukela ingxoxo bese ibuyisela umlayezo olandelayo we-model ngefomethi ye-OpenAI Chat Completions. Yisebenzise kunoma iyiphi i-OpenAI SDK noma nge-HTTP elula; leli khasi liyinkomba ye-field nge-field.
POST https://api.shannon-ai.com/v1/chat/completions
Isicelo esincane kakhulu siyi-id ye-model nomlayezo owodwa womsebenzisi.
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."}]
}' Impendulo iyinto eyodwa ye-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
}
} Ama-header
Ama-header esicelo
| I-header | Inani | Incazelo |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | I-API key yakho. I-x-api-key: YOUR_API_KEY iyamukelwa esikhundleni sayo kuwo wonke ama-endpoint. |
Content-Type | application/json | Iyadingeka. Noma yiliphi elinye inani libuyisela i-415. |
x-request-id | Ayiphoqelekile. I-id yakho yesicelo. Ibuya ingashintshiwe empendulweni. |
Ama-header empendulo
| I-header | Incazelo |
|---|---|
x-request-id | Kuyo yonke impendulo, kufaka amaphutha nama-stream: inani olithumele, noma izinhlamvu ze-hexadecimal ezingu-12 uma ungathumelanga lutho. Yicaphune uma ubika inkinga. |
content-type | I-application/json, noma i-text/event-stream uma i-stream ithi true. |
Ama-field esicelo
I-messages kuphela edingekayo. Ikholomu ethi Kusebenza ku- ibala ama-model lapho i-field ishintsha khona impendulo. Ama-model e-open-weight ahlinzekiwe ama-id ayishumi nambili osukwini lwama-model; umndeni we-Shannon 3 ngu-shannon-3, shannon-3-pro, shannon-3.1 no-shannon-3.1-pro. Ama-model namanani
| I-field | Uhlobo | Okuzenzakalelayo | Incazelo | Kusebenza ku- |
|---|---|---|---|---|
model | string | shannon-1.6-lite | I-model ephendulayo: i-id evela ohlwini lwama-model. Ithumele kuso sonke isicelo. Ukufanisa akunaki ukuhluka phakathi kwezinhlamvu ezinkulu nezincane. I-id engashicilelwanga ibuyisela i-400 unknown model. | Wonke ama-model |
messages | array | Iyadingeka. Ingxoxo, umlayezo omdala kuqala. Bheka Imilayezo ngezansi. | Wonke ama-model | |
stream | boolean | false | I-true ithumela impendulo njenge-server-sent events ngenkathi ibhalwa. | Wonke ama-model |
max_tokens | integer | 4096 | Umkhawulo ophezulu wempendulo, ngama-token. Inani elingaphandle kuka-1 kuya ku-65,536 lisondezwa kulelo cala. Futhi yilona nani elibekelwa eceleni ku-balance yakho ngenkathi isicelo sisebenza. Bheka Ubude bokuphumayo ngezansi. | Ama-model e-open-weight ahlinzekiwe, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | Okufanayo ne-max_tokens. Uma zombili zithunyelwe, i-max_tokens iyasetshenziswa. | Ama-model e-open-weight ahlinzekiwe, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Izinga lokushisa le-sampling. Kuma-model e-open-weight ahlinzekiwe okuzenzakalelayo ngu-1 futhi amanani agcinwa phakathi kuka-0 no-2. | Ama-model e-open-weight ahlinzekiwe, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | I-nucleus sampling. Amanani agcinwa phakathi kuka-0 no-1. | Ama-model e-open-weight ahlinzekiwe |
seed | integer | I-seed ye-sampler, noma iyiphi inombolo ephelele. Ngaphandle kwayo, i-seed ikhiqizwa ku-model nasengxoxweni, ngakho isicelo esifanayo esithunyelwe kabili sisebenzisa i-seed efanayo. | Ama-model e-open-weight ahlinzekiwe | |
stop | string | array | I-string noma uhlu lwama-string. Kusetshenziswa angafika ku-4. Impendulo iphela ngaphambi kokuqala okubonakala; umbhalo wokumisa ngokwawo awubuyiswa. | Ama-model e-open-weight ahlinzekiwe | |
reasoning_effort | string | high | Ukuthi i-model icabanga kangakanani ngaphambi kokuphendula: off, low, medium noma high. I-none ne-minimal zisho off, i-default isho medium, i-max isho high. Noma yiliphi elinye inani libuyisela i-400. | Ama-model e-open-weight ahlinzekiwe |
reasoning | object | Isilungiselelo esifanayo ngesimo sento: {"effort": "low"}. Uma zombili zithunyelwe, i-reasoning_effort iyasetshenziswa. | Ama-model e-open-weight ahlinzekiwe | |
tools | array | Imisebenzi i-model engayibiza, ngayinye njenge-{"type": "function", "function": {"name", "description", "parameters"}}. Ukubiza kwe-model kubuya ku-tool_calls; ikhodi yakho iyawenza. | Wonke ama-model | |
tool_choice | string | object | auto | I-"auto" ivumela i-model ukuthi inqume. I-"required" iyiphoqa ukuthi ibize ithuluzi. I-{"type": "function", "function": {"name": "…"}} iyiphoqa ukuthi ibize lelo thuluzi. | Ama-model e-open-weight ahlinzekiwe |
response_format | object | {"type": "json_object"} ukuthola impendulo ye-JSON, noma {"type": "json_schema", "json_schema": {…}} ukuthola impendulo elandela i-schema yakho. | Wonke amazinga e-Shannon; ama-model e-open-weight ahlinzekiwe njengoba elandelisiwe nge-id | |
web_search | boolean | false | I-true ivumela i-model ukuthi isesha kuwebhu ngaphambi kokuphendula. | shannon-1.6-*, shannon-2-*, umndeni we-Shannon 3 |
Ezinye ama-field e-OpenAI, afana ne-n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store ne-prompt_cache_key, ayamukelwa ukuze ikhodi yeklayenti esekhona isebenze ngaphandle kokushintshwa. Awashintshi impendulo: njalo kunokukhetha okukodwa, futhi i-stream iphela njalo ngokusetshenziswa.
I-field enohlobo olungalungile lwe-JSON, isibonelo "max_tokens": "100", ibuyisela i-422. Isicelo esingenayo i-messages senza okufanayo.
Amathuluzi, okuphumayo okuhleliwe, ukucabanga nokusesha kuwebhu kunekhasi lakho ngalinye: Ukubiza umsebenzi, Imiphumela ehlanganisiwe, Umzamo wokucabanga, Usesho lwewebhu.
Isicelo esinezinketho
Lesi sicelo sisetha umlayezo wesistimu, ama-field e-sampling nomzamo wokucabanga. Sisebenzisa i-model ye-open-weight ehlinzekiwe, esebenzisa zonke lezi.
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"
}' Impendulo inesimo esifanayo nesingenhla. I-usage yayo yengeza imininingwane emibili kuma-model e-open-weight ahlinzekiwe: ama-token e-prompt afundwe ku-cache nama-token asetshenziselwe ukucabanga.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Ubude bokuphumayo
I-max_tokens yenza izinto ezimbili. Okokuqala, inani lama-token abekelwa eceleni ku-balance yakho lapho isicelo siqala. Uma impendulo isiphelele, lelo nani lifakwa esikhundleni sama-token isicelo esizisebenzisile. Uma i-max_tokens inkulu kunalokho okusele ku-balance yakho, isicelo sibuyisela i-429 Quota exceeded noma impendulo ngokwayo ibizofaneleka. Thumela i-max_tokens encane ukuze ubeke eceleni okuncane.
I-shannon-coder-1 ibalwa ngokuhlukile kule endpoint: isicelo ngasinye siyisicelo esisodwa se-Shannon Coder sepulani yakho, futhi akukho ma-token abekelwa eceleni. Imikhawulo ne-balance
Okwesibili, ikhawulela ubude bempendulo kulawa ma-model:
| Ama-model | Lokho i-max_tokens ekwenzayo |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Impendulo iyeka uma ifinyelela emkhawulweni. I-stream bese iphela nge-finish_reason length. |
| Ama-model e-open-weight ahlinzekiwe | Umbhalo wempendulo umiswa ku-max_tokens. Ukucabanga akubalwa kuyo. Amanani angaphansi kuka-256 asebenza njengo-256. |
Ngaphandle kwe-max_tokens noma i-max_completion_tokens, inani lingu-4,096. Ku-shannon-coder-1 lingu-65,536.
Imilayezo
Umlayezo ngamunye uyinto ene-role ne-content. I-content iyi-string, noma uhlu lwezingxenye uma umlayezo uphatha okungaphezu kombhalo.
| Indima | Incazelo | Kusebenza ku- |
|---|---|---|
system | Imiyalo ye-model. Yifake kuqala. Emazingeni e-Shannon umlayezo wokuqala we-system yilona osetshenziswayo. | Ama-model e-open-weight ahlinzekiwe, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | Ifundwa njenge-system. | Ama-model e-open-weight ahlinzekiwe |
user | Lokho okubuzayo. Emazingeni e-Shannon umlayezo wokugcina we-user yi-prompt futhi imilayezo ngaphambi kwawo iyumlando. | Wonke ama-model |
assistant | Izimpendulo zangaphambilini ze-model. Gcina i-tool_calls yayo uma uthumela umphumela wethuluzi ngemuva kwayo. | Wonke ama-model |
tool | Umphumela wokubiza ithuluzi: i-tool_call_id iphethe i-id yokubiza ne-content umphumela njenge-string. | Wonke ama-model |
Nge-id yomndeni we-Shannon 3, faka imiyalo okufanele ilandelwe emlayezweni we-user.
Emazingeni e-Shannon isicelo esingenawo umbhalo womsebenzisi futhi singenawo ama-tools sibuyisela i-400 No user message provided.
Izingxenye zokuqukethwe
| Ingxenye | Incazelo | Kuyatholakala ku- |
|---|---|---|
{"type": "text", "text": "…"} | Umbhalo olula. | Wonke ama-model |
{"type": "image_url", "image_url": {"url": "…"}} | Isithombe, njenge-URL ye-data: enokuqukethwe kwe-base64 noma njenge-URL ye-http(s). | Umndeni we-Shannon 3, shannon-1.6-lite, shannon-1.6-pro, nama-model e-open-weight ahlinzekiwe abala okufakwayo kwezithombe |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Idokhumenti (PDF, Word, PowerPoint noma Excel), nge-base64 noma nge-URL. | Umndeni we-Shannon 3 |
Osayizi, imikhawulo nohlu olugcwele lwamafomu zinekhasi lazo. Izithombe namafayela
Into yempendulo
| I-field | Uhlobo | Incazelo |
|---|---|---|
id | string | I-chatcmpl- elandelwa yizinhlamvu ze-hexadecimal ezingu-32. |
object | string | Njalo chat.completion. |
created | integer | Isikhathi sempendulo, ngemizuzwana ye-Unix. |
model | string | I-id ye-canonical ye-model ephendulile. Ingahluka ngokuhlukanisa nge-id oyithumele. |
choices | array | Njalo kunokukhetha okukodwa kuphela, nge-index 0. |
choices[0].message.role | string | Njalo assistant. |
choices[0].message.content | string | null | Umbhalo wempendulo. Nge-tool_calls uthi null emazingeni e-Shannon; ama-model e-open-weight ahlinzekiwe angathumela umbhalo eceleni kokubiza. |
choices[0].message.reasoning_content | string | null | Ukucabanga i-model eyakubhale ngaphambi kwempendulo, noma null uma kungekho. |
choices[0].message.tool_calls | array | Ikhona kuphela uma i-model ibiza amathuluzi. Okufakiwe ngakunye kunalo i-id, i-type function, ne-function ene-name nama-arguments njenge-string ye-JSON. |
choices[0].message.annotations | array | Kuphela esicelweni esine-web_search: true okusesha kwaso kuthole okuthile. I-url_citation eyodwa emthonjeni ngamunye obizwa uphawu ku-content, ne-url, title, start_index ne-end_index (isikhundla sophawu, esibalwa ngezinhlamvu, isiphetho asifakwanga). |
choices[0].finish_reason | string | Isizathu sokuthi impendulo iphele. Bheka Izizathu zokuphela. |
usage | object | Ama-token esicelo. Bheka Ukusetshenziswa. |
sources | array | Kuphela esicelweni esine-web_search: true okusesha kwaso kuthole okuthile: imiphumela i-model eyinikeziwe, ngayinye ine-index, title ne-url. I-[1] empendulweni yilokho okufakiwe okune-index 1. |
Izizathu zokuphela
| finish_reason | Incazelo |
|---|---|
stop | I-model iqedile impendulo yayo, noma i-string ye-stop ivelile. |
tool_calls | I-model ibiza ithuluzi elilodwa noma ngaphezulu. Lisebenzise bese uthumela imiphumela kumilayezo ye-tool. |
length | Impendulo inqunyiwe emkhawulweni wokuphumayo. Kubikwa kuma-stream e-shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 nomndeni we-Shannon 3. |
Impendulo engasakazwa ibika i-stop noma i-tool_calls.
Ukusetshenziswa
| I-field | Uhlobo | Incazelo | Kuyatholakala ku- |
|---|---|---|---|
usage.prompt_tokens | integer | Ama-token okufakwayo. | Wonke ama-model |
usage.completion_tokens | integer | Ama-token okuphumayo: ukucabanga, impendulo nokubiza amathuluzi ndawonye. | Wonke ama-model |
usage.total_tokens | integer | I-prompt_tokens kanye ne-completion_tokens. | Wonke ama-model |
usage.prompt_tokens_details.cached_tokens | integer | Ingxenye ye-prompt_tokens efundwe ku-prompt cache. | Ama-model e-open-weight ahlinzekiwe |
usage.completion_tokens_details.reasoning_tokens | integer | Ingxenye ye-completion_tokens esetshenziselwe ukucabanga. | Ama-model e-open-weight ahlinzekiwe |
Kuma-model e-open-weight ahlinzekiwe, i-prompt_tokens yimilayezo yakho nezincazelo zamathuluzi zibalwa nge-tokenizer ye-model ngokwayo, kanye nama-token ezithombe zonke. Ama-endpoint okubala ama-token abuyisela inombolo efanayo ngaphambi kokuthumela. Ukubala ama-token
Emazingeni e-Shannon, i-prompt_tokens ibala konke i-model eyakufunda ukubhala impendulo, ngakho inkulu kunombhalo wemilayezo yakho wodwa.
I-Streaming
Nge-stream esethelwe ku-true impendulo ifika njengemicimbi ye-chat.completion.chunk bese iphela nge-data: [DONE]. I-chunk yokugcina ngaphambi kwayo iphatha i-finish_reason ne-usage; akudingeki ama-stream_options. Izimo ze-chunk, imigqa ye-keep-alive namaphutha ngaphakathi kwe-stream kunekhasi lakho. Ukusakaza
Amaphutha
Iphutha liyinto ye-JSON enelungu le-error. Ukuhlola kwenziwa ngalolu hlelo: i-API key, umzimba wesicelo, i-id ye-model, bese i-balance. Ithebula libala lokho le-endpoint ebuyisela kaningi. Uhlu olugcwele, nalokho okufanele kuzanywe futhi, lunekhasi lalo. Ukuphathwa kwamaphutha
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Isimo | Uhlobo | Umlayezo | Nini |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Ayikho i-API key ethunyelwe, noma i-key ayaziwa noma ihoxisiwe. |
400 | invalid_request_error | unknown model: <id> | I-model akuyona i-id eshicilelwe. |
400 | invalid_request_error | No user message provided | Amazinga e-Shannon: isicelo asinawo umbhalo womsebenzisi futhi asinawo ama-tools. |
400 | invalid_request_error | <id> does not accept image input | Ingxenye yesithombe ithunyelwe ku-model ye-open-weight ehlinzekiwe engenakho ukufakwa kwezithombe. |
400 | invalid_request_error | <id> does not accept response_format | I-response_format ithunyelwe ku-model ye-open-weight ehlinzekiwe engenakho okuphumayo okuhleliwe. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | I-reasoning_effort iphethe inani elingaphandle kohlu. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | I-messages ilahlekile, noma i-field inohlobo olungalungile lwe-JSON. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | I-max_tokens inkulu kunalokho okusele ku-balance yakho. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | I-flood protection: izicelo ezingaphezu kwe-120 ngomzuzu owodwa ku-akhawunti yakho. |
500 | server_error | The model backend failed to answer. Please retry. | I-model ayikhiqizanga mpendulo. Thumela isicelo futhi. |
502 | api_error | The model backend failed to answer. Please retry. | Okufanayo, kumndeni we-Shannon 3 nakuma-model e-open-weight ahlinzekiwe. |