تخطَّ إلى المحتوى
Chat Completions

Chat Completions

يقبل POST /v1/chat/completions محادثة ويعيد رسالة النموذج التالية بصيغة OpenAI Chat Completions. استخدمه من أي OpenAI SDK أو عبر HTTP مباشرة؛ وهذه الصفحة هي المرجع حقلاً بحقل.

POST https://api.shannon-ai.com/v1/chat/completions

أصغر طلب هو معرّف نموذج ورسالة مستخدم واحدة.

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 الخاص بك. يُقبل x-api-key: YOUR_API_KEY بدلاً منه على كل نقطة نهاية.
Content-Type application/json مطلوبة. أي قيمة أخرى تعيد 415.
x-request-id اختيارية. معرّفك الخاص للطلب. يعود دون تغيير في الرد.

ترويسات الرد

الترويسة الوصف
x-request-id في كل رد، بما فيه الأخطاء وعمليات البث: القيمة التي أرسلتها، أو 12 رمزاً سداسياً عشرياً إن لم ترسل شيئاً. اذكرها عند الإبلاغ عن مشكلة.
content-type application/json، أو text/event-stream عندما تكون stream هي true.

حقول الطلب

الحقل messages وحده مطلوب. يسمّي العمود يطبّقه النماذج التي يغيّر فيها الحقل الرد. النماذج المفتوحة الأوزان المستضافة هي المعرّفات الاثنا عشر في قائمة النماذج؛ وعائلة Shannon 3 هي shannon-3 وshannon-3-pro وshannon-3.1 وshannon-3.1-pro. النماذج والأسعار

الحقل النوع الافتراضي الوصف يطبّقه
model string shannon-1.6-lite النموذج الذي يجيب: معرّف من قائمة النماذج. أرسله مع كل طلب. المطابقة لا تراعي حالة الأحرف. المعرّف غير المنشور يعيد 400 unknown model. جميع النماذج
messages array مطلوب. المحادثة، بدءاً بأقدم رسالة. انظر الرسائل أدناه. جميع النماذج
stream boolean false تؤدي true إلى إرسال الرد كأحداث يرسلها الخادم (server-sent events) أثناء كتابته. جميع النماذج
max_tokens integer 4096 الحد الأعلى للرد، بالـ tokens. تُنقل القيمة الخارجة عن النطاق من 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 أخذ العينات النووي (nucleus sampling). تُحصر القيم بين 0 و1. النماذج المفتوحة الأوزان المستضافة
seed integer بذرة جهاز أخذ العينات، أي عدد صحيح. من دونها تُشتق البذرة من النموذج والمحادثة، لذا يستخدم الطلب نفسه المرسل مرتين البذرة نفسها. النماذج المفتوحة الأوزان المستضافة
stop string | array سلسلة نصية أو مصفوفة سلاسل. يُستخدم منها حتى 4. تنتهي الإجابة قبل أول واحدة تظهر؛ ولا يُعاد نص الإيقاف نفسه. النماذج المفتوحة الأوزان المستضافة
reasoning_effort string high مقدار استدلال النموذج قبل أن يجيب: 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 {"type": "json_object"} للحصول على إجابة JSON، أو {"type": "json_schema", "json_schema": {…}} لإجابة تتبع مخططك. جميع مستويات Shannon؛ والنماذج المفتوحة الأوزان المستضافة كما هو مبيّن لكل معرّف
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، حتى تعمل شيفرة العميل الحالية دون تغيير. لا تغيّر هذه الحقول الرد: يوجد دائماً اختيار واحد، وينتهي البث دائماً بالاستخدام.

الحقل الذي له نوع JSON خاطئ، مثل "max_tokens": "100"، يعيد 422. وكذلك الطلب الذي لا يحتوي على messages.

للأدوات والمخرجات المنظمة والاستدلال والبحث في الويب صفحة خاصة بكل منها: استدعاء الدوال, مخرجات منظمة, جهد الاستدلال, بحث ويب مدمج.

طلب مع خيارات

يحدد هذا الطلب رسالة نظام وحقول أخذ العينات وجهد الاستدلال. ويستخدم نموذجاً مفتوح الأوزان مستضافاً، يطبّق كل ذلك.

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 فيه تفصيلين في النماذج المفتوحة الأوزان المستضافة: tokens المطالبة المقروءة من ذاكرة التخزين المؤقت وtokens المنفقة على الاستدلال.

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 أمرين. الأول، أنه عدد tokens المحجوزة من رصيدك عند بدء الطلب. وعند اكتمال الرد يُستبدل ذلك المقدار بـ tokens التي استخدمها الطلب فعلاً. إذا كان max_tokens أكبر من المتبقي من رصيدك، يعيد الطلب 429 Quota exceeded حتى لو كان الرد نفسه سيتسع. أرسل max_tokens أقل لحجز مقدار أقل.

