مواد پر جائیں
Chat Completions

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)

جواب ایک JSON آبجیکٹ ہے:

200 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)

جواب کی شکل اوپر جیسی ہی ہے۔ ہوسٹڈ اوپن ویٹ ماڈلز پر اس کے usage میں دو تفصیلات بڑھ جاتی ہیں: کیش سے پڑھے گئے پرامپٹ ٹوکنز اور reasoning پر خرچ ہونے والے ٹوکنز۔

200 JSON
{
  "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 سب سے زیادہ لوٹاتا ہے۔ مکمل فہرست، اور کن پر دوبارہ کوشش کرنی ہے، اس کا اپنا صفحہ ہے۔ غلطیاں

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
اسٹیٹس قسم پیغام کب
401 authentication_error Missing authentication
Invalid 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 فیملی اور ہوسٹڈ اوپن ویٹ ماڈلز پر۔