ادعُ أصدقاء واحصل على رموز مجانية!اعرف المزيد

التحكم في مستوى جهد نموذج الاستدلال (Chat Completions)

وصف الواجهة

عند تقديم مطالبة، سيُرجع هذا النموذج ردًا أو أكثر من ردود الإكمال المتوقعة (مع دعم التحكم في مستوى جهد التفكير لنماذج الاستدلال).

  • مرجع الوثائق الرسمية: OpenAI Reasoning Guides
  • حالة الواجهة: تم الإصدار (released)

شرح الطلب

  • طريقة الطلب: POST
  • عنوان الطلب: https://api.codingplanx.ai/v1/chat/completions

ترويسات الطلب (Headers)

اسم المعاملمطلوبالنوعالقيمة المثالالوصف
Content-Typeنعمstringapplication/jsonتنسيق البيانات
Acceptنعمstringapplication/jsonتنسيق الاستجابة المقبول
AuthorizationلاstringBearer {{YOUR_API_KEY}}بيانات اعتماد المصادقة

معاملات جسم الطلب (Body)

تنسيق البيانات: application/json

اسم المعاملمطلوبالنوعالوصف
modelنعمstringمعرّف النموذج المطلوب استخدامه (مثل o4-mini وغيرها).
messagesنعمarrayقائمة الرسائل الموجودة في المحادثة حتى الآن. تتضمن role (مثل user/assistant) وcontent (محتوى الرسالة).
toolsنعمarrayقائمة بالأدوات (الدوال) التي يمكن للنموذج استدعاؤها. تُستخدم لتزويد النموذج بدوال يمكنه توليد مدخلات JSON لها.
tool_choiceنعمobjectيتحكم في الدالة التي سيستدعيها النموذج. تشير none إلى عدم الاستدعاء، وتشير auto إلى الاختيار التلقائي.
reasoning_effortلاstringالمعامل الأساسي: يتحكم في مستوى الجهد الذي يبذله نموذج الاستدلال عند توليد الرد (عمق التفكير). القيم الشائعة هي low وmedium وhigh.
temperatureلاnumberدرجة حرارة أخذ العينات، بين 0 و2. القيم الأعلى (مثل 0.8) تجعل المخرجات أكثر عشوائية، والقيم الأقل (مثل 0.2) تجعلها أكثر تركيزًا وحسمًا. يُنصح بتعديل هذا المعامل أو top_p فقط، وليس كليهما معًا.
top_pلاnumberأخذ عينات النواة. قيمة 0.1 تعني أنه سيتم النظر فقط في الرموز التي تشكل أعلى 10% من الكتلة الاحتمالية. يُنصح بتعديل هذا المعامل أو temperature فقط، وليس كليهما معًا.
nلاintegerالقيمة الافتراضية هي 1. عدد خيارات إكمال الدردشة التي سيتم توليدها لكل رسالة إدخال.
streamلاbooleanالقيمة الافتراضية هي false. عند ضبطه على true، سيتم إرسال زيادات الرسائل الجزئية بصيغة Server-Sent Events (SSE)، مع إنهاء التدفق عبر data: [DONE].
stopلاstringحتى 4 سلاسل نصية يمكن أن تتوقف عندها واجهة API عن توليد المزيد من الرموز.
max_tokensلاintegerالحد الأقصى لعدد الرموز التي يمكن توليدها في إكمال الدردشة. يخضع مجموع طول رموز الإدخال والإخراج لحد طول السياق الخاص بالنموذج.
presence_penaltyلاnumberرقم بين -2.0 و2.0. القيم الموجبة تعاقب الرموز الجديدة بناءً على ما إذا كانت قد ظهرت مسبقًا، مما يزيد احتمالية التطرق إلى مواضيع جديدة.
frequency_penaltyلاnumberرقم بين -2.0 و2.0. القيم الموجبة تعاقب الرموز الجديدة بحسب تكرار ظهورها في النص حتى الآن، مما يقلل من تكرار نفس المحتوى.
logit_biasلاobjectيقبل كائن JSON يربط معرّفات الرموز بقيم انحياز (من -100 إلى 100) لتعديل احتمال ظهور رموز معينة في الإكمال.
userلاstringمعرّف فريد يمثل المستخدم النهائي، ويساعد في المراقبة واكتشاف إساءة الاستخدام.
response_formatلاobjectيحدد التنسيق الذي يجب أن يخرجه النموذج. على سبيل المثال، {"type": "json_object"} لتفعيل وضع JSON.
seenلاintegerميزة في مرحلة الاختبار (مشابهة لـ seed). عند تحديدها، سيبذل النظام أقصى جهد ممكن لجعل أخذ العينات حتميًا بحيث تعود نفس المعلمات بنفس النتيجة.

