Chat Completions
POST /v1/chat/completions нь харилцан яриаг авч, загварын дараагийн мессежийг OpenAI Chat Completions форматаар буцаана. Үүнийг аль ч OpenAI SDK-аас эсвэл энгийн HTTP-ээр ашиглана; энэ хуудас бол талбар тус бүрийн лавлах.
POST https://api.shannon-ai.com/v1/chat/completions
Хамгийн жижиг хүсэлт нь загварын id болон нэг хэрэглэгчийн мессеж.
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."}]
}' Хариулт нь нэг 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
}
} Header-ууд
Хүсэлтийн header-ууд
| Header | Утга | Тайлбар |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Таны API түлхүүр. Үүний оронд endpoint бүр дээр x-api-key: YOUR_API_KEY хүлээн зөвшөөрөгдөнө. |
Content-Type | application/json | Заавал. Өөр утга 415 буцаана. |
x-request-id | Заавал биш. Хүсэлтийн таны өөрийн id. Хариулт дээр хэвээр буцаж ирнэ. |
Хариултын header-ууд
| Header | Тайлбар |
|---|---|
x-request-id | Хариулт бүр дээр, алдаа ба stream-ийг оруулан: таны илгээсэн утга, эсвэл юу ч илгээгээгүй бол 12 арвантын тэмдэгт. Асуудал мэдээлэхдээ үүнийг иш татна уу. |
content-type | application/json, эсвэл stream нь true үед text/event-stream. |
Хүсэлтийн талбарууд
Зөвхөн messages заавал шаардлагатай. Хэрэгжүүлэгч багана нь талбар хариултыг өөрчилдөг загваруудыг нэрлэнэ. Hosted open-weight загварууд нь загварын жагсаалтын арван хоёр id; Shannon 3 гэр бүл нь shannon-3, shannon-3-pro, shannon-3.1 болон shannon-3.1-pro. Загвар ба үнэ
| Талбар | Төрөл | Үндсэн утга | Тайлбар | Хэрэгжүүлэгч |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Хариулах загвар: загварын жагсаалтаас нэг id. Хүсэлт бүртэй хамт илгээнэ. Том жижиг үсгийг ялгахгүй. Нийтлээгүй id 400 unknown model буцаана. | Бүх загвар |
messages | array | Заавал. Харилцан яриа, хамгийн эхний мессеж нь эхэнд. Доорх Мессеж хэсгийг үзнэ үү. | Бүх загвар | |
stream | boolean | false | true нь хариултыг бичигдэж байх үед server-sent events хэлбэрээр илгээнэ. | Бүх загвар |
max_tokens | integer | 4096 | Хариултын дээд хязгаар, токеноор. 1-ээс 65,536-ийн гаднах утгыг тэр мужид оруулна. Мөн хүсэлт ажиллаж байх хугацаанд таны үлдэгдлээс нөөцлөгдөх хэмжээ юм. Доорх Гаралтын урт хэсгийг үзнэ үү. | Hosted open-weight загварууд, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens-тэй адил. Хоёуланг нь илгээвэл max_tokens-ийг ашиглана. | Hosted open-weight загварууд, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Sampling temperature. Hosted open-weight загварууд дээр үндсэн утга 1 бөгөөд утгыг 0-ээс 2-ын хооронд барина. | Hosted open-weight загварууд, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. Утгыг 0-ээс 1-ийн хооронд барина. | Hosted open-weight загварууд |
seed | integer | Sampler-ийн seed, дурын бүхэл тоо. Үгүй бол seed-ийг загвар ба харилцан яриагаас гаргах тул ижил хүсэлтийг хоёр удаа илгээхэд ижил seed ашиглана. | Hosted open-weight загварууд | |
stop | string | array | String эсвэл string-үүдийн массив. 4 хүртэлийг ашиглана. Хариулт эхэнд нь гарсан эхний string-ээс өмнө дуусна; зогсоох текст өөрөө буцахгүй. | Hosted open-weight загварууд | |
reasoning_effort | string | high | Загвар хариулахаасаа өмнө хэр их reasoning хийх: off, low, medium эсвэл high. none ба minimal нь off, default нь medium, max нь high гэсэн үг. Бусад утга 400 буцаана. | Hosted open-weight загварууд |
reasoning | object | Ижил тохиргоо объект хэлбэрээр: {"effort": "low"}. Хоёуланг нь илгээвэл reasoning_effort-ийг ашиглана. | Hosted open-weight загварууд | |
tools | array | Загварын дуудаж болох функцууд, тус бүр {"type": "function", "function": {"name", "description", "parameters"}} хэлбэртэй. Загварын дуудлагууд tool_calls-д буцаж ирнэ; таны код тэдгээрийг ажиллуулна. | Бүх загвар | |
tool_choice | string | object | auto | "auto" загвар өөрөө шийднэ. "required" tool заавал дуудуулна. {"type": "function", "function": {"name": "…"}} тухайн tool-ийг дуудуулна. | Hosted open-weight загварууд |
response_format | object | JSON хариултад {"type": "json_object"}, таны schema-г дагасан хариултад {"type": "json_schema", "json_schema": {…}}. | Shannon-ы бүх түвшин; hosted open-weight загварууд id тус бүрийн жагсаалтаар | |
web_search | boolean | false | true нь загварт хариулахаасаа өмнө вэбээс хайхыг зөвшөөрнө. | shannon-1.6-*, shannon-2-*, Shannon 3 гэр бүл |
n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store ба prompt_cache_key зэрэг OpenAI-ийн бусад талбаруудыг хүлээн авдаг тул одоо байгаа клиент код өөрчлөлтгүй ажиллана. Эдгээр нь хариултыг өөрчлөхгүй: choice үргэлж нэг байх бөгөөд stream үргэлж usage-ээр төгсдөг.
JSON төрөл буруу талбар, жишээ нь "max_tokens": "100", 422 буцаана. messages-гүй хүсэлт ч мөн адил.
Tools, бүтэцтэй гаралт, reasoning ба вэб хайлт тус бүр өөрийн хуудастай: Функц дуудлага, Бүтэцтэй гаралт, Reasoning effort, Вэб хайлт.
Сонголттой хүсэлт
Энэ хүсэлт system мессеж, sampling талбарууд ба reasoning effort-ийг тогтооно. Бүгдийг хэрэгжүүлдэг hosted open-weight загварыг ашиглана.
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"
}' Хариулт дээрхтэй ижил хэлбэртэй. Hosted open-weight загварууд дээр түүний usage хоёр нэмэлт мэдээлэл агуулна: кэшээс уншсан prompt токен ба reasoning-д зарцуулсан токен.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Гаралтын урт
max_tokens хоёр зүйл хийдэг. Нэгдүгээрт, хүсэлт эхлэх үед таны үлдэгдлээс нөөцлөгдөх токены тоо юм. Хариулт дуусахад тэр хэмжээг хүсэлтийн ашигласан токеноор солино. Хэрэв max_tokens таны үлдэгдлээс их бол хариулт өөрөө багтах байсан ч хүсэлт 429 Quota exceeded буцаана. Бага нөөцлөхийн тулд бага max_tokens илгээнэ үү.
shannon-coder-1-ийг энэ endpoint дээр өөрөөр тоолно: хүсэлт бүр таны багцын Shannon Coder дуудлагын нэг бөгөөд түүнд токен нөөцлөгдөхгүй. Хязгаар ба үлдэгдэл
Хоёрдугаарт, эдгээр загвар дээр хариултын уртыг хязгаарлана:
| Загварууд | max_tokens юу хийдэг |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Хариулт хязгаарт хүрэхэд зогсоно. Дараа нь stream finish_reason length-ээр дуусна. |
| Hosted open-weight загварууд | Хариултын текст max_tokens дээр зогсоно. Reasoning үүнд тооцогдохгүй. 256-аас бага утга 256 гэж үйлчилнэ. |
max_tokens эсвэл max_completion_tokens-гүй бол утга 4,096. shannon-coder-1 дээр 65,536.
Мессежүүд
Мессеж бүр role ба content-той объект. content нь string, эсвэл мессеж текстээс илүүг агуулах үед хэсгүүдийн массив.
| Үүрэг | Тайлбар | Хэрэгжүүлэгч |
|---|---|---|
system | Загварт өгөх зааварчилгаа. Эхэнд нь тавина. Shannon түвшингүүд дээр эхний system мессежийг ашиглана. | Hosted open-weight загварууд, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system гэж уншина. | Hosted open-weight загварууд |
user | Таны асуух зүйл. Shannon түвшингүүд дээр сүүлийн user мессеж нь prompt, түүний өмнөх мессежүүд нь түүх. | Бүх загвар |
assistant | Загварын өмнөх хариултууд. Түүний дараа tool-ийн үр дүн илгээхдээ tool_calls-ийг нь хадгална уу. | Бүх загвар |
tool | Tool дуудлагын үр дүн: tool_call_id нь дуудлагын id, content нь үр дүнг string хэлбэрээр агуулна. | Бүх загвар |
Shannon 3 гэр бүлийн id-тай бол заавал мөрдөх зааврыг user мессежид оруулна уу.
Shannon түвшингүүд дээр хэрэглэгчийн текст ч, tools ч байхгүй хүсэлт 400 No user message provided буцаана.
Content хэсгүүд
| Хэсэг | Тайлбар | Боломжтой загвар |
|---|---|---|
{"type": "text", "text": "…"} | Энгийн текст. | Бүх загвар |
{"type": "image_url", "image_url": {"url": "…"}} | Зураг, base64 агуулгатай data: URL эсвэл http(s) URL хэлбэрээр. | Shannon 3 гэр бүл, shannon-1.6-lite, shannon-1.6-pro, мөн зураг оролтыг дэмждэг hosted open-weight загварууд |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Баримт (PDF, Word, PowerPoint эсвэл Excel), base64 эсвэл URL-аар. | Shannon 3 гэр бүл |
Хэмжээ, хязгаар болон хэлбэрүүдийн бүрэн жагсаалт тусдаа хуудастай. Зураг ба файл
Хариултын объект
| Талбар | Төрөл | Тайлбар |
|---|---|---|
id | string | chatcmpl- араас нь 32 арвантын тэмдэгт. |
object | string | Үргэлж chat.completion. |
created | integer | Хариултын цаг, Unix секундээр. |
model | string | Хариулсан загварын каноник id. Таны илгээсэн id-аас бичиглэлээрээ ялгаатай байж болно. |
choices | array | Үргэлж яг нэг choice, index нь 0. |
choices[0].message.role | string | Үргэлж assistant. |
choices[0].message.content | string | null | Хариултын текст. tool_calls-тай үед Shannon түвшингүүд дээр null; hosted open-weight загварууд дуудлагын хажууд текст илгээж болно. |
choices[0].message.reasoning_content | string | null | Загварын хариултаас өмнө бичсэн reasoning, байхгүй бол null. |
choices[0].message.tool_calls | array | Зөвхөн загвар tool дуудах үед байна. Элемент бүр id, type function, мөн name ба JSON string хэлбэрийн arguments-тай function агуулна. |
choices[0].message.annotations | array | Зөвхөн хайлт нь ямар нэг зүйл олсон web_search: true-тай хүсэлт дээр. content доторх тэмдэг нэрлэсэн эх сурвалж бүрт нэг url_citation, url, title, start_index, end_index-тэй (тэмдгийн байрлал, тэмдэгтээр тоологдоно, төгсгөл орохгүй). |
choices[0].finish_reason | string | Хариулт яагаад дууссан. Дуусах шалтгаанууд хэсгийг үзнэ үү. |
usage | object | Хүсэлтийн токенууд. Usage хэсгийг үзнэ үү. |
sources | array | Зөвхөн хайлт нь ямар нэг зүйл олсон web_search: true-тай хүсэлт дээр: загварт өгсөн үр дүн бүр index, title, url-тай. Хариулт доторх [1] нь index нь 1 байх бичлэг юм. |
Дуусах шалтгаанууд
| finish_reason | Тайлбар |
|---|---|
stop | Загвар хариултаа дуусгасан, эсвэл stop string гарч ирсэн. |
tool_calls | Загвар нэг буюу хэд хэдэн tool дууддаг. Тэдгээрийг ажиллуулж, үр дүнг tool мессежээр илгээнэ. |
length | Хариулт гаралтын хязгаарт хүрч таслагдсан. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ба Shannon 3 гэр бүлийн stream-д мэдээлнэ. |
Stream биш хариулт stop эсвэл tool_calls гэж мэдээлнэ.
Usage
| Талбар | Төрөл | Тайлбар | Боломжтой загвар |
|---|---|---|---|
usage.prompt_tokens | integer | Оролтын токен. | Бүх загвар |
usage.completion_tokens | integer | Гаралтын токен: reasoning, хариулт ба tool дуудлага хамтдаа. | Бүх загвар |
usage.total_tokens | integer | prompt_tokens дээр completion_tokens. | Бүх загвар |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens-ийн prompt кэшээс уншсан хэсэг. | Hosted open-weight загварууд |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens-ийн reasoning-д зарцуулсан хэсэг. | Hosted open-weight загварууд |
Hosted open-weight загварууд дээр prompt_tokens нь таны мессеж болон tool тодорхойлолтыг загварын өөрийн tokenizer-ээр тоолсон, дээр нь зургийн токенууд. Токен тоолох endpoint-ууд илгээхээс өмнө ижил тоог буцаана. Токен тоолох
Shannon түвшингүүд дээр prompt_tokens нь загвар хариулт бичихдээ уншсан бүхнийг тоолдог тул зөвхөн таны мессежийн текстээс их байна.
Streaming
stream-ийг true болгосон үед хариулт chat.completion.chunk event хэлбэрээр ирж, data: [DONE]-оор төгсөнө. Түүний өмнөх сүүлийн chunk finish_reason ба usage-ийг агуулна; stream_options шаардлагагүй. Chunk-ийн хэлбэр, keep-alive мөр, stream доторх алдаа тусдаа хуудастай. Дамжуулалт
Алдаа
Алдаа нь error гишүүнтэй JSON объект. Шалгалт дараах дарааллаар явагдана: API түлхүүр, хүсэлтийн body, загварын id, дараа нь үлдэгдэл. Хүснэгтэд энэ endpoint-ийн хамгийн их буцаадаг алдаа байна. Бүрэн жагсаалт, юуг дахин оролдохыг тусдаа хуудсанд харуулсан. Алдаа боловсруулах
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Төлөв | Төрөл | Мессеж | Хэзээ |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API түлхүүр илгээгдээгүй, эсвэл түлхүүр тодорхойгүй буюу хүчингүй болсон. |
400 | invalid_request_error | unknown model: <id> | model нь нийтэлсэн id биш. |
400 | invalid_request_error | No user message provided | Shannon түвшингүүд: хүсэлтэд хэрэглэгчийн текст ч, tools ч алга. |
400 | invalid_request_error | <id> does not accept image input | Зураг оролтгүй hosted open-weight загварт зургийн хэсэг илгээсэн. |
400 | invalid_request_error | <id> does not accept response_format | Бүтэцтэй гаралтгүй hosted open-weight загварт response_format илгээсэн. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort жагсаалтаас гадуурх утга агуулсан. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages алга, эсвэл талбарын JSON төрөл буруу. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens таны үлдэгдлээс их байна. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood protection: таны бүртгэлээс нэг минутад 120-оос олон хүсэлт ирсэн. |
500 | server_error | The model backend failed to answer. Please retry. | Загвар хариулт гаргасангүй. Хүсэлтээ дахин илгээнэ үү. |
502 | api_error | The model backend failed to answer. Please retry. | Ижил, Shannon 3 гэр бүл болон hosted open-weight загварууд дээр. |