إكمال المحادثات
استكمالات محادثة متوافقة مع OpenAI، مع دعم البث التدريجي والصور واستدعاء الأدوات والتحكم في الاستدلال.
POST /v1/chat/completions
curl https://api.unquant.io/v1/chat/completions \
-H "Authorization: Bearer $UNQUANT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"glm-5.3-flash",
"messages":[{"role":"user","content":"Hello!"}]}'حقول الطلب
modelسلسلة نصيةمطلوبglm-5.3-flash أو qwen-3.8-flash-next.
messagesمصفوفةمطلوبالأدوار هي system وuser وassistant وtool. المحتوى سلسلة نصية أو مصفوفة من أجزاء text وimage_url.
streamقيمة منطقيةبث الرد تدريجيًا على هيئة أحداث يرسلها الخادم.
stream_optionsكائنيضيف {"include_usage": true} جزءًا أخيرًا يتضمن أعداد التوكنات.
max_tokensعدد صحيحالحد الأقصى لطول الرد.
max_completion_tokensعدد صحيحمماثل للحقل max_tokens.
temperatureعدددرجة العشوائية في أخذ العينات.
top_pعددأخذ العينات النواتي.
top_kعدد صحيحأخذ العينات من التوكنات الأعلى احتمالًا، بعدد يحدده هذا المعامل.
min_pعددالحد الأدنى للاحتمال النسبي للتوكن.
seedعدد صحيحقيمة ابتدائية لأخذ عينات قابلة لإعادة الإنتاج.
stopسلسلة نصية أو مصفوفةتسلسلات التوقف.
frequency_penaltyعددخفض احتمال اختيار التوكنات بحسب عدد مرات ظهورها.
presence_penaltyعددخفض احتمال اختيار التوكنات التي سبق ظهورها، بصرف النظر عن عدد مرات ظهورها.
repetition_penaltyعددعقوبة تكرار تُطبّق بمعامل ضرب.
toolsمصفوفةالدوال التي يمكن للنموذج استدعاؤها، بتنسيق OpenAI.
tool_choiceسلسلة نصية أو كائنauto أو none أو required أو دالة محددة بالاسم.
parallel_tool_callsقيمة منطقيةالسماح باستدعاء عدة أدوات في دور واحد من المحادثة.
response_formatكائنمخرجات بتنسيق JSON.
logprobsقيمة منطقيةإرجاع لوغاريتمات احتمالات التوكنات.
top_logprobsعدد صحيحعدد البدائل التي تُرجع لكل توكن.
nعدد صحيحيجب أن تكون القيمة 1: استكمال واحد لكل طلب.
reasoning_effortسلسلة نصيةيقبل كلا النموذجين none أو low أو high؛ ويقبل GLM-5.3-Flash أيضًا max.
chat_template_kwargsكائنخيارات تفعيل خصائص القالب أو تعطيلها، مثل {"enable_thinking": false}.
تُتجاهل الحقول الأخرى.
الاستجابة
response.choices[0].message.contentتُرجع إحصاءات الاستخدام لمتابعة استخدامكم فقط؛ ولا تُفرض أي رسوم بناءً عليها.
البث التدريجي
عند استخدام "stream": true، يصل الرد على هيئة أحداث يرسلها الخادم بتنسيق أجزاء OpenAI، وينتهي بـ data: [DONE]. اقرؤوا النص من choices[0].delta.content.
الصور
يقبل كلا النموذجين الصور ضمن أجزاء image_url تحتوي على عنوان URL للبيانات المرمّزة بترميز base64، مثل data:image/png;base64,...، أو بتنسيق JPEG أو WebP. لا تُجلب الصور من روابط URL خارجية، وتُرجع هذه الطلبات الرمز 400.
{"role": "user", "content": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}}
]}استدعاء الأدوات
مرّروا tools كما في واجهة OpenAI API. عندما يستدعي النموذج أداة، يتضمن الرد finish_reason: "tool_calls" وmessage.tool_calls؛ نفّذوا الأداة، وأضيفوا رسالة بدور tool تتضمن نتيجتها وقيمة tool_call_id المطابقة، ثم أرسلوا طلبًا آخر.
الاستدلال
يُجري كلا النموذجين استدلالًا قبل الإجابة، ويدعمان reasoning_effort: القيمة none للإجابات المباشرة، أو low للاستدلال الخفيف، أو high للمسائل الأصعب؛ ويدعم GLM-5.3-Flash أيضًا max، ويستخدم high افتراضيًا. تُرجع خطوات التفكير منفصلة في reasoning_content، ولا تُدمج مطلقًا في content. ويمكن أيضًا تعطيل التفكير باستخدام "thinking": {"type": "disabled"} أو "chat_template_kwargs": {"enable_thinking": false}.
التزامن
تحدد خطتكم عدد الطلبات التي يمكن تنفيذها في الوقت نفسه عبر جميع مفاتيحكم. أي طلب يتجاوز هذا الحد يُرجع الرمز 429 فورًا ولا يُضاف إلى قائمة انتظار؛ ولا تتأثر الطلبات قيد التنفيذ.