- text-generation-webui (يُشار إليها على نطاق واسع باسم oobabooga تمامًا تيمنًا باسم مؤلفها على موقع GitHub) هي واجهة مفتوحة المصدر مجانية قائمة على المتصفح لتشغيل نماذج اللغة الكبيرة (LLMs) محليًّا على أجهزتك الخاصة.
- قم بالتثبيت عبر نصوص برمجية بنقرة واحدة —
start_windows.bat,start_linux.shأوstart_macos.sh— دون الحاجة إلى إعداد يدوي لبيئة بايثون. - تدعم عدة واجهات تنفيذ خلفية (backends): llama.cpp للملفات بصيغة GGUF، وExLlamaV2 لملفات EXL2/GPTQ على وحدات معالجة الرسومات من شركة NVIDIA، وTransformers لنماذج Hugging Face.
- تشمل امتدادًا متوافقًا مع واجهة برمجة تطبيقات OpenAI (
--extensions openai) بحيث يمكن لتطبيقات أخرى الاتصال بنموذجك المحلي دون الحاجة إلى إجراء أي تغييرات في الكود.
text-generation-webui هي واجهة ويب مفتوحة المصدر ومُستضافة ذاتيًّا لتشغيل نماذج اللغة الكبيرة محليًّا. وتُدار على موقع GitHub باسم oobabooga/text-generation-webui، وتعمل داخل متصفحك على العنوان http://localhost:7860، وتدعم مجموعة واسعة من صيغ النماذج عبر واجهات تنفيذ خلفية قابلة للتبديل، كما توفر واجهة برمجة تطبيقات REST متوافقة مع OpenAI. وهي أكثر الواجهات الأمامية اكتمالًا من حيث الميزات، لكنها تتطلب جهدًا أكبر في عملية الإعداد مقارنةً بالتطبيقات سطح المكتب مثل نموذج لغوي محلي (LLM) واجهة أمامية LM Studio.
ما هي text-generation-webui (ولماذا يطلق عليها الناس اسم Oobabooga)
اسم المستخدم الخاص بالمشروع على موقع GitHub هو oobabooga، والذي أصبح المصطلح الشائع في المجتمع للإشارة إلى الأداة نفسها. وكلا الاسمين يشيران إلى نفس المشروع الموجود على github.com/oobabooga/text-generation-webui.
وقد بُنيت الواجهة باستخدام إطار Gradio، وتعمل بالكامل على جهازك المحلي — فلا تخرج أي بيانات من نظامك. وبجانب وضع الدردشة الأساسي، فإنها تدعم ما يلي:
- ثلاثة أوضاع إدخال: الدردشة (التوجيه)، والدردشة (التمثيل الدوراني مع بطاقات الشخصيات)، ودفتر الملاحظات (إكمال نصي خام)
- تحميل مُعدِّلات LoRA لدمج أوزان التخصيص الدقيق فوق نموذج أساسي
- نظام امتدادات يضم إضافات من المجتمع لأداء مهام مثل التلخيص، وتحويل النص إلى كلام، وتسمية الصور، وغيرها الكثير
- نقطة نهاية لواجهة برمجة تطبيقات متوافقة مع OpenAI لربط العملاء التابعين لجهات خارجية وبرامج الأتمتة
قبل اختيار نموذج ما، استخدم حاسبة الذاكرة VRAM لتأكيد إمكانية استيعاب وحدة معالجة الرسومات (GPU) لديك لهذا النموذج — فتتفاوت المتطلبات اختلافًا كبيرًا حسب حجم النموذج ومستوى التكميم (quantization).
تثبيت text-generation-webui
الطريقة الموصى بها للتثبيت على جميع المنصات هي استخدام البرنامج النصي بتثبيت بنقرة واحدة. فهو ينشئ بيئة Conda معزولة ويقوم بتثبيت جميع تبعيات بايثون تلقائيًّا. ولا يُنصح بتثبيته في بيئة بايثون النظام إلا إذا كانت لديك أسباب محددة لذلك.
ويندوز
- استنسخ المستودع أو نزّل ملف ZIP لإصدار معين من صفحة المشروع على GitHub:
git clone https://github.com/oobabooga/text-generation-webui - انقر نقرًا مزدوجًا على
start_windows.batداخل المجلد الذي تم استنساخه. - ويكتشف البرنامج النصي نوع وحدة معالجة الرسومات الخاصة بك (NVIDIA أو AMD أو CPU فقط) ويقوم بتثبيت التبعيات المناسبة لها — اختر الخيار الملائم عند المطالبة بذلك.
- وبعد اكتمال الإعداد، يتم تشغيل الخادم تلقائيًّا. افتح
http://localhost:7860في متصفحك.
وفي التشغيلات اللاحقة، انقر مرتين على start_windows.bat مرة أخرى. تكون بيئة Conda قد أُنشئت مسبقًا؛ وبالتالي لا يستغرق بدء التشغيل سوى بضع ثوانٍ.
لينكس
- استنسخ المستودع واذهب إلى الدليل:
git clone https://github.com/oobabooga/text-generation-webui cd text-generation-webui - اجعل البرنامج النصي قابلاً للتنفيذ ثم شغّله:
chmod +x start_linux.sh ./start_linux.sh - اختر نوع وحدة معالجة الرسومات عند المطالبة: NVIDIA أو AMD أو CPU فقط أو Apple Silicon (غير متاح على Linux، لكن المطالبة تظهر رغم ذلك).
- افتح واجهة المستخدم على العنوان
http://localhost:7860بمجرد أن يبدأ الخادم بالعمل.
macOS
- استنسخ المستودع وشغّل البرنامج النصي:
git clone https://github.com/oobabooga/text-generation-webui cd text-generation-webui ./start_macos.sh - اختر الخيار D (Apple Silicon / Metal) أو C (CPU فقط) عند المطالبة.
- تستخدم واجهة التنفيذ الخلفية llama.cpp تقنية Metal لتحقيق تسريع GPU على رقائق سلسلة M — ولا يتطلب الأمر وجود CUDA.
يقتصر مستخدمو نظام macOS على وحدتي تحميل llama.cpp وTransformers فقط. أما وحدة ExLlamaV2 فهي تتطلب CUDA ولا تعمل على رقائق Apple Silicon.
وحدات تحميل النماذج: أي منها يجب أن تستخدم؟
تُفصِّل text-generation-webui محرك الاستنتاج عن الواجهة. ويمكنك تحديد وحدة تحميل لكل نموذج من علامة التبويب النموذج .
| وحدة التحميل | الصيغة | الأجهزة | متى تُستخدم |
|---|---|---|---|
| llama.cpp | GGUF | نفيديا، إيه إم دي، شرائح أبل، وحدة معالجة مركزية | الوضع الافتراضي لملفات GGUF؛ الأكثر تنقلًا عبر المنصات |
| إكس-لاماV2 | إكس-إل2، جي بي تي كيو | خاصة بـCUDA من نفيديا فقط | أعلى أداء لإنتاج النصوص على وحدات معالجة الرسومات من نفيديا؛ يُفضَّل استخدامها بدلًا من أوتو جي بي تي كيو للنماذج الجديدة |
| المحولات | هاغينغ فيس (fp16، bf16، int8، int4) | نفيديا، وحدة معالجة مركزية | النماذج الأصلية من هاغينغ فيس؛ أبطأ في الأداء لكنها توفر أقصى توافق ممكن |
| أوتو إيه دبليو كيو | AWQ | CUDA من نفيديا | نماذج مُكمَّنة باستخدام تقنية AWQ |
| أوتو جي بي تي كيو | GPTQ | CUDA من نفيديا | نماذج جي بي تي كيو القديمة؛ إكس-لاماV2 أسرع في تنفيذ نفس التنسيق |
القيمة الافتراضية العملية: إذا قمت بتنزيل ملف .gguf (وهو التنسيق الأكثر شيوعًا في صفحات نماذج هاغينغ فيس)، فاستخدم llama.cpp. أما إذا كانت لديك وحدة معالجة رسومات من نفيديا وتريد أقصى سرعة ممكنة في توليد النصوص، فابحث عن نسخة مُكمَّنة بصيغة EXL2 من نفس النموذج واستخدم إكس-لاماV2.
لمعرفة التفاصيل الكاملة حول النماذج التي يمكن تشغيلها فعليًّا على كل نوع من وحدات معالجة الرسومات، راجع متطلبات ذاكرة VRAM للنماذج اللغوية الكبيرة الرئيسية.
تحميل نموذج بصيغة GGUF خطوة بخطوة
- انسخ الملف إلى المجلد
text-generation-webui/models/. وتُوضع ملفات GGUF ذات الملف الواحد مباشرةً (مثل:mistral-7b-instruct.Q4_K_M.gguf) في هذا المجلد مباشرةً. أما الملفات المقسمة إلى أجزاء متعددة فيجب وضعها داخل مجلد فرعي باسم خاص. - افتح علامة التبويب "النموذج" في المكتبة الرسمية إلى
http://localhost:7860. - واختر ملفك من قائمة النماذج المنسدلة (وانقر على أيقونة التحديث إذا لم يظهر الملف).
- عيّن المتغير وحدة التحميل في عميل OpenAI الخاص بك إلى
llama.cpp. - عيّن المتغير n-gpu-layers للتحكم في تحميل الطبقات على وحدة معالجة الرسومات. أدخل رقمًا كبيرًا (مثل:
999) لتحميل أكبر عدد ممكن من الطبقات في ذاكرة VRAM؛ وأدخل0للاستنتاج باستخدام وحدة المعالجة المركزية فقط. - انقر اضغط على زر "تحميل". ويظهر رسالة تأكيد في مربع الحالة بمجرد أن يصبح النموذج جاهزًا.
انتقل إلى علامة التبويب الدردشة لبدء محادثة، أو إلى علامة التبويب افتراضي إكمال الموجهات قالب التعليمات الموجودة في علامة التبويب "المعلمات".
امتداد واجهة برمجة التطبيقات المتوافقة مع OpenAI
الامتداد المدمج openai يعرض نقاط نهاية واجهة برمجة التطبيقات (REST) التي تحاكي تنسيق واجهة برمجة تطبيقات OpenAI الخاصة بتوليد الرسائل والنص. ويمكن لأي عميل يدعم تعيين عنوان URL أساسي مخصص — مثل LangChain أو Open WebUI أو Continue.dev أو حتى نص برمجي عادي بلغة curl بايثون
فعّله عبر تمرير علامة عند بدء التشغيل:
# لينكس / ماك أو إس
./start_linux.sh --extensions openai
# أو شغّل server.py مباشرةً داخل بيئة Conda
python server.py --extensions openaiوبال alternatively، يمكنك تفعيله من علامة التبويب الجلسة في واجهة المستخدم، ثم انقر على تطبيق العلامات / إعادة التشغيل.
وبشكل افتراضي، تستمع واجهة برمجة التطبيقات هذه على المنفذ 5000، وهو منفصل عن واجهة Gradio التي تعمل على المنفذ 7860. وجّه عميلك إلى العنوان التالي:
base_url = "http://localhost:5000/v1"
api_key = "anything" # مطلوبة من معظم العملاء لكنها غير مُحقَّقة محليًّاتشمل نقاط النهاية المدعومة /v1/chat/completions, /v1/completions، و /v1/models. ويمكن تغيير المنفذ عبر علامة بدء التشغيل --api-port .
مقارنة بين text-generation-webui وLM Studio وJan
تقوم جميع الأدوات الثلاث بتشغيل النماذج محليًّا دون الاعتماد على الخدمات السحابية. وهي موجَّهة لمجموعات مستخدمين وحالات استخدام مختلفة.
| text-generation-webui | LM Studio | يناير | |
|---|---|---|---|
| الواجهة | المتصفح (Gradio) | سطح المكتب الأصلي | سطح المكتب الأصلي |
| درجة تعقيد الإعداد | متوسط (برنامج نصي بنقرة واحدة) | منخفض (مُثبِّت واجهة رسومية) | منخفض (مُثبِّت واجهة رسومية) |
| صيغ النماذج | GGUF، EXL2، GPTQ، AWQ، HF fp16 | GGUF بشكل رئيسي | GGUF بشكل رئيسي |
| مستعرض نماذج مدمج | لا | نعم | نعم |
| واجهة برمجة تطبيقات متوافقة مع OpenAI | نعم (امتداد) | نعم (مدمج) | نعم (مدمج) |
| نظام الامتدادات/الملحقات | نعم | محدود | محدود |
| رقاقات أبل Silicon (Metal) | نعم (llama.cpp) | نعم | نعم |
| الأفضل لـ | المستخدمون المتقدّمون، والأتمتة، والبحث العلمي | المبتدئون، والاستخدام اليومي للدردشة | المستخدمون الذين يركّزون على المصادر المفتوحة |
اختر text-generation-webui عندما تحتاج إلى عدة واجهات تحميل للنماذج، أو أداءً متفوقًا لـ EXL2 على بطاقات NVIDIA الرسومية، أو دعم تحميل نماذج LoRA، أو نظام الامتدادات الغني، أو الوصول البرمجي عبر واجهة برمجة التطبيقات (API) لأتمتة سير العمل وتطويره.
اختر LM Studio أو Jan عندما ترغب في مُثبِّتٍ جاهزٍ ومُحسَّن، مع خاصية البحث المدمجة عن النماذج وتنزيلها بنقرة واحدة، وبأقل قدر ممكن من التهيئة. راجع الدليل الكامل لـ LM Studio للاطّلاع على شرحٍ تفصيليٍّ لهذه الخيارات.
إذا كنت تتساءل عما إذا كانت الاستنتاجات المحلية تستحق التكلفة المادية للأجهزة أم لا، فإن حاسبة نقطة التعادل بين الاستضافة المحلية وواجهة برمجة التطبيقات (API) يمكن أن يُقيّم بدقة التوازن بين هذه التكلفة وبين دفع رسوم استخدام واجهة برمجة التطبيقات (API) وفقًا لحجم استخدامك.
الأسئلة الشائعة
لماذا يستغرق المُثبِّت بنقرة واحدة وقتًا طويلاً في المرة الأولى؟
لأنه يقوم بتنزيل Miniconda وبناء بيئة بايثون معزولة تحتوي على مكتبة PyTorch وجميع مكتبات تحميل النماذج من الصفر. وعلى اتصال سريع، يستغرق ذلك عادةً ما بين ٥ و١٥ دقيقة. أما التشغيلات اللاحقة فتتجاوز هذه الخطوة وتبدأ خلال بضع ثوانٍ فقط.
هل يمكنني تشغيل text-generation-webui بدون وحدة معالجة رسومية (GPU)؟
نعم. اختر خيار «CPU-only» أثناء التثبيت، ثم عيّن n-gpu-layers في عميل OpenAI الخاص بك إلى 0 عند تحميل نموذج بصيغة GGUF. وقد يولّد نموذج بحجم ٧ مليار معلمة (7B) ما بين ٢ و٥ رموز في الثانية على وحدة معالجة مركزية حديثة لسطح المكتب — وهي سرعة كافية للاختبار، لكنها بطيئة جدًّا للدردشة العادية. كما أن التكمينات الأصغر (مثل Q4 وما دونها) تحسّن الأداء. يمكنك الاطّلاع على أفضل وحدات معالجة الرسوميات لتشغيل نماذج اللغة الكبيرة محليًّا إذا كنت تفكر في ترقية أجهزتك.
كيف أُحدِّث text-generation-webui؟
تشغيل git pull داخل دليل المستودع لاسترجاع أحدث الشيفرة، ثم أعد تشغيل نص بدء التشغيل. ويكتشف النص تلقائيًّا أي تغيّرات في البيئة ويحدّث التبعيات تلقائيًّا. كما يمكنك تنفيذ الأمر تثبيت نقطة تثبيت -r requirements.txt يدويًّا داخل بيئة Conda النشطة إذا فضّلت تحديثًا أكثر تحديدًا.
ما الفرق بين GGUF وEXL2؟
كلا التنسيقين هما تنسيقان مكمّنان يقلّلان من حجم ملف النموذج ومتطلبات الذاكرة الرسومية (VRAM). ويعمل GGUF (عبر llama.cpp) على بطاقات NVIDIA وAMD ورقاقات أبل Silicon، وهو الخيار الأكثر تنقلًا ويتوفر عليه أكبر عدد من النماذج. أما EXL2 (عبر ExLlamaV2) فهو مخصص فقط لبطاقات NVIDIA، لكنه عادةً ما يولّد الرموز أسرع عند جودة مكافئة. فإذا كانت لديك بطاقة رسومية من NVIDIA وكانت السرعة هي أولويتك القصوى، فإن استخدام EXL2 يستحق المحاولة.
أين يتم حفظ سجلات المحادثات؟
يتم تخزين السجلات ضمن المجلد text-generation-webui/logs/. ويُحفظ كل محادثة كملف JSON. كما يمكنك تصدير السجلات مباشرةً من واجهة علامة التبويب «Chat» باستخدام زر التنزيل الموجود أسفل نافذة المحادثة.
هل يمكن لعدة مستخدمين الاتصال بمثبّت واحد؟
الـ --listen يجعل الخادم متاحًا عبر شبكتك المحلية بدلًا من أن يكون محصورًا على localhost فقط. ومع ذلك، لم يُصمَّم text-generation-webui للاستخدام الإنتاجي متعدد المستخدمين — إذ لا يحتوي على آلية مصادقة مدمجة، وواجهة Gradio الخاصة به تعمل ضمن جلسة واحدة فقط. أما امتداد واجهة برمجة تطبيقات OpenAI فيتعامل مع طلبات الواجهة البرمجية المتزامنة بكفاءة أعلى من واجهة الويب في السيناريوهات التي تتضمّن عدة عملاء، لكنك يجب أن تضيف وكيل عكسية (reverse proxy) مزوّدًا بميزة المصادقة أمامه إذا كنت تنوي إتاحته خارج نطاق localhost.

