Chat Completions
POST /v1/chat/completions ګفتګه اخلي او د ماډل راتلونکی پیغام د OpenAI Chat Completions په بڼه بیرته ورکوي. دا له هر OpenAI SDK څخه یا د ساده HTTP له لارې وکاروئ؛ دا پاڼه د ساحې په ساحه مرجع ده.
POST https://api.shannon-ai.com/v1/chat/completions
تر ټولو کوچنۍ غوښتنه د ماډل id او یو user message دی.
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
}
} Headers
د غوښتنې headers
| Header | ارزښت | تشریح |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | ستاسو API کیلي. x-api-key: YOUR_API_KEY په هر endpoint کې د هغې پر ځای منل کیږي. |
Content-Type | application/json | اړین. هر بل ارزښت 415 بیرته ورکوي. |
x-request-id | اختیاري. د غوښتنې لپاره ستاسو خپل id. په ځواب کې بې بدلونه بیرته راځي. |
د ځواب headers
| Header | تشریح |
|---|---|
x-request-id | په هر ځواب کې، تېروتنې او stream ګانې په ګډون: هغه ارزښت چې تاسو لیږلی، یا 12 هیکساډیسیمل توري کله چې تاسو هیڅ نه وي لیږلی. کله چې ستونزه راپور کوئ دا یادونه وکړئ. |
content-type | application/json، یا text/event-stream کله چې stream true وي. |
د غوښتنې ساحې
یوازې messages اړین دی. د پلي کوونکی کالم هغه ماډلونه نوموي چې ساحه پکې ځواب بدلوي. کوربه شوي 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 | اړین. ګفتګو، زوړ پیغام لومړی. لاندې Messages وګورئ. | ټول ماډلونه | |
stream | boolean | false | true ځواب د server-sent events په توګه لیږي پداسې حال کې چې لیکل کیږي. | ټول ماډلونه |
max_tokens | integer | 4096 | د ځواب پورتنی حد، په ټوکنونو. د 1 څخه تر 65,536 بهر ارزښت ددې حد دننه کیږي. دا هم هغه مقدار دی چې غوښتنې د چلیدو پر مهال ستاسو له بیلانس څخه ساتل کیږي. لاندې د Output length وګورئ. | کوربه شوي open-weight ماډلونه، shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 |
max_completion_tokens | integer | د max_tokens په څیر. کله چې دواړه ولیږل شي، max_tokens کارول کیږي. | کوربه شوي open-weight ماډلونه، shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 | |
temperature | number | د sampling temperature. په کوربه شوو open-weight ماډلونو کې ډیفالټ 1 دی او ارزښتونه د 0 او 2 ترمنځ ساتل کیږي. | کوربه شوي open-weight ماډلونه، shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. ارزښتونه د 0 او 1 ترمنځ ساتل کیږي. | کوربه شوي open-weight ماډلونه |
seed | integer | د sampler Seed، هر ټول عدد. پرته له دې، seed له ماډل او ګفتګو څخه اخیستل کیږي، نو همدا غوښتنه دوه ځله لیږل شوې هماغه seed کاروي. | کوربه شوي open-weight ماډلونه | |
stop | string | array | یو string یا د strings لړۍ. تر 4 پورې کارول کیږي. ځواب مخکې له لومړي هغه ختمیږي چې ښکاره شي؛ د ودرولو متن پخپله بیرته نه ورکول کیږي. | کوربه شوي open-weight ماډلونه | |
reasoning_effort | string | high | ماډل مخکې له ځواب ورکولو څومره reasoning کوي: off، low، medium یا high. none او minimal د off معنی لري، default د medium، max د high. هر بل ارزښت 400 بیرته ورکوي. | کوربه شوي open-weight ماډلونه |
reasoning | object | هماغه تنظیم د څیز په بڼه: {"effort": "low"}. کله چې دواړه ولیږل شي، reasoning_effort کارول کیږي. | کوربه شوي open-weight ماډلونه | |
tools | array | هغه functions چې ماډل یې غوښتلی شي، هر یو د {"type": "function", "function": {"name", "description", "parameters"}} په توګه. د ماډل calls په tool_calls کې بیرته راځي؛ ستاسو کوډ یې چلوي. | ټول ماډلونه | |
tool_choice | string | object | auto | "auto" ماډل ته پریکړه پریږدي. "required" ماډل مجبوروي چې tool وغواړي. {"type": "function", "function": {"name": "…"}} یې مجبوروي چې همغه tool وغواړي. | کوربه شوي open-weight ماډلونه |
response_format | object | {"type": "json_object"} د JSON ځواب لپاره، یا {"type": "json_schema", "json_schema": {…}} د هغه ځواب لپاره چې ستاسو schema تعقیبوي. | د Shannon ټولې کچې؛ کوربه شوي open-weight ماډلونه لکه د هر id په اړه لیست شوي | |
web_search | boolean | false | true ماډل ته اجازه ورکوي چې مخکې له ځواب ورکولو په ویب کې ولټوي. | shannon-1.6-*، shannon-2-*، د Shannon 3 کورنۍ |
نور OpenAI ساحې، لکه n، user، stream_options، parallel_tool_calls، presence_penalty، frequency_penalty، logit_bias، logprobs، metadata، store او prompt_cache_key، منل کیږي ترڅو شته client کوډ بې بدلون چلیږي. دوی ځواب نه بدلوي: تل یوه choice وي، او stream تل په usage پای ته رسیږي.
هغه ساحه چې د JSON غلط ډول ولري، د مثال په توګه "max_tokens": "100"، 422 بیرته ورکوي. هغه غوښتنه چې messages نه لري هم همداسې.
Tools، جوړښت لرونکی output، reasoning او web search هر یو خپله جلا پاڼه لري: فنکشن زنګ وهل, جوړښت شوي محصولات, د reasoning effort, جوړ شوی ویب لټون.
غوښتنه د اختیارونو سره
دا غوښتنه system message، د sampling ساحې او د reasoning effort ټاکي. دا یو کوربه شوی 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"
}' ځواب هماغه بڼه لري لکه پورته. د هغه usage په کوربه شوو open-weight ماډلونو کې دوه جزئیات زیاتوي: له cache څخه لوستل شوي prompt ټوکنونه او هغه ټوکنونه چې په reasoning لګیدلي.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} د output اوږدوالی
max_tokens دوه کارونه کوي. لومړی، دا د ټوکنونو شمیر دی چې کله غوښتنه پیلیږي ستاسو له بیلانس څخه ساتل کیږي. کله چې ځواب بشپړ شي، دا مقدار د هغو ټوکنونو سره بدلیږي چې غوښتنې کارولي. که max_tokens د هغه څه څخه لوی وي چې ستاسو له بیلانس څخه پاتې دي، غوښتنه 429 Quota exceeded بیرته ورکوي حتی که ځواب پخپله ځای شوی وای. لږ ساتلو لپاره ټیټ max_tokens ولیږئ.
shannon-coder-1 پدې endpoint کې بل ډول شمیرل کیږي: هره غوښتنه ستاسو د پلان د Shannon Coder calls څخه یو call دی، او د هغې لپاره هیڅ ټوکنونه نه ساتل کیږي. حدونه او بیلانس
دویم، دا پدې ماډلونو کې د ځواب اوږدوالی محدودوي:
| ماډلونه | max_tokens څه کوي |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | ځواب هغه وخت ودریږي کله چې حد ته ورسیږي. بیا stream په finish_reason length پای ته رسیږي. |
| کوربه شوي open-weight ماډلونه | د ځواب متن په max_tokens ودریږي. Reasoning پر ضد یې نه شمیرل کیږي. د 256 څخه کم ارزښتونه د 256 په توګه عمل کوي. |
پرته له max_tokens یا max_completion_tokens، ارزښت 4,096 دی. په shannon-coder-1 کې 65,536 دی.
Messages
هر message یو څیز دی چې role او content لري. content یو string دی، یا د برخو لړۍ کله چې message له متن زیات څه لیږدوي.
| رول | تشریح | پلي کوونکی |
|---|---|---|
system | ماډل ته لارښوونې. لومړی یې ولیکئ. د Shannon په کچو کې لومړی system message هغه دی چې کارول کیږي. | کوربه شوي open-weight ماډلونه، shannon-1.6-*، shannon-2-*، shannon-coder-1 |
developer | د system په توګه لوستل کیږي. | کوربه شوي open-weight ماډلونه |
user | هغه څه چې تاسو یې پوښتئ. د Shannon په کچو کې وروستی user message prompt دی او ورڅخه مخکې messages تاریخچه ده. | ټول ماډلونه |
assistant | د ماډل پخواني ځوابونه. کله چې وروسته یې د tool پایله لیږئ، د هغه tool_calls وساتئ. | ټول ماډلونه |
tool | د tool call پایله: tool_call_id د call id لري او content پایله د string په توګه. | ټول ماډلونه |
د Shannon 3 کورنۍ id سره، هغه لارښوونې چې باید وساتل شي user message کې ولیکئ.
د Shannon په کچو کې هغه غوښتنه چې د کاروونکي متن او tools نه لري 400 No user message provided بیرته ورکوي.
د منځپانګې برخې
| برخه | تشریح | شتون لري په |
|---|---|---|
{"type": "text", "text": "…"} | ساده متن. | ټول ماډلونه |
{"type": "image_url", "image_url": {"url": "…"}} | یو انځور، د data: URL په توګه د base64 منځپانګې سره یا د http(s) URL په توګه. | د Shannon 3 کورنۍ، shannon-1.6-lite، shannon-1.6-pro، او کوربه شوي open-weight ماډلونه چې انځور input لیست کوي |
{"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 | د هغه ماډل canonical id چې ځواب یې ورکړ. دا ښایي د هغه id څخه په املا کې توپیر ولري چې تاسو لیږلی. |
choices | array | تل دقیقاً یوه choice، د index 0 سره. |
choices[0].message.role | string | تل assistant. |
choices[0].message.content | string | null | د ځواب متن. د tool_calls سره د Shannon په کچو کې null دی؛ کوربه شوي open-weight ماډلونه کولی شي د calls تر څنګ متن ولیږي. |
choices[0].message.reasoning_content | string | null | هغه reasoning چې ماډل مخکې له ځواب وليکه، یا null کله چې هیڅ نه وي. |
choices[0].message.tool_calls | array | یوازې هغه وخت شتون لري کله چې ماډل tools غواړي. هره داخله id، type function، او function د name او arguments سره د JSON string په توګه لري. |
choices[0].message.annotations | array | یوازې په هغه غوښتنه کې چې web_search: true لري او لټون یې یو څه موندلي. د هرې سرچینې لپاره یو url_citation چې په content کې یوه نښه یې نوم اخلي، د 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 | ماډل یو یا ډیر tools غواړي. هغه چلوئ او پایلې په tool messages کې ولیږئ. |
length | ځواب د output په حد کې پرې شو. په shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 او د Shannon 3 کورنۍ stream ګانو کې راپور کیږي. |
هغه ځواب چې stream نه وي stop یا tool_calls راپور کوي.
Usage
| ساحه | ډول | تشریح | شتون لري په |
|---|---|---|---|
usage.prompt_tokens | integer | Input ټوکنونه. | ټول ماډلونه |
usage.completion_tokens | integer | Output ټوکنونه: reasoning، ځواب او tool calls یوځای. | ټول ماډلونه |
usage.total_tokens | integer | prompt_tokens جمع completion_tokens. | ټول ماډلونه |
usage.prompt_tokens_details.cached_tokens | integer | د prompt_tokens هغه برخه چې د prompt cache څخه لوستل شوې. | کوربه شوي open-weight ماډلونه |
usage.completion_tokens_details.reasoning_tokens | integer | د completion_tokens هغه برخه چې په reasoning لګیدلې. | کوربه شوي open-weight ماډلونه |
په کوربه شوو open-weight ماډلونو کې، prompt_tokens ستاسو messages او د tool تعریفونه دي چې د ماډل د خپل tokenizer سره شمیرل شوي، پلس د هر انځور ټوکنونه. د ټوکنونو شمېرنې endpoints مخکې له لیږلو همدا شمیره بیرته ورکوي. د ټوکنونو شمېرنه
د Shannon په کچو کې، prompt_tokens هر هغه څه شمیري چې ماډل د ځواب د لیکلو لپاره لوستي، نو دا یوازې د ستاسو د messages د متن څخه لوی دی.
Streaming
کله چې stream په true ټاکل شي ځواب د chat.completion.chunk events په توګه رارسیږي او په data: [DONE] پای ته رسیږي. ورڅخه مخکې وروستی chunk finish_reason او usage لیږدوي؛ هیڅ stream_options ته اړتیا نشته. د chunk بڼې، keep-alive کرښې او د stream دننه تېروتنې خپله جلا پاڼه لري. جریان
تېروتنې
تېروتنه د JSON څیز دی چې error غړی لري. چکونه په دې ترتیب چلیږي: API کیلي، د غوښتنې بدنه، د ماډل 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 | د انځور برخه هغه کوربه شوي open-weight ماډل ته ولیږل شوه چې انځور input نه لري. |
400 | invalid_request_error | <id> does not accept response_format | response_format هغه کوربه شوي open-weight ماډل ته ولیږل شو چې جوړښت لرونکی output نه لري. |
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 کورنۍ او کوربه شوو open-weight ماډلونو کې. |