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

إنشاء إكمالات الدردشة (غير متدفق)

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

  • عنوان الواجهة: https://api.codingplanx.ai/v1/chat/completions
  • طريقة الطلب: POST
  • نوع المحتوى: application/json

معلمات الطلب

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

اسم المعلمةالنوعمطلوبقيمة مثالالوصف
Content-Typestringنعمapplication/jsonتنسيق جسم الطلب
Acceptstringنعمapplication/jsonتنسيق جسم الاستجابة
AuthorizationstringلاBearer {{YOUR_API_KEY}}رمز المصادقة

جسم الطلب (Body)

اسم المعلمةالنوعمطلوبالقيمة الافتراضيةالوصف
modelstringنعم-معرّف النموذج المطلوب استخدامه (مثل gpt-4o, gpt-3.5-turbo).
messagesarrayنعم-قائمة رسائل المحادثة. يحتوي كل عنصر على role (system/user/assistant) و content.
temperaturenumberلا1درجة حرارة أخذ العينات (0-2). كلما زادت أصبحت النتائج أكثر عشوائية، وكلما انخفضت أصبحت أكثر حتمية.
top_pnumberلا1أخذ العينات النووي. لا يتم النظر إلا في الرموز الواقعة ضمن أعلى كتلة احتمالية بقيمة top_p. يُنصح عادةً بتعديل أحد temperature أو top_p فقط.
nintegerلا1عدد خيارات الإكمال التي سيتم توليدها لكل رسالة إدخال.
streambooleanلاfalseما إذا كان سيتم البث التدريجي. هنا يجب ضبطه على false.
stopstring/arrayلاnullتسلسلات إيقاف التوليد في API (بحد أقصى 4).
max_tokensintegerلاinfالحد الأقصى لعدد الرموز التي يمكن توليدها، مع التقيد بحد طول السياق الخاص بالنموذج.
presence_penaltynumberلا0بين -2.0 و 2.0. القيم الموجبة تزيد احتمال حديث النموذج عن مواضيع جديدة.
frequency_penaltynumberلا0بين -2.0 و 2.0. القيم الموجبة تقلل احتمال تكرار النموذج لنفس الكلمات.
logit_biasobjectلاnullتعديل احتمالية ظهور رموز محددة في الإكمال.
userstringلا-معرّف فريد للمستخدم النهائي، يُستخدم لاكتشاف إساءة الاستخدام.
response_formatobjectلا-تحديد تنسيق الإخراج، مثل { "type": "json_object" } لتفعيل وضع JSON.
toolsarrayلا-قائمة الأدوات التي يمكن للنموذج استدعاؤها (المدعوم حاليًا هو function فقط).
tool_choicestring/objلاautoالتحكم في الوظيفة التي يجب على النموذج استدعاؤها (none/auto/وظيفة محددة).

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

جسم الاستجابة (Response Body)

اسم المعلمةالنوعالوصف
idstringالمعرّف الفريد لهذا الطلب.
objectstringنوع الكائن، والقيمة الثابتة هي chat.completion.
createdintegerطابع زمني Unix (بالثواني).
choicesarrayقائمة نتائج الإكمال.
├─ indexintegerفهرس هذه النتيجة داخل القائمة.
├─ messageobjectمحتوى الرسالة التي أنشأها النموذج.
│ ├─ rolestringالدور، ويكون عادةً assistant.
│ └─ contentstringالنص الفعلي للرسالة.
└─ finish_reasonstringسبب التوقف (مثل stop, length, tool_calls).
usageobjectإحصائيات استخدام الرموز.
├─ prompt_tokensintegerعدد الرموز المستهلكة في المُدخل.
├─ completion_tokensintegerعدد الرموز المستهلكة في إنشاء الإجابة.
└─ total_tokensintegerإجمالي عدد الرموز المستهلكة.

أمثلة

مثال طلب (cURL)

curl --location --request POST 'https://api.codingplanx.ai/v1/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "model": "gpt-4o",
  "messages": [
    {
      "role": "user",
      "content": "مرحبًا، هل يمكنك أن تعرّف بنفسك؟"
    }
  ],
  "max_tokens": 1000
}'

مثال استجابة

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "مرحبًا! أنا مساعد ذكاء اصطناعي مقدم من CodingPlanX، ويسعدني خدمتك."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 15,
        "completion_tokens": 25,
        "total_tokens": 40
    }
}

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

Q1: كيف يمكن تفعيل وضع JSON؟
A1: اضبط "response_format": { "type": "json_object" } داخل جسم الطلب. ملاحظة: عند استخدام وضع JSON، يجب عليك أن توجّه النموذج بوضوح في رسالة system أو user لإخراج JSON، وإلا فقد ينتج النموذج محتوى فارغًا بشكل متكرر إلى ما لا نهاية.

Q2: كيف أختار بين temperature و top_p؟
A2: نوصي عادةً بتعديل أحدهما فقط. إذا كنت تريد من النموذج أن يكون أكثر إبداعًا، يمكنك رفع temperature (مثل 0.8)؛ وإذا كنت تريد إجابات أكثر دقة وثباتًا، يمكنك خفضها (مثل 0.2).

Q3: لماذا تكون قيمة finish_reason هي length؟
A3: هذا يعني أن الرد الذي تم توليده قُطع بسبب الوصول إلى حد max_tokens الذي قمت بتعيينه أو بسبب تجاوز الحد الأقصى لطول السياق الذي يدعمه النموذج.

Q4: ما هو Token؟
A4: الـ Token هو الوحدة الأساسية التي يعالج بها النموذج النص. بالنسبة للنص الصيني، يعادل كل حرف صيني تقريبًا 1 إلى 2 Token. تعتمد الفوترة وحدود السياق في API على عدد الـ Tokens.

Q5: ما الفرق بين presence_penalty و frequency_penalty؟
A5: يركّز presence_penalty على “التحدث عن مواضيع جديدة”، أي إنه يفرض عقوبة بمجرد ظهور الكلمة؛ بينما يركّز frequency_penalty على “عدد مرات تكرار الكلمات”، أي كلما تكررت الكلمة أكثر زادت العقوبة.

Q6: إذا أردت الحصول على تأثير الكتابة اللحظية في الوقت الحقيقي، ماذا أفعل؟
A6: يرجى ضبط المعلمة stream على true. لاحظ أن تنسيق الاستجابة في البث التدريجي يختلف عن هذا المستند (غير المتدفق)، إذ يعتمد على Server-Sent Events (SSE).