Chat Completions
POST /v1/chat/completions söhbəti qəbul edir və modelin növbəti mesajını OpenAI Chat Completions formatında qaytarır. Onu istənilən OpenAI SDK-dan və ya sadə HTTP üzərindən istifadə edin; bu səhifə sahə-sahə soraqdır.
POST https://api.shannon-ai.com/v1/chat/completions
Ən kiçik sorğu model id-si və bir istifadəçi mesajıdır.
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."}]
}' Cavab bir JSON obyektidir:
{
"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
}
} Başlıqlar
Sorğu başlıqları
| Başlıq | Dəyər | Təsvir |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | API açarınız. Onun əvəzinə hər endpoint-də x-api-key: YOUR_API_KEY qəbul edilir. |
Content-Type | application/json | Məcburi. Hər hansı başqa dəyər 415 qaytarır. |
x-request-id | İxtiyari. Sorğu üçün öz id-niz. O, cavabda dəyişmədən qayıdır. |
Cavab başlıqları
| Başlıq | Təsvir |
|---|---|
x-request-id | Hər cavabda, xətalar və axınlar daxil: göndərdiyiniz dəyər, heç nə göndərmədikdə isə 12 onaltılıq simvol. Problem bildirərkən onu qeyd edin. |
content-type | application/json, yaxud stream dəyəri true olduqda text/event-stream. |
Sorğu sahələri
Yalnız messages məcburidir. Tətbiq edən sütunu sahənin cavabı dəyişdirdiyi modelləri göstərir. Host edilmiş açıq çəkili modellər model siyahısındakı on iki id-dir; Shannon 3 ailəsi shannon-3, shannon-3-pro, shannon-3.1 və shannon-3.1-pro-dur. Modellər və qiymətlər
| Sahə | Tip | Defolt | Təsvir | Tətbiq edən |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Cavab verən model: model siyahısından id. Hər sorğu ilə göndərin. Uyğunlaşdırma böyük-kiçik hərfə həssas deyil. Dərc olunmamış id 400 unknown model qaytarır. | Bütün modellər |
messages | array | Məcburi. Söhbət, ən köhnə mesaj birinci. Aşağıda Mesajlar bölməsinə baxın. | Bütün modellər | |
stream | boolean | false | true cavabı yazılarkən server-sent events kimi göndərir. | Bütün modellər |
max_tokens | integer | 4096 | Cavabın token ilə yuxarı həddi. 1 ilə 65,536 aralığından kənar dəyər həmin aralığa gətirilir. Həmçinin sorğu işləyərkən balansınızdan ayrılan məbləğdir. Aşağıda Çıxış uzunluğu bölməsinə baxın. | Host edilmiş açıq çəkili modellər, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens ilə eynidir. Hər ikisi göndərildikdə max_tokens istifadə olunur. | Host edilmiş açıq çəkili modellər, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Seçmə temperaturu. Host edilmiş açıq çəkili modellərdə defolt 1-dir və dəyərlər 0 ilə 2 arasında saxlanılır. | Host edilmiş açıq çəkili modellər, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. Dəyərlər 0 ilə 1 arasında saxlanılır. | Host edilmiş açıq çəkili modellər |
seed | integer | Sampler-in seed dəyəri, istənilən tam ədəd. Olmadıqda seed modeldən və söhbətdən törədilir, buna görə iki dəfə göndərilən eyni sorğu eyni seed-dən istifadə edir. | Host edilmiş açıq çəkili modellər | |
stop | string | array | Sətir və ya sətirlər massivi. 4-ə qədəri istifadə olunur. Cavab görünən ilk sətirdən əvvəl bitir; dayanma mətninin özü qaytarılmır. | Host edilmiş açıq çəkili modellər | |
reasoning_effort | string | high | Modelin cavab verməzdən əvvəl nə qədər reasoning apardığı: off, low, medium və ya high. none və minimal off deməkdir, default medium deməkdir, max isə high deməkdir. Hər hansı başqa dəyər 400 qaytarır. | Host edilmiş açıq çəkili modellər |
reasoning | object | Eyni parametr obyekt formasında: {"effort": "low"}. Hər ikisi göndərildikdə reasoning_effort istifadə olunur. | Host edilmiş açıq çəkili modellər | |
tools | array | Modelin çağıra biləcəyi funksiyalar, hər biri {"type": "function", "function": {"name", "description", "parameters"}} şəklində. Modelin çağırışları tool_calls daxilində qayıdır; kodunuz onları işlədir. | Bütün modellər | |
tool_choice | string | object | auto | "auto" modelin özünün qərar verməsinə icazə verir. "required" onu alət çağırmağa məcbur edir. {"type": "function", "function": {"name": "…"}} məhz həmin aləti çağırmağa məcbur edir. | Host edilmiş açıq çəkili modellər |
response_format | object | JSON cavabı üçün {"type": "json_object"}, sxeminizə uyğun cavab üçün isə {"type": "json_schema", "json_schema": {…}}. | Bütün Shannon səviyyələri; host edilmiş açıq çəkili modellər hər id üçün göstərildiyi kimi | |
web_search | boolean | false | true modelə cavab verməzdən əvvəl veb-də axtarış etməyə icazə verir. | shannon-1.6-*, shannon-2-*, Shannon 3 ailəsi |
Digər OpenAI sahələri, məsələn n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store və prompt_cache_key, mövcud klient kodu dəyişmədən işləsin deyə qəbul edilir. Onlar cavabı dəyişmir: həmişə bir choice olur və axın həmişə istifadə məlumatı ilə bitir.
JSON tipi yanlış olan sahə, məsələn "max_tokens": "100", 422 qaytarır. messages olmayan sorğu da belədir.
Alətlər, strukturlaşdırılmış çıxış, reasoning və veb axtarışının hər birinin ayrıca səhifəsi var: Funksiya çağırışı, Strukturlaşdırılmış çıxışlar, Reasoning effort, Veb axtarışı.
Seçimləri olan sorğu
Bu sorğu system mesajı, seçmə sahələri və reasoning effort təyin edir. O, hamısını tətbiq edən host edilmiş açıq çəkili modeldən istifadə edir.
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"
}' Cavab yuxarıdakı ilə eyni formadadır. Host edilmiş açıq çəkili modellərdə onun usage sahəsi iki təfərrüat əlavə edir: keşdən oxunan prompt tokenləri və reasoning-ə sərf olunan tokenlər.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Çıxış uzunluğu
max_tokens iki şey edir. Birincisi, sorğu başlayanda balansınızdan ayrılan tokenlərin sayıdır. Cavab tamamlandıqda həmin məbləğ sorğunun istifadə etdiyi tokenlərlə əvəz olunur. max_tokens balansınızda qalandan böyükdürsə, cavabın özü sığacaq olsa belə sorğu 429 Quota exceeded qaytarır. Daha az ayırmaq üçün daha kiçik max_tokens göndərin.
shannon-coder-1 bu endpoint-də fərqli sayılır: hər sorğu planınızın Shannon Coder çağırışlarından biridir və onun üçün token ayrılmır. Limitlər və balans
İkincisi, bu modellərdə cavabın uzunluğunu məhdudlaşdırır:
| Modellər | max_tokens nə edir |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Cavab limitə çatdıqda dayanır. Axın bu halda finish_reason length ilə bitir. |
| Host edilmiş açıq çəkili modellər | Cavab mətni max_tokens həddində dayanır. Reasoning ona daxil edilmir. 256-dan kiçik dəyərlər 256 kimi işləyir. |
max_tokens və ya max_completion_tokens olmadıqda dəyər 4,096-dır. shannon-coder-1-də 65,536-dır.
Mesajlar
Hər mesaj role və content sahələri olan obyektdir. content sətir, yaxud mesaj mətndən çoxunu daşıyırsa hissələr massividir.
| Rol | Təsvir | Tətbiq edən |
|---|---|---|
system | Model üçün təlimatlar. Onu birinci qoyun. Shannon səviyyələrində istifadə olunan ilk system mesajıdır. | Host edilmiş açıq çəkili modellər, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system kimi oxunur. | Host edilmiş açıq çəkili modellər |
user | Nə soruşduğunuz. Shannon səviyyələrində son user mesajı promptdur, ondan əvvəlki mesajlar isə tarixçədir. | Bütün modellər |
assistant | Modelin əvvəlki cavabları. Ondan sonra alət nəticəsi göndərdikdə onun tool_calls sahəsini saxlayın. | Bütün modellər |
tool | Alət çağırışının nəticəsi: tool_call_id çağırışın id-sini, content isə nəticəni sətir kimi saxlayır. | Bütün modellər |
Shannon 3 ailəsinin id-si ilə, mütləq yerinə yetirilməli təlimatları user mesajına qoyun.
Shannon səviyyələrində istifadəçi mətni və tools olmayan sorğu 400 No user message provided qaytarır.
Məzmun hissələri
| Hissə | Təsvir | Mövcud olduğu yer |
|---|---|---|
{"type": "text", "text": "…"} | Sadə mətn. | Bütün modellər |
{"type": "image_url", "image_url": {"url": "…"}} | Şəkil, base64 məzmunlu data: URL kimi və ya http(s) URL kimi. | Shannon 3 ailəsi, shannon-1.6-lite, shannon-1.6-pro və şəkil girişini dəstəkləyən host edilmiş açıq çəkili modellər |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Sənəd (PDF, Word, PowerPoint və ya Excel), base64 şəklində və ya URL ilə. | Shannon 3 ailəsi |
Ölçülər, limitlər və formaların tam siyahısı üçün ayrıca səhifə var. Təsvirlər və fayllar
Cavab obyekti
| Sahə | Tip | Təsvir |
|---|---|---|
id | string | chatcmpl- və ardınca 32 onaltılıq simvol. |
object | string | Həmişə chat.completion. |
created | integer | Cavabın vaxtı, Unix saniyələri ilə. |
model | string | Cavab verən modelin kanonik id-si. O, göndərdiyiniz id-dən yazılış baxımından fərqlənə bilər. |
choices | array | Həmişə index 0 olan dəqiq bir choice. |
choices[0].message.role | string | Həmişə assistant. |
choices[0].message.content | string | null | Cavab mətni. tool_calls olduqda Shannon səviyyələrində null olur; host edilmiş açıq çəkili modellər çağırışların yanında mətn də göndərə bilər. |
choices[0].message.reasoning_content | string | null | Modelin cavabdan əvvəl yazdığı reasoning, yoxdursa null. |
choices[0].message.tool_calls | array | Yalnız model alətləri çağırdıqda olur. Hər elementdə id, type (function) və name ilə JSON sətri kimi arguments olan function var. |
choices[0].message.annotations | array | Yalnız web_search: true olan və axtarışı nəsə tapan sorğuda. content-dəki işarənin adlandırdığı hər mənbə üçün bir url_citation, url, title, start_index və end_index ilə (işarənin mövqeyi, simvollarla sayılır, son daxil deyil). |
choices[0].finish_reason | string | Cavabın niyə bitdiyi. Bitmə səbəblərinə baxın. |
usage | object | Sorğunun tokenləri. İstifadə bölməsinə baxın. |
sources | array | Yalnız web_search: true olan və axtarışı nəsə tapan sorğuda: modelə verilən nəticələr, hər biri index, title və url ilə. Cavabdakı [1] index 1 olan qeyddir. |
Bitmə səbəbləri
| finish_reason | Təsvir |
|---|---|
stop | Model cavabını bitirdi və ya stop sətri göründü. |
tool_calls | Model bir və ya bir neçə alət çağırır. Onları işlədin və nəticələri tool mesajlarında göndərin. |
length | Cavab çıxış limitində kəsildi. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 və Shannon 3 ailəsinin axınlarında bildirilir. |
Axınsız cavab stop və ya tool_calls bildirir.
İstifadə
| Sahə | Tip | Təsvir | Mövcud olduğu yer |
|---|---|---|---|
usage.prompt_tokens | integer | Giriş tokenləri. | Bütün modellər |
usage.completion_tokens | integer | Çıxış tokenləri: reasoning, cavab və alət çağırışları birlikdə. | Bütün modellər |
usage.total_tokens | integer | prompt_tokens üstəgəl completion_tokens. | Bütün modellər |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens hissəsindən prompt keşindən oxunan hissə. | Host edilmiş açıq çəkili modellər |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens hissəsindən reasoning-ə sərf olunan hissə. | Host edilmiş açıq çəkili modellər |
Host edilmiş açıq çəkili modellərdə prompt_tokens mesajlarınızın və alət təyinlərinin modelin öz tokenizer-i ilə sayılması üstəgəl hər hansı şəkillərin tokenləridir. Token sayma endpoint-ləri göndərməzdən əvvəl eyni ədədi qaytarır. Tokenlərin sayılması
Shannon səviyyələrində prompt_tokens modelin cavabı yazmaq üçün oxuduğu hər şeyi sayır, buna görə o, təkcə mesajlarınızın mətnindən böyükdür.
Streaming
stream dəyəri true olduqda cavab chat.completion.chunk hadisələri kimi gəlir və data: [DONE] ilə bitir. Ondan əvvəlki son chunk finish_reason və usage daşıyır; stream_options lazım deyil. Chunk formaları, keep-alive sətirləri və axın daxilindəki xətaların ayrıca səhifəsi var. Axın
Xətalar
Xəta error üzvü olan JSON obyektidir. Yoxlamalar bu ardıcıllıqla aparılır: API açarı, sorğu gövdəsi, model id-si, sonra balans. Cədvəldə bu endpoint-in ən çox qaytardıqları göstərilib. Təkrar cəhd ediləcəklərlə birgə tam siyahı ayrıca səhifədədir. Xəta idarəetməsi
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Status | Tip | Mesaj | Nə vaxt |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API açarı göndərilməyib, ya da açar tanınmır və ya ləğv edilib. |
400 | invalid_request_error | unknown model: <id> | model dərc olunmuş id deyil. |
400 | invalid_request_error | No user message provided | Shannon səviyyələri: sorğuda istifadəçi mətni və tools yoxdur. |
400 | invalid_request_error | <id> does not accept image input | Şəkil girişi olmayan host edilmiş açıq çəkili modelə şəkil hissəsi göndərilib. |
400 | invalid_request_error | <id> does not accept response_format | Strukturlaşdırılmış çıxışı olmayan host edilmiş açıq çəkili modelə response_format göndərilib. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort siyahıdan kənar dəyər saxlayır. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages yoxdur və ya sahənin JSON tipi yanlışdır. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens balansınızda qalandan böyükdür. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood protection: hesabınızdan bir dəqiqədə 120-dən çox sorğu göndərilib. |
500 | server_error | The model backend failed to answer. Please retry. | Model cavab yaratmadı. Sorğunu yenidən göndərin. |
502 | api_error | The model backend failed to answer. Please retry. | Shannon 3 ailəsində və host edilmiş açıq çəkili modellərdə eynidir. |