Skip to main content
يقدّم vLLM النماذج مفتوحة المصدر (وبعض النماذج المخصصة) عبر واجهة HTTP API متوافقة مع OpenAI. يتصل OpenClaw باستخدام API ‏openai-completions، ويمكنه اكتشاف النماذج تلقائيًا عند الاشتراك في ذلك باستخدام VLLM_API_KEY.

بدء الاستخدام

1

بدء vLLM بخادم متوافق مع OpenAI

يجب أن يوفّر عنوان URL الأساسي نقاط نهاية /v1 (/v1/models و/v1/chat/completions). يعمل vLLM عادةً على:
2

تعيين متغير البيئة لمفتاح API

تصلح أي قيمة غير فارغة إذا كان خادمك لا يفرض المصادقة:
3

اختيار نموذج

استبدله بأحد معرّفات نماذج vLLM لديك:
4

التحقق من توفر النموذج

للإعداد غير التفاعلي (في CI أو البرمجة النصية)، مرّر عنوان URL الأساسي والمفتاح والنموذج مباشرةً:

اكتشاف النماذج (المزوّد الضمني)

عند تعيين VLLM_API_KEY (أو وجود ملف تعريف للمصادقة) وعدم تعريف models.providers.vllm، يستعلم OpenClaw من GET http://127.0.0.1:8000/v1/models ويحوّل المعرّفات المُعادة إلى إدخالات نماذج.
إذا عيّنت models.providers.vllm صراحةً، فسيستخدم OpenClaw النماذج التي صرّحت بها فقط. أضف "vllm/*": {} إلى agents.defaults.models لكي يستعلم OpenClaw أيضًا من نقطة النهاية /models لذلك المزوّد المُعدّ، ويضمّن جميع نماذج vLLM المُعلن عنها.

الإعداد الصريح

استخدم الإعداد الصريح عندما يعمل vLLM على مضيف أو منفذ مختلف، أو عندما تريد تثبيت قيمتَي contextWindow وmaxTokens، أو عندما يتطلب خادمك مفتاح API حقيقيًا، أو عندما تتصل بنقطة نهاية موثوقة عبر local loopback أو الشبكة المحلية أو Tailscale:
لإبقاء المزوّد ديناميكيًا من دون إدراج كل نموذج، أضف حرف بدل إلى كتالوج النماذج المرئي:

الإعداد المتقدم

يُعامل vLLM بوصفه واجهة خلفية /v1 شبيهة بالوكيل ومتوافقة مع OpenAI، وليس نقطة نهاية أصلية لـ OpenAI:
بالنسبة إلى نماذج Qwen، عيّن compat.thinkingFormat: "qwen-chat-template" في صف النموذج عندما يتوقع الخادم معاملات قالب محادثة Qwen. تعرض هذه النماذج ملف تعريف ثنائيًا لـ /think (off وon)، لأن التفكير في قالب محادثة Qwen عبارة عن علامة تشغيل/إيقاف، وليس سلّمًا لمستويات الجهد على نمط OpenAI.
يربط OpenClaw الأمر /think off بما يلي:
ترسل مستويات التفكير غير off القيمة enable_thinking: true. إذا كانت نقطة النهاية لديك تتوقع بدلًا من ذلك علامات في المستوى الأعلى على نمط DashScope، فاستخدم compat.thinkingFormat: "qwen" لإرسال enable_thinking في جذر الطلب.
بالنسبة إلى نماذج vllm/nemotron-3-* مع إيقاف التفكير، يرسل Plugin المضمّن ما يلي:
لتخصيص هذه القيم، عيّن chat_template_kwargs ضمن معاملات النموذج. إذا عيّنت أيضًا params.extra_body.chat_template_kwargs، فستكون لتلك القيمة الأولوية لأن extra_body هو آخر تجاوز لنص الطلب.
تأكد أولًا من بدء vLLM باستخدام محلّل استدعاءات الأدوات وقالب المحادثة الصحيحين للنموذج. توثّق vLLM استخدام hermes لنماذج Qwen2.5 وqwen3_xml لنماذج Qwen3-Coder.الأعراض: لا تعمل Skills أو الأدوات مطلقًا، أو يطبع المساعد JSON/XML خامًا مثل {"name":"read","arguments":...}، أو يعيد vLLM مصفوفة tool_calls فارغة عندما يرسل OpenClaw ‏tool_choice: "auto".لا تعيد بعض تركيبات Qwen وvLLM استدعاءات أدوات منظّمة إلا عندما يستخدم الطلب tool_choice: "required". افرض ذلك لكل نموذج باستخدام params.extra_body:
استبدل معرّف النموذج بالمعرّف الدقيق الناتج من openclaw models list --provider vllm، أو طبّق التجاوز نفسه من CLI:
هذا حل بديل يتطلب الاشتراك الصريح: فهو يجبر كل دور يحتوي على أدوات على إجراء استدعاء أداة، لذا لا تستخدمه إلا لإدخال نموذج مخصص يكون فيه ذلك مقبولًا. لا تعيّنه إعدادًا افتراضيًا عامًا لجميع نماذج vLLM، ولا تقرنه بوكيل يحوّل نصوص المساعد العشوائية إلى استدعاءات أدوات قابلة للتنفيذ.
إذا كان خادم vLLM يعمل على مضيف أو منفذ غير افتراضي، فعيّن baseUrl في إعداد المزوّد الصريح:

