تُنفَّذ الطلبات كتشغيل عادي لوكيل Gateway (عبر مسار الشفرة نفسه الذي يستخدمه
openclaw agent)، لذلك تتطابق آليات التوجيه والأذونات والإعدادات مع Gateway لديك.
تمكين نقطة النهاية
enabled: false (أو احذفه) للتعطيل.
الحد الأمني (مهم)
تعامل مع نقطة النهاية هذه باعتبارها تمنح وصولًا كاملًا للمشغّل إلى مثيل Gateway:- يُعادل رمز Gateway المميز/كلمة المرور الصالحة لنقطة النهاية هذه بيانات اعتماد المالك/المشغّل، وليس نطاقًا محدودًا لكل مستخدم.
- تمر الطلبات عبر مسار وكيل مستوى التحكم نفسه الذي تستخدمه إجراءات المشغّل الموثوق بها، ولذلك يمكن لنقطة النهاية هذه استخدام الأدوات الحساسة إذا كانت سياسة الوكيل المستهدف تسمح بها.
- أبقِها مقتصرة على local loopback أو الشبكة الطرفية أو الدخول الخاص. لا تعرضها للإنترنت العام.
راجع نطاقات المشغّل، والأمان، والوصول عن بُعد.
المصادقة
تستخدم إعدادات مصادقة Gateway (راجع مصادقة الوكيل الموثوق للاطلاع على تفاصيل هذا الوضع):
ملاحظات:
- يمكن للمستدعين على المضيف نفسه الذين يتجاوزون الوكيل في Gateway يعمل بوضع
trusted-proxyالرجوع مباشرةً إلىgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD. ويؤدي وجود أي دليل في ترويساتForwardedأوX-Forwarded-*أوX-Real-IPإلى إبقاء الطلب على مسار الوكيل الموثوق بدلًا من ذلك. - إذا تم إعداد
gateway.auth.rateLimitوفشلت محاولات مصادقة كثيرة جدًا، فستعيد نقطة النهاية الرمز429مع ترويسةRetry-After.
متى تستخدم نقطة النهاية هذه
- فضّلها على إضافة قناة مضمّنة جديدة عندما لا يكون تكاملك سوى واجهة مشغّل/عميل أخرى لـ Gateway نفسه.
- بالنسبة إلى عملاء الأجهزة المحمولة الأصليين الذين يتصلون مباشرةً بـ Gateway بعيد، فضّل WebChat أو بروتوكول Gateway مع تدفق التهيئة الأولية للجهاز المقترن/رمز الجهاز المميز، لكي لا يحتاج الجهاز إلى رمز HTTP مميز/كلمة مرور مشتركة.
- أنشئ Plugin قناة بدلًا من ذلك عند التكامل مع شبكة مراسلة خارجية لها مستخدموها أو غرفها أو تسليم Webhook أو نقلها الصادر. راجع إنشاء Plugins.
عقد النموذج القائم على الوكيل أولًا
يتعامل OpenClaw مع حقل OpenAI المسمىmodel باعتباره هدف وكيل، وليس معرّف نموذج خامًا لمزوّد.
ترويسات الطلب الاختيارية:
يسرد
/v1/models أهداف الوكلاء ذات المستوى الأعلى (openclaw، وopenclaw/default، وopenclaw/<agentId>)، وليس نماذج مزوّدي الواجهة الخلفية ولا الوكلاء الفرعيين؛ إذ يظل الوكلاء الفرعيون جزءًا من بنية التنفيذ الداخلية. وإذا حذفت x-openclaw-model، فسيعمل الوكيل المحدد باستخدام نموذجه المعتاد المُعدّ.
يستخدم /v1/embeddings معرّفات model نفسها الخاصة بأهداف الوكلاء. أرسل x-openclaw-model (من مستدعٍ يستخدم سرًا مشتركًا، أو مستدعٍ يحمل الهوية ولديه operator.admin) لاختيار نموذج تضمين محدد؛ وإلا فسيستخدم الطلب إعداد التضمين المعتاد للوكيل المحدد.
سلوك الجلسة
تكون نقطة النهاية افتراضيًا عديمة الحالة لكل طلب (يتم إنشاء مفتاح جلسة جديد في كل استدعاء). إذا تضمّن الطلب سلسلة OpenAI باسمuser، فسيشتق Gateway منها مفتاح جلسة ثابتًا لكي تتمكن الاستدعاءات المتكررة من مشاركة جلسة وكيل. بالنسبة إلى التطبيقات المخصصة، أعد استخدام قيمة user نفسها لكل سلسلة محادثة؛ وتجنّب المعرّفات على مستوى الحساب إلا إذا أردت أن تشارك عدة محادثات/أجهزة جلسة OpenClaw واحدة. استخدم x-openclaw-session-key فقط عندما تحتاج إلى تحكم صريح في التوجيه عبر عدة عملاء/سلاسل، باستخدام مفاتيح يملكها التطبيق وتتجنب مساحات الأسماء المحجوزة أعلاه.
حدود الطلبات (الإعدادات)
يمكن ضبط القيم الافتراضية ضمنgateway.http.endpoints.chatCompletions:
تُقبل مصادر
image_url بتنسيقي HEIC/HEIF وتُطبّع إلى JPEG قبل تسليمها إلى المزوّد عبر معالج الصور المشترك في OpenClaw (Rastermill)، والذي يرجع إلى محوّل نظام (sips أو ImageMagick أو GraphicsMagick أو ffmpeg) للتنسيقات التي تحتاج إلى دعم برنامج ترميز خارجي.
ملاحظة أمنية: لا يؤدي إدراج اسم مضيف في قائمة السماح إلى تجاوز حظر عناوين IP الخاصة/الداخلية. بالنسبة إلى بوابات Gateway المكشوفة للإنترنت، طبّق ضوابط خروج الشبكة بالإضافة إلى وسائل الحماية على مستوى التطبيق. راجع الأمان.
عقد أداة المحادثة
يدعم/v1/chat/completions مجموعة فرعية من أدوات الدوال متوافقة مع عملاء محادثة OpenAI الشائعين.
حقول الطلب المدعومة
تمر جميع حقول أخذ العينات وحدود الرموز عبر قناة معاملات تدفق الوكيل نفسها، وتُمرَّر وفق أفضل جهد ممكن:
- حد الرموز: يختار نقل المزوّد اسم الحقل على السلك:
max_completion_tokensلنقاط النهاية من عائلة OpenAI، وmax_tokensللمزوّدين الذين لا يقبلون إلا الاسم القديم (Mistral وChutes). - يُربط
stopبحقل الإيقاف في طبقة النقل:stopللواجهات الخلفية لإكمالات المحادثة، وstop_sequencesلـ Anthropic. لا تحتوي واجهة OpenAI Responses API على معامل إيقاف، لذا لا يُطبَّقstopعلى النماذج المستندة إلى Responses. - تستخدم الواجهة الخلفية لـ Codex Responses المستندة إلى ChatGPT أخذ عينات ثابتًا من جانب الخادم، وتزيل
temperatureوtop_p(إلى جانبmax_output_tokensوmetadataوprompt_cache_retentionوservice_tier) قبل وصول الطلب إلى تلك الواجهة الخلفية.
المتغيرات غير المدعومة
يُعاد400 invalid_request_error في الحالات التالية:
- إذا لم تكن
toolsمصفوفة، أو كانت تتضمن إدخالات أدوات ليست دوال، أو كانtool.function.nameمفقودًا - متغيرات
tool_choiceمثلallowed_toolsوcustom - قيم
tool_choice.function.nameالتي لا تطابق أداة مقدَّمة
tool_choice: "required" وtool_choice المثبّت على دالة، تحصر نقطة النهاية مجموعة أدوات الدوال المعروضة من العميل، وتوجّه وقت التشغيل إلى استدعاء أداة عميل قبل الاستجابة، وتُرجع خطأ إذا لم تتضمن استجابة الوكيل استدعاءً منظمًا مطابقًا لأداة عميل. ينطبق ذلك على قائمة tools التي يوفّرها المستدعي عبر HTTP، وليس على كل أداة داخلية لوكيل OpenClaw.
بنية استجابة الأداة دون بث
عندما يستدعي الوكيل الأدوات، تستخدم الاستجابة ما يلي:choices[0].finish_reason = "tool_calls"- إدخالات
choices[0].message.tool_calls[]التي تتضمنidوtype: "function"وfunction.nameوfunction.arguments(سلسلة JSON) - تعليقات المساعد قبل استدعاء الأداة، في
choices[0].message.content(وقد تكون فارغة)
بنية استجابة الأداة أثناء البث
عندما تكونstream: true، تصل استدعاءات الأدوات في مقاطع SSE تزايدية: فرق أولي لدور المساعد، ثم فروق اختيارية لتعليقات المساعد، ثم مقطع واحد أو أكثر من delta.tool_calls يحمل هوية الأداة وأجزاء الوسيطات، ثم مقطع نهائي يتضمن finish_reason: "tool_calls" وdata: [DONE].
إذا كانت stream_options.include_usage=true، يُصدر مقطع استخدام أخير قبل [DONE].
حلقة المتابعة للأداة
بعد تلقيtool_calls، نفّذ الدالة أو الدوال المطلوبة وأرسل طلب متابعة يتضمن رسالة استدعاء الأداة السابقة من المساعد، بالإضافة إلى رسالة واحدة أو أكثر ذات role: "tool" وقيمة tool_call_id مطابقة. يواصل ذلك حلقة الاستدلال نفسها للوكيل لإنتاج الإجابة النهائية.
البث (SSE)
عيّنstream: true لتلقي أحداث مرسلة من الخادم:
Content-Type: text/event-stream- يكون كل سطر حدث على النحو
data: <json> - ينتهي التدفق بالسطر
data: [DONE]
الإعداد السريع لـ Open WebUI
- عنوان URL الأساسي:
http://127.0.0.1:18789/v1 - عنوان URL الأساسي لـ Docker على macOS:
http://host.docker.internal:18789/v1 - مفتاح API: رمز حامل Gateway الخاص بك
- النموذج:
openclaw/default
GET /v1/models النموذج openclaw/default، ويستخدمه Open WebUI بوصفه معرّف نموذج المحادثة. لاستخدام مزوّد/نموذج خلفي محدد، عيّن النموذج الافتراضي المعتاد للوكيل، أو أرسل x-openclaw-model (مستدعٍ يملك سرًا مشتركًا، أو مستدعٍ يحمل هوية مع operator.admin).
اختبار تحقق سريع:
openclaw/default، فيمكن لمعظم إعدادات Open WebUI الاتصال باستخدام عنوان URL الأساسي والرمز نفسيهما.
أمثلة
جلسة ثابتة لمحادثة واحدة في تطبيق:user نفسها في الاستدعاءات اللاحقة لتلك المحادثة لمواصلة جلسة الوكيل نفسها.
دون بث:
/v1/embeddings قيمة input كسلسلة أو مصفوفة سلاسل.