يُحتسب shannon-coder-1 بشكل مختلف على نقطة النهاية هذه: كل طلب هو أحد استدعاءات Shannon Coder في خطتك، ولا تُحجز له أي tokens. الحدود والرصيد

والثاني، أنه يحدّ طول الرد في هذه النماذج:

النماذج ما يفعله max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 يتوقف الرد عند بلوغ الحد. وينتهي البث حينها بـ finish_reason هو length.
النماذج المفتوحة الأوزان المستضافة يتوقف نص الإجابة عند max_tokens. ولا يُحتسب الاستدلال ضمنه. القيم الأقل من 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 معرّف الاستدعاء ويحمل content النتيجة كسلسلة نصية. جميع النماذج

مع معرّف من عائلة Shannon 3، ضع التعليمات التي يجب الالتزام بها في رسالة user.

في مستويات Shannon يعيد الطلب الذي لا نص للمستخدم فيه ولا tools الخطأ 400 No user message provided.

أجزاء المحتوى

الجزء الوصف متاح على
{"type": "text", "text": "…"} نص عادي. جميع النماذج
{"type": "image_url", "image_url": {"url": "…"}} صورة، كرابط data: بمحتوى base64 أو كرابط http(s). عائلة 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 المعرّف القياسي للنموذج الذي أجاب. وقد يختلف في طريقة كتابته عن المعرّف الذي أرسلته.
choices array دائماً اختيار واحد بالضبط، قيمة index فيه 0.
choices[0].message.role string دائماً assistant.
choices[0].message.content string | null نص الإجابة. مع tool_calls تكون قيمته null في مستويات Shannon؛ ويمكن للنماذج المفتوحة الأوزان المستضافة إرسال نص بجانب الاستدعاءات.
choices[0].message.reasoning_content string | null الاستدلال الذي كتبه النموذج قبل الإجابة، أو null عند عدم وجوده.
choices[0].message.tool_calls array موجودة فقط عندما يستدعي النموذج أدوات. لكل عنصر id وtype هو function وfunction فيه name وarguments كسلسلة JSON.
choices[0].message.annotations array فقط في الطلب الذي يتضمن web_search: true ووجد بحثه شيئاً. عنصر url_citation واحد لكل مصدر تسميه علامة في content، مع url وtitle وstart_index وend_index (موضع العلامة محسوباً بالأحرف، والنهاية غير مشمولة).
choices[0].finish_reason string سبب انتهاء الرد. انظر أسباب الانتهاء.
usage object tokens الطلب. انظر الاستخدام.
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.prompt_tokens integer tokens المدخلة. جميع النماذج
usage.completion_tokens integer tokens المخرجة: الاستدلال والإجابة واستدعاءات الأدوات معاً. جميع النماذج
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 الذي أُنفق على الاستدلال. النماذج المفتوحة الأوزان المستضافة

في النماذج المفتوحة الأوزان المستضافة، prompt_tokens هي رسائلك وتعريفات الأدوات محسوبة بمجزّئ النموذج نفسه (tokenizer)، مضافاً إليها tokens أي صور. وتعيد نقاط نهاية عدّ tokens الرقم نفسه قبل أن ترسل. عدّ الـ tokens

في مستويات Shannon، تحسب prompt_tokens كل ما قرأه النموذج ليكتب الرد، لذا فهي أكبر من نص رسائلك وحده.

البث

عند ضبط stream على true يصل الرد كأحداث chat.completion.chunk وينتهي بـ data: [DONE]. يحمل الجزء الأخير قبله finish_reason وusage؛ ولا حاجة إلى stream_options. لأشكال الأجزاء وأسطر إبقاء الاتصال حياً والأخطاء داخل البث صفحة خاصة. البث

الأخطاء

الخطأ كائن JSON فيه عضو error. تجري الفحوص بهذا الترتيب: مفتاح API، ثم نص الطلب، ثم معرّف النموذج، ثم الرصيد. يسرد الجدول ما تعيده نقطة النهاية هذه في الغالب. أما القائمة الكاملة، مع ما يجب إعادة محاولته، فلها صفحتها الخاصة. معالجة الأخطاء

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 ليست معرّفاً منشوراً.
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. الحماية من الإغراق: أكثر من 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 والنماذج المفتوحة الأوزان المستضافة.