يمكن لـ Gateway في OpenClaw تقديم نقطة نهاية Chat Completions صغيرة متوافقة مع OpenAI. تكون نقطة النهاية هذه معطّلة افتراضيًا. فعّلها في الإعدادات أولًا.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
POST /v1/chat/completions- نفس منفذ Gateway (تعدد إرسال WS + HTTP):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent)، لذلك تتطابق إعدادات التوجيه/الأذونات/التكوين مع Gateway لديك.
المصادقة
تستخدم إعدادات مصادقة Gateway. مسارات مصادقة HTTP الشائعة:- مصادقة السر المشترك (
gateway.auth.mode="token"أو"password"):Authorization: Bearer <token-or-password> - مصادقة HTTP الموثوقة الحاملة للهوية (
gateway.auth.mode="trusted-proxy"): وجّه عبر الوكيل المكوّن والواعي بالهوية ودعه يحقن ترويسات الهوية المطلوبة - مصادقة مفتوحة لدخول خاص (
gateway.auth.mode="none"): لا يلزم وجود ترويسة مصادقة
- عند
gateway.auth.mode="token"، استخدمgateway.auth.token(أوOPENCLAW_GATEWAY_TOKEN). - عند
gateway.auth.mode="password"، استخدمgateway.auth.password(أوOPENCLAW_GATEWAY_PASSWORD). - عند
gateway.auth.mode="trusted-proxy"، يجب أن يأتي طلب HTTP من مصدر وكيل موثوق مكوّن؛ وتتطلب وكلاء local loopback على المضيف نفسه ضبطًا صريحًا لـgateway.auth.trustedProxy.allowLoopback = true. - إذا كان
gateway.auth.rateLimitمكوّنًا وحدث عدد كبير جدًا من إخفاقات المصادقة، فترجع نقطة النهاية429معRetry-After.
حد الأمان (مهم)
عامل نقطة النهاية هذه كسطح وصول كامل للمشغّل لمثيل Gateway.- مصادقة حامل HTTP هنا ليست نموذج نطاق ضيقًا لكل مستخدم.
- يجب التعامل مع رمز/كلمة مرور Gateway صالحة لنقطة النهاية هذه كبيانات اعتماد مالك/مشغّل.
- تمر الطلبات عبر مسار وكيل مستوى التحكم نفسه مثل إجراءات المشغّل الموثوقة.
- لا يوجد حد أدوات منفصل لغير المالك/لكل مستخدم على نقطة النهاية هذه؛ بمجرد أن يجتاز المستدعي مصادقة Gateway هنا، يعامل OpenClaw ذلك المستدعي كمشغّل موثوق لهذا Gateway.
- في أوضاع مصادقة السر المشترك (
tokenوpassword)، تعيد نقطة النهاية الإعدادات الافتراضية العادية الكاملة للمشغّل حتى إذا أرسل المستدعي ترويسةx-openclaw-scopesأضيق. - تحترم أوضاع HTTP الموثوقة الحاملة للهوية (مثل مصادقة الوكيل الموثوق أو
gateway.auth.mode="none") ترويسةx-openclaw-scopesعند وجودها، وإلا فتعود إلى مجموعة نطاقات المشغّل الافتراضية العادية. - إذا كانت سياسة الوكيل الهدف تسمح بأدوات حساسة، يمكن لنقطة النهاية هذه استخدامها.
- أبقِ نقطة النهاية هذه على loopback/tailnet/دخول خاص فقط؛ لا تعرضها مباشرة على الإنترنت العام.
gateway.auth.mode="token"أو"password"+Authorization: Bearer ...- يثبت امتلاك سر مشغّل Gateway المشترك
- يتجاهل
x-openclaw-scopesالأضيق - يعيد مجموعة نطاقات المشغّل الافتراضية الكاملة:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - يعامل دورات المحادثة على نقطة النهاية هذه كدورات مُرسلة من المالك
- أوضاع HTTP الموثوقة الحاملة للهوية (مثل مصادقة الوكيل الموثوق، أو
gateway.auth.mode="none"على دخول خاص)- تصادق هوية موثوقة خارجية ما أو حد نشر
- تحترم
x-openclaw-scopesعند وجود الترويسة - تعود إلى مجموعة نطاقات المشغّل الافتراضية العادية عند غياب الترويسة
- لا تفقد دلالات المالك إلا عندما يضيّق المستدعي النطاقات صراحة ويحذف
operator.admin
عقد نموذج يعطي الأولوية للوكيل
يعامل OpenClaw حقل OpenAImodel كـ هدف وكيل، وليس معرّف نموذج مزوّد خامًا.
model: "openclaw"يوجّه إلى الوكيل الافتراضي المكوّن.model: "openclaw/default"يوجّه أيضًا إلى الوكيل الافتراضي المكوّن.model: "openclaw/<agentId>"يوجّه إلى وكيل محدد.
x-openclaw-model: <provider/model-or-bare-id>يتجاوز نموذج الواجهة الخلفية للوكيل المحدد.x-openclaw-agent-id: <agentId>يبقى مدعومًا كتجاوز توافق.x-openclaw-session-key: <sessionKey>يتحكم بالكامل في توجيه الجلسة.x-openclaw-message-channel: <channel>يضبط سياق قناة الدخول الاصطناعية للمطالبات والسياسات الواعية بالقناة.
model: "openclaw:<agentId>"model: "agent:<agentId>"
تفعيل نقطة النهاية
اضبطgateway.http.endpoints.chatCompletions.enabled إلى true:
تعطيل نقطة النهاية
اضبطgateway.http.endpoints.chatCompletions.enabled إلى false:
سلوك الجلسة
افتراضيًا، تكون نقطة النهاية عديمة الحالة لكل طلب (يُنشأ مفتاح جلسة جديد مع كل استدعاء). إذا تضمّن الطلب سلسلة OpenAIuser، يشتق Gateway مفتاح جلسة ثابتًا منها، بحيث يمكن للاستدعاءات المتكررة مشاركة جلسة وكيل.
لماذا يهم هذا السطح
هذه هي مجموعة التوافق الأعلى قيمة للواجهات الأمامية والأدوات ذاتية الاستضافة:- تتوقع معظم إعدادات Open WebUI وLobeChat وLibreChat وجود
/v1/models. - تتوقع العديد من أنظمة RAG وجود
/v1/embeddings. - يمكن لعملاء محادثة OpenAI الحاليين عادةً البدء بـ
/v1/chat/completions. - يفضّل عملاء أكثر أصالة للوكيل بشكل متزايد
/v1/responses.
قائمة النماذج وتوجيه الوكيل
What does `/v1/models` return?
What does `/v1/models` return?
قائمة أهداف وكلاء OpenClaw.المعرّفات المرجعة هي إدخالات
openclaw وopenclaw/default وopenclaw/<agentId>.
استخدمها مباشرة كقيم OpenAI model.Does `/v1/models` list agents or sub-agents?
Does `/v1/models` list agents or sub-agents?
يسرد أهداف وكلاء المستوى الأعلى، وليس نماذج مزوّدي الواجهة الخلفية ولا الوكلاء الفرعيين.تبقى الوكلاء الفرعيون طوبولوجيا تنفيذ داخلية. لا تظهر كنماذج صورية.
Why is `openclaw/default` included?
Why is `openclaw/default` included?
openclaw/default هو الاسم المستعار الثابت للوكيل الافتراضي المكوّن.هذا يعني أن العملاء يمكنهم الاستمرار في استخدام معرّف واحد قابل للتنبؤ حتى إذا تغيّر معرّف الوكيل الافتراضي الحقيقي بين البيئات.How do I override the backend model?
How do I override the backend model?
استخدم
x-openclaw-model.أمثلة:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5إذا حذفته، يعمل الوكيل المحدد بخيار النموذج العادي المكوّن له.How do embeddings fit this contract?
How do embeddings fit this contract?
يستخدم
/v1/embeddings معرّفات model نفسها الخاصة بهدف الوكيل.استخدم model: "openclaw/default" أو model: "openclaw/<agentId>".
عندما تحتاج إلى نموذج تضمين محدد، أرسله في x-openclaw-model.
بدون تلك الترويسة، يمر الطلب إلى إعداد التضمين العادي للوكيل المحدد.البث (SSE)
اضبطstream: true لتلقي Server-Sent Events (SSE):
Content-Type: text/event-stream- كل سطر حدث هو
data: <json> - ينتهي البث بـ
data: [DONE]
عقد أدوات المحادثة
يدعم/v1/chat/completions مجموعة فرعية من أدوات الدوال متوافقة مع عملاء OpenAI Chat الشائعين.
حقول الطلب المدعومة
tools: مصفوفة من{ "type": "function", "function": { ... } }tool_choice:"auto","none"- دورات متابعة
messages[*].role: "tool" messages[*].tool_call_idلربط نتائج الأدوات باستدعاء أداة سابقmax_completion_tokens: رقم؛ حد لكل استدعاء لإجمالي رموز الإكمال (بما في ذلك رموز الاستدلال). اسم حقل OpenAI Chat Completions الحالي؛ مفضّل عند إرسال كل منmax_completion_tokensوmax_tokens.max_tokens: رقم؛ اسم مستعار قديم مقبول للتوافق الخلفي. يُتجاهل عند وجودmax_completion_tokensأيضًا.
max_completion_tokens لنقاط نهاية عائلة OpenAI، وmax_tokens للمزوّدين الذين لا يقبلون إلا الاسم القديم (مثل Mistral وChutes).
المتغيرات غير المدعومة
ترجع نقطة النهاية400 invalid_request_error لمتغيرات الأدوات غير المدعومة، بما في ذلك:
toolsليست مصفوفة- إدخالات أدوات ليست من نوع دالة
tool.function.nameمفقود- متغيرات
tool_choiceمثلallowed_toolsوcustom tool_choice: "required"(لا يُفرض بعد في وقت التشغيل؛ سيدعم بمجرد تنفيذ الفرض الصارم)tool_choice: { "type": "function", "function": { "name": "..." } }(نفس مبررrequired)- قيم
tool_choice.function.nameالتي لا تطابقtoolsالمقدمة
شكل استجابة الأدوات غير المبثوثة
عندما يقرر الوكيل استدعاء أدوات، تستخدم الاستجابة:choices[0].finish_reason = "tool_calls"- إدخالات
choices[0].message.tool_calls[]مع:idtype: "function"function.namefunction.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مطابق
إعداد سريع لـ Open WebUI
لاتصال 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/modelsopenclaw/default - يجب أن يستخدم Open WebUI
openclaw/defaultكمعرّف نموذج المحادثة - إذا أردت مزوّد/نموذج واجهة خلفية محددًا لذلك الوكيل، فاضبط النموذج الافتراضي العادي للوكيل أو أرسل
x-openclaw-model
openclaw/default، يمكن لمعظم إعدادات Open WebUI الاتصال بعنوان URL الأساسي والرمز نفسيهما.
أمثلة
غير مبثوث:- يُرجع
/v1/modelsأهداف وكلاء OpenClaw، وليس كتالوجات المزوّدين الخام. - يكون
openclaw/defaultموجودًا دائمًا، لذا يعمل معرّف ثابت واحد عبر البيئات. - تنتمي تجاوزات المزوّد/النموذج في الواجهة الخلفية إلى
x-openclaw-model، وليس إلى حقلmodelفي OpenAI. - يدعم
/v1/embeddingsاستخدامinputكسلسلة نصية أو مصفوفة من السلاسل النصية.