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
}
} ہیڈرز
درخواست کے ہیڈرز
| ہیڈر | قدر | تفصیل |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | آپ کی API کلید۔ ہر endpoint پر اس کی جگہ x-api-key: YOUR_API_KEY بھی قبول کیا جاتا ہے۔ |
Content-Type | application/json | لازمی۔ کوئی بھی دوسری قدر 415 لوٹاتی ہے۔ |
x-request-id | اختیاری۔ درخواست کے لیے آپ کا اپنا id۔ یہ جواب میں جوں کا توں واپس آتا ہے۔ |
جواب کے ہیڈرز
| ہیڈر | تفصیل |
|---|---|
x-request-id | ہر جواب پر، ایررز اور سٹریمز سمیت: آپ کی بھیجی ہوئی قدر، یا اگر آپ نے کچھ نہ بھیجا ہو تو 12 ہیکسا ڈیسیمل حروف۔ مسئلہ رپورٹ کرتے وقت اسے حوالہ کے طور پر دیں۔ |
content-type | application/json، یا جب stream کی قدر true ہو تو text/event-stream۔ |
درخواست کے فیلڈز
صرف messages لازمی ہے۔ لاگو کرنے والے کالم ان ماڈلز کے نام بتاتا ہے جن پر کوئی فیلڈ جواب کو بدلتا ہے۔ ہوسٹڈ اوپن ویٹ ماڈلز ماڈل فہرست کے بارہ ids ہیں؛ 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 کے باہر کی قدر اسی حد کے اندر لے آئی جاتی ہے۔ درخواست کے چلنے کے دوران آپ کے بیلنس میں سے یہی مقدار الگ رکھی جاتی ہے۔ نیچے آؤٹ پٹ کی لمبائی دیکھیں۔ | ہوسٹڈ اوپن ویٹ ماڈلز، shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 |
max_completion_tokens | integer | max_tokens کے برابر۔ دونوں بھیجے جائیں تو max_tokens استعمال ہوتا ہے۔ | ہوسٹڈ اوپن ویٹ ماڈلز، shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 | |
temperature | number | سیمپلنگ ٹمپریچر۔ ہوسٹڈ اوپن ویٹ ماڈلز پر ڈیفالٹ 1 ہے اور قدریں 0 اور 2 کے درمیان رکھی جاتی ہیں۔ | ہوسٹڈ اوپن ویٹ ماڈلز، shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 | |
top_p | number | 0.95 | نیوکلیئس سیمپلنگ۔ قدریں 0 اور 1 کے درمیان رکھی جاتی ہیں۔ | ہوسٹڈ اوپن ویٹ ماڈلز |
seed | integer | سیمپلر کا seed، کوئی بھی عدد صحیح۔ اس کے بغیر seed ماڈل اور گفتگو سے اخذ کیا جاتا ہے، اس لیے ایک ہی درخواست دو بار بھیجنے پر وہی seed استعمال ہوتا ہے۔ | ہوسٹڈ اوپن ویٹ ماڈلز | |
stop | string | array | ایک سٹرنگ یا سٹرنگز کی ارے۔ زیادہ سے زیادہ 4 استعمال ہوتی ہیں۔ جواب پہلی ظاہر ہونے والی سٹرنگ سے پہلے ختم ہو جاتا ہے؛ stop متن خود واپس نہیں آتا۔ | ہوسٹڈ اوپن ویٹ ماڈلز | |
reasoning_effort | string | high | جواب دینے سے پہلے ماڈل کتنی reasoning کرتا ہے: off، low، medium یا high۔ none اور minimal کا مطلب off ہے، default کا مطلب medium، max کا مطلب high۔ کوئی بھی دوسری قدر 400 لوٹاتی ہے۔ | ہوسٹڈ اوپن ویٹ ماڈلز |
reasoning | object | وہی سیٹنگ آبجیکٹ کی شکل میں: {"effort": "low"}۔ دونوں بھیجے جائیں تو reasoning_effort استعمال ہوتا ہے۔ | ہوسٹڈ اوپن ویٹ ماڈلز | |
tools | array | وہ فنکشنز جنہیں ماڈل کال کر سکتا ہے، ہر ایک {"type": "function", "function": {"name", "description", "parameters"}} کی شکل میں۔ ماڈل کی کالز tool_calls میں واپس آتی ہیں؛ انہیں آپ کا کوڈ چلاتا ہے۔ | تمام ماڈلز | |
tool_choice | string | object | auto | "auto" ماڈل کو فیصلہ کرنے دیتا ہے۔ "required" اسے کوئی ٹول کال کرنے پر لگاتا ہے۔ {"type": "function", "function": {"name": "…"}} اسے وہی ٹول کال کرنے پر لگاتا ہے۔ | ہوسٹڈ اوپن ویٹ ماڈلز |
response_format | object | JSON جواب کے لیے {"type": "json_object"}، یا آپ کی اسکیما کی پیروی کرنے والے جواب کے لیے {"type": "json_schema", "json_schema": {…}}۔ | تمام Shannon درجے؛ ہوسٹڈ اوپن ویٹ ماڈلز جیسا ہر 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، قبول کیے جاتے ہیں تاکہ موجودہ کلائنٹ کوڈ بغیر تبدیلی کے چلے۔ یہ جواب کو تبدیل نہیں کرتے: choice ہمیشہ ایک ہی ہوتی ہے، اور سٹریم ہمیشہ usage پر ختم ہوتی ہے۔
غلط JSON قسم والا فیلڈ، مثلاً "max_tokens": "100"، 422 لوٹاتا ہے۔ messages کے بغیر درخواست بھی یہی لوٹاتی ہے۔
ٹولز، ساختی آؤٹ پٹ، reasoning اور ویب سرچ میں سے ہر ایک کا اپنا صفحہ ہے: فنکشن کالنگ, ساختی آؤٹ پٹس, Reasoning effort, ویب تلاش.
آپشنز والی درخواست
یہ درخواست ایک سسٹم پیغام، سیمپلنگ فیلڈز اور reasoning effort سیٹ کرتی ہے۔ یہ ایک ہوسٹڈ اوپن ویٹ ماڈل استعمال کرتی ہے، جو ان سب کو لاگو کرتا ہے۔
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 میں دو تفصیلات بڑھ جاتی ہیں: کیش سے پڑھے گئے پرامپٹ ٹوکنز اور 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 بھیجیں۔
اس endpoint پر shannon-coder-1 کی گنتی مختلف ہے: ہر درخواست آپ کے پلان کی ایک Shannon Coder کال ہے، اور اس کے لیے کوئی ٹوکنز الگ نہیں رکھے جاتے۔ حدود اور بیلنس
دوسرا، یہ ان ماڈلز پر جواب کی لمبائی محدود کرتا ہے:
| ماڈلز | max_tokens کیا کرتا ہے |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | جواب حد تک پہنچنے پر رک جاتا ہے۔ سٹریم پھر finish_reason length کے ساتھ ختم ہوتی ہے۔ |
| ہوسٹڈ اوپن ویٹ ماڈلز | جواب کا متن max_tokens پر رک جاتا ہے۔ reasoning اس میں شمار نہیں ہوتی۔ 256 سے کم قدریں 256 کے برابر کام کرتی ہیں۔ |
max_tokens یا max_completion_tokens کے بغیر قدر 4,096 ہے۔ shannon-coder-1 پر یہ 65,536 ہے۔
پیغامات
ہر پیغام ایک آبجیکٹ ہے جس میں role اور content ہوتے ہیں۔ content ایک سٹرنگ ہے، یا حصوں کی ارے جب پیغام میں متن کے علاوہ بھی کچھ ہو۔
| کردار | تفصیل | لاگو کرنے والے |
|---|---|---|
system | ماڈل کے لیے ہدایات۔ اسے سب سے پہلے رکھیں۔ Shannon درجوں پر پہلا system پیغام ہی استعمال ہوتا ہے۔ | ہوسٹڈ اوپن ویٹ ماڈلز، shannon-1.6-*، shannon-2-*، shannon-coder-1 |
developer | system کی طرح پڑھا جاتا ہے۔ | ہوسٹڈ اوپن ویٹ ماڈلز |
user | جو آپ پوچھتے ہیں۔ Shannon درجوں پر آخری user پیغام پرامپٹ ہوتا ہے اور اس سے پہلے کے پیغامات ہسٹری۔ | تمام ماڈلز |
assistant | ماڈل کے پچھلے جوابات۔ اس کے بعد ٹول کا نتیجہ بھیجتے وقت اس کے tool_calls برقرار رکھیں۔ | تمام ماڈلز |
tool | ٹول کال کا نتیجہ: tool_call_id میں کال کا id ہوتا ہے اور content میں نتیجہ بطور سٹرنگ۔ | تمام ماڈلز |
Shannon 3 فیملی کے id کے ساتھ، جو ہدایات لازماً مانی جانی ہوں انہیں user پیغام میں رکھیں۔
Shannon درجوں پر جس درخواست میں نہ صارف کا متن ہو اور نہ tools، وہ 400 No user message provided لوٹاتی ہے۔
مواد کے حصے
| حصہ | تفصیل | دستیاب ہے |
|---|---|---|
{"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، اور وہ ہوسٹڈ اوپن ویٹ ماڈلز جو تصویر ان پٹ درج کرتے ہیں |
{"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 ہوتا ہے؛ ہوسٹڈ اوپن ویٹ ماڈلز کالز کے ساتھ متن بھی بھیج سکتے ہیں۔ |
choices[0].message.reasoning_content | string | null | جواب سے پہلے ماڈل نے جو reasoning لکھی، یا null جب کوئی نہ ہو۔ |
choices[0].message.tool_calls | array | صرف تب موجود ہوتا ہے جب ماڈل ٹولز کال کرے۔ ہر اندراج میں id، type کی قدر function، اور function ہوتا ہے جس میں name اور arguments بطور JSON سٹرنگ ہوتے ہیں۔ |
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 سٹرنگ ظاہر ہوئی۔ |
tool_calls | ماڈل ایک یا زیادہ ٹولز کال کرتا ہے۔ انہیں چلائیں اور نتائج tool پیغامات میں بھیجیں۔ |
length | جواب آؤٹ پٹ کی حد پر کاٹ دیا گیا۔ shannon-1.6-lite، shannon-1.6-pro، shannon-coder-1 اور Shannon 3 فیملی کی سٹریمز میں رپورٹ ہوتا ہے۔ |
جو جواب سٹریم نہ ہو وہ stop یا tool_calls رپورٹ کرتا ہے۔
Usage
| فیلڈ | قسم | تفصیل | دستیاب ہے |
|---|---|---|---|
usage.prompt_tokens | integer | ان پٹ ٹوکنز۔ | تمام ماڈلز |
usage.completion_tokens | integer | آؤٹ پٹ ٹوکنز: reasoning، جواب اور ٹول کالز ملا کر۔ | تمام ماڈلز |
usage.total_tokens | integer | prompt_tokens جمع completion_tokens۔ | تمام ماڈلز |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens کا وہ حصہ جو پرامپٹ کیش سے پڑھا گیا۔ | ہوسٹڈ اوپن ویٹ ماڈلز |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens کا وہ حصہ جو reasoning پر خرچ ہوا۔ | ہوسٹڈ اوپن ویٹ ماڈلز |
ہوسٹڈ اوپن ویٹ ماڈلز پر prompt_tokens آپ کے پیغامات اور ٹول تعریفوں کو ماڈل کے اپنے ٹوکنائزر سے گن کر، علاوہ ازیں تصاویر کے ٹوکنز ملا کر بنتا ہے۔ ٹوکن گنتی والے endpoints بھیجنے سے پہلے یہی عدد لوٹاتے ہیں۔ ٹوکن گنتی
Shannon درجوں پر prompt_tokens وہ سب گنتا ہے جو ماڈل نے جواب لکھنے کے لیے پڑھا، اس لیے یہ صرف آپ کے پیغامات کے متن سے بڑا ہوتا ہے۔
سٹریمنگ
stream کو true پر سیٹ کرنے سے جواب chat.completion.chunk ایونٹس کے طور پر آتا ہے اور data: [DONE] پر ختم ہوتا ہے۔ اس سے پہلے کا آخری chunk finish_reason اور usage رکھتا ہے؛ کسی stream_options کی ضرورت نہیں۔ chunk کی شکلوں، keep-alive لائنوں اور سٹریم کے اندر ایررز کا اپنا صفحہ ہے۔ اسٹریمنگ
ایررز
ایرر ایک 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 | تصویر ان پٹ کے بغیر ہوسٹڈ اوپن ویٹ ماڈل کو تصویر کا حصہ بھیجا گیا۔ |
400 | invalid_request_error | <id> does not accept response_format | ساختی آؤٹ پٹ کے بغیر ہوسٹڈ اوپن ویٹ ماڈل کو 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 فیملی اور ہوسٹڈ اوپن ویٹ ماڈلز پر۔ |