مثال الطلب

{
  "model": "o4-mini",
  "max_tokens": 500,
  "messages": [
    {
      "role": "user",
      "content": "مرحبًا، يرجى شرح مبدأ الحوسبة الكمومية بالتفصيل."
    }
  ],
  "temperature": 1.0,
  "stream": false,
  "reasoning_effort": "medium"
}

شرح الاستجابة

معاملات جسم الاستجابة

تنسيق البيانات: application/json

اسم المعاملالنوعالوصف
idstringالمعرّف الفريد لهذا الطلب.
objectstringنوع الكائن، وعادة ما يكون chat.completion.
createdintegerالطابع الزمني لوقت الإنشاء.
choicesarrayقائمة بنتائج الإكمال.
indexintegerفهرس هذا الخيار داخل القائمة.
messageobjectكائن الرسالة الذي ولّده النموذج. يتضمن role وcontent.
finish_reasonstringسبب توقف التوليد (مثل stop أو length).
usageobjectإحصاءات استهلاك الرموز.
prompt_tokensintegerعدد الرموز المستهلكة في المطالبة.
completion_tokensintegerعدد الرموز المستهلكة في المخرجات التي ولّدها النموذج.
total_tokensintegerإجمالي عدد الرموز المستهلكة.

مثال الاستجابة (HTTP 200 OK)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
مرحبًا، كيف يمكنني مساعدتك اليوم؟"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

FAQs (الأسئلة الشائعة)

1. ما وظيفة المعامل reasoning_effort؟

يُستخدم reasoning_effort للتحكم في مقدار الموارد والوقت الذي يستهلكه نموذج يمتلك قدرات استدلال متقدمة (Reasoning)، مثل نماذج OpenAI من سلسلتي o1/o4، في التفكير الداخلي قبل إعطاء الإجابة النهائية. عادةً ما يدعم ثلاث درجات: low وmedium وhigh. عند ضبطه على high، سيجري النموذج استدلالًا منطقيًا أعمق، وهو مناسب لحل المسائل المعقدة في الرياضيات أو البرمجة؛ لكن زمن الاستجابة سيزداد تبعًا لذلك.

2. لماذا لا أتلقى استجابة JSON قياسية عند تفعيل stream: true؟

عند تفعيل البث التدريجي (stream: true)، تستخدم واجهة API بروتوكول Server-Sent Events (SSE) لإرجاع أجزاء من البيانات بشكل مستمر. يتم إرسال كل جزء بصيغة data: {...}، وعند اكتمال الإرسال، يتم إرسال الرسالة data: [DONE]. يحتاج المطور إلى قراءة هذه الأسطر واحدًا تلو الآخر وتحليل سلسلة JSON التي تأتي بعد data: ثم تجميع الرد الكامل.

3. لماذا توصي الوثائق بتعديل واحد فقط من temperature وtop_p؟

كلا المعاملين يُستخدمان للتحكم في عشوائية المخرجات وتنوعها. يقوم temperature بتغيير توزيع الاحتمالات عبر مقياس logits، بينما يقوم top_p (أخذ عينات النواة) بتقييد مجموعة المرشحين عبر استبعاد الكلمات ذات الاحتمالات المنخفضة خارج الكتلة الاحتمالية التراكمية المطلوبة. يؤدي تعديل الاثنين معًا إلى جعل سلوك النموذج أصعب في التنبؤ والتحكم، لذا فإن أفضل ممارسة هي تثبيت أحدهما (غالبًا إبقاؤه على القيمة الافتراضية) وتعديل الآخر فقط لتحقيق مستوى العشوائية المطلوب.

4. ماذا يعني إذا كانت قيمة finish_reason هي "length"؟

هذا يعني أن رد النموذج قد تم قطعه قسرًا. وعادةً ما يكون السبب أحد أمرين: إما أن عدد الرموز المولّدة بلغ الحد الأقصى المحدد في max_tokens، أو أن مجموع رموز المطالبة (Prompt) والرد الذي ولّده النموذج تجاوز الحد الأقصى لنافذة السياق التي يدعمها النموذج. في هذه الحالة، يُنصح بتقليل سجل المحادثة أو زيادة قيمة max_tokens.

5. كيف أجبر النموذج على إرجاع بيانات بصيغة JSON؟

يمكنك تفعيل وضع JSON عبر تمرير "response_format": {"type": "json_object"} داخل جسم الطلب. مهم جدًا: عند تفعيل هذا الوضع، يجب عليك أيضًا أن تطلب صراحةً من النموذج بلغة طبيعية داخل messages (عادةً في system أو user) أن يُخرج JSON. وإلا فقد يدخل النموذج في حلقة توليد لا نهائية من المسافات الفارغة حتى يصل إلى حد الرموز المسموح.