استكشاف الأخطاء وإصلاحها

بالنسبة إلى النماذج المحلية الكبيرة، أو مضيفي الشبكة المحلية البعيدين، أو اتصالات شبكة tailnet، عيّن مهلة طلب على مستوى المزوّد:
ينطبق timeoutSeconds على طلبات HTTP الخاصة بنماذج vLLM فقط: إعداد الاتصال، وترويسات الاستجابة، وبث النص، والإلغاء الكلي لعملية الجلب المحمية. كما يرفع الحد الأقصى لمراقب خمول LLM أو البث فوق القيمة الافتراضية الضمنية البالغة نحو 120 ثانية لهذا المزوّد. يُفضّل هذا على زيادة agents.defaults.timeoutSeconds، التي تتحكم في تشغيل الوكيل بأكمله.
تحقق من أن خادم vLLM قيد التشغيل ويمكن الوصول إليه:
إذا ظهر خطأ في الاتصال، فتحقق من المضيف والمنفذ ومن بدء vLLM في وضع الخادم المتوافق مع OpenAI. يثق OpenClaw في الأصل المحدد بدقة في models.providers.vllm.baseUrl لطلبات النماذج المحمية عبر نقاط نهاية local loopback والشبكة المحلية وTailscale. تظل أصول بيانات التعريف أو الأصول المحلية للرابط محظورة دون اشتراك صريح. عيّن models.providers.vllm.request.allowPrivateNetwork: true فقط عندما يجب أن تصل طلبات vLLM إلى أصل خاص آخر، أو false لإلغاء الثقة في الأصل المطابق تمامًا.
إذا فشلت الطلبات بسبب أخطاء في المصادقة، فعيّن قيمة حقيقية لـ VLLM_API_KEY تطابق إعداد خادمك، أو أعدّ المزوّد صراحةً ضمن models.providers.vllm.
إذا كان خادم vLLM لا يفرض المصادقة، فستصلح أي قيمة غير فارغة لـ VLLM_API_KEY بوصفها إشارة اشتراك صريح لـ OpenClaw.
يتطلب الاكتشاف التلقائي تعيين VLLM_API_KEY. إذا عرّفت models.providers.vllm، فسيستخدم OpenClaw النماذج التي صرّحت بها فقط، ما لم يتضمن agents.defaults.models القيمة "vllm/*": {}.
إذا طبع نموذج Qwen صيغة أدوات JSON/XML بدلًا من تنفيذ إحدى Skills:
  • ابدأ vLLM باستخدام المحلّل والقالب الصحيحين لذلك النموذج.
  • تأكد من معرّف النموذج الدقيق باستخدام openclaw models list --provider vllm.
  • أضف تجاوزًا مخصصًا لكل نموذج بالقيمة params.extra_body.tool_choice: "required" فقط إذا ظل tool_choice: "auto" يعيد استدعاءات أدوات فارغة أو نصية فقط.

ذو صلة

اختيار النموذج

اختيار المزوّدين ومراجع النماذج وسلوك تجاوز الفشل.

OpenAI

مزوّد OpenAI الأصلي وسلوك المسارات المتوافقة مع OpenAI.

OAuth والمصادقة

تفاصيل المصادقة وقواعد إعادة استخدام بيانات الاعتماد.

استكشاف الأخطاء وإصلاحها

المشكلات الشائعة وكيفية حلها.