Ollama وLiteLLM: كيف تحوّل سكربت Python إلى محادثة LLM متكاملة في سطر الأوامر

في الجزء الثاني من دليل Ollama وLiteLLM يتحول سكربت Python بسيط إلى محادثة LLM في سطر الأوامر. تُضاف حلقة للتخاطب وsystem prompt ومعالجة أساسية للأخطاء، وهي الهيكل الأدنى الذي بدونه لا يبدو المساعد المحلي تطبيقًا حقيقيًا. ولم يعد الأمر طلبًا منفردًا إلى النموذج، بل أصبح قالبًا جاهزًا لواجهة حيّة ولمزيد من التجارب مع الذكاء الاصطناعي المحلي.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
Ollama وLiteLLM: كيف تحوّل سكربت Python إلى محادثة LLM متكاملة في سطر الأوامر
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1حلقة تخاطب تستقبل الرسائل الجديدة إلى أن يُدخل المستخدم أمر الخروج
حقيقة رئيسية #2System prompt يحدد دور النموذج ونبرته وحدود سلوكه
حقيقة رئيسية #3قائمة رسائل تتيح للنموذج رؤية الردود السابقة والحفاظ على السياق

في الجزء الثاني من دليل Python وOllama وLiteLLM ينتقل الكاتب من استدعاء النموذج مرة واحدة إلى محادثة متكاملة في سطر الأوامر. ومن السكربت البسيط يتشكل قالب جاهز لتطبيق ذكاء اصطناعي محلي، يضم حوارًا مستمرًا ودورًا نظاميًا للنموذج وحماية من الأعطال الشائعة.

من السكربت إلى المحادثة

الخطوة الأولى هنا ليست تغيير النموذج، بل تغيير سيناريو العمل. الطلب المنفرد مناسب للتأكد من أن حزمة Python وOllama وLiteLLM تستجيب أصلًا. لكن ما إن تريد طرح سؤال توضيحي أو تعديل الصياغة أو مواصلة الفكرة حتى يصطدم هذا السكربت بسقفه سريعًا.

تعالج محادثة سطر الأوامر هذه المشكلة بأبسط طريقة: لا ينتهي البرنامج بعد إجابة واحدة، بل يبقى في الحوار ويتيح التحدث مع النموذج كما يتحدث المرء مع محاور عادي في الطرفية.

وبالنسبة للمطوّر، هذه نقطة تحوّل مهمة. فبدلًا من «استدعيت الـ API — حصلت على نص» تظهر واجهة تطبيق بسيطة: مدخلات المستخدم وسجل الرسائل وردّ النموذج ومنطق تحكم يحيط بها. ويفيد LiteLLM هنا بوصفه طبقة موحّدة للتعامل مع النماذج، بينما يتولى Ollama التشغيل المحلي. والنتيجة أن مشروعًا تعليميًا صغيرًا يبدأ بالشبه بمنتج حقيقي، يمكن تشغيله واختباره وتعقيده تدريجيًا دون إعادة بناء الأساس بالكامل.

ما الذي يظهر في الكود

الطبقة التالية هي التفاصيل التي تجعل المحادثة برنامجًا خاضعًا للتحكم، لا مجرد حلقة input/output. وما يميّز هذه الأمثلة ليس «الميزات السحرية»، بل العناصر الهندسية الأساسية: من يحدد دور النموذج، وأين يُحفظ السياق، وماذا يحدث إذا تعطّل الطلب. ومن هذه العناصر يتكوّن الانطباع بأن أمامك قالبًا عمليًا لمساعد محلي، لا عرضًا تجريبيًا لخمس دقائق.

  • حلقة تخاطب تستقبل الرسائل الجديدة إلى أن يُدخل المستخدم أمر الخروج
  • System prompt يحدد دور النموذج ونبرته وحدود سلوكه
  • قائمة رسائل تتيح للنموذج رؤية الردود السابقة والحفاظ على السياق
  • تحقق أساسي من المدخلات حتى لا تُرسل طلبات فارغة
  • معالجة للاستثناءات حتى لا ينهار البرنامج عند أول عطل

كل نقطة من هذه النقاط تبدو بسيطة، لكنها معًا تغيّر جودة التفاعل. فـSystem prompt ليس لإضفاء «شخصية» على الروبوت فحسب، بل يُستخدم لتثبيت قواعد الإجابة وصيغتها ولغتها وقيودها. أما سجل الرسائل فيتيح محادثة مترابطة بدلًا من إعادة شرح المهمة في كل دور. وتوفّر معالجة الأخطاء وقتًا أثناء تصحيح الأعطال: فإذا تجمّد النموذج المحلي أو لم يكن Ollama قيد التشغيل أو أعاد LiteLLM استثناءً، فلا تضيع الجلسة كلها.

الخطوات الأولى نحو تطبيق

وتبرز فكرة مستقلة عن الخطوات الأولى نحو تطبيق ذكاء اصطناعي «حي». تبدو واجهة سطر الأوامر متواضعة، لكنها أسهل وسيلة لاختبار سلوك الروبوت في حوار حقيقي، حيث يصوغ المستخدم أفكاره بصورة غير مثالية ويطرح أسئلة توضيحية ويغيّر السياق باستمرار. وتظهر نقاط الضعف هنا سريعًا: system prompt عام أكثر من اللازم، وصيغة إخراج غير مريحة، وغياب أوامر الخروج أو إعادة التشغيل، وأخطاء غير واضحة عند تحميل النموذج.

ويسهل توسيع هذا الهيكل لاحقًا دون تعقيد معماري زائد. فيمكن إضافة بث الرموز (stream) وأوامر مستقلة مثل /clear لمسح السجل، والتبديل بين النماذج، وتسجيل الحوارات، أو ربط الأدوات. لكن قيمة الخطوة الحالية في أمر آخر: يبيّن الكاتب أن الواجهة المفيدة لا تبدأ من GUI ولا من تطبيق ويب، بل من حلقة تخاطب موثوقة في الطرفية. وإذا بُنيت هذه الطبقة بعناية، يصبح النمو لاحقًا أيسر، سواء نحو منتج أو نحو مزيد من التجارب.

ماذا يعني ذلك

بالنسبة لمن يبنون أدوات ذكاء اصطناعي محلية بلغة Python، هذه المرحلة لا غنى عنها. فحزمة Ollama وLiteLLM لا تصبح مثيرة للاهتمام عند أول إجابة ناجحة، بل حين تظهر حول النموذج حلقة تخاطب سليمة. ومحادثة سطر الأوامر هي الصورة الدنيا لهذه الحلقة: بسيطة بما يكفي للبدء، ومفيدة بما يكفي لبناء الطبقة التالية من الوظائف عليها.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول من السكربت إلى المحادثة؟

الخطوة الأولى هنا ليست تغيير النموذج، بل تغيير سيناريو العمل. الطلب المنفرد مناسب للتأكد من أن حزمة Python وOllama وLiteLLM تستجيب أصلًا. لكن ما إن تريد طرح سؤال توضيحي أو تعديل الصياغة أو مواصلة الفكرة حتى يصطدم هذا السكربت بسقفه سريعًا. تعالج محادثة سطر الأوامر هذه المشكلة بأبسط طريقة: لا ينتهي البرنامج بعد إجابة واحدة، بل يبقى في الحوار ويتيح التحدث مع النموذج كما يتحدث المرء مع محاور عادي في الطرفية. وبالنسبة للمطوّر، هذه نقطة تحوّل مهمة. فبدلًا من «استدعيت الـ API — حصلت على نص» تظهر واجهة تطبيق بسيطة: مدخلات المستخدم وسجل الرسائل وردّ النموذج ومنطق تحكم يحيط بها. ويفي

ما أبرز التفاصيل حول ما الذي يظهر في الكود؟

الطبقة التالية هي التفاصيل التي تجعل المحادثة برنامجًا خاضعًا للتحكم، لا مجرد حلقة input/output. وما يميّز هذه الأمثلة ليس «الميزات السحرية»، بل العناصر الهندسية الأساسية: من يحدد دور النموذج، وأين يُحفظ السياق، وماذا يحدث إذا تعطّل الطلب. ومن هذه العناصر يتكوّن الانطباع بأن أمامك قالبًا عمليًا لمساعد محلي، لا عرضًا تجريبيًا لخمس دقائق. حلقة تخاطب تستقبل الرسائل الجديدة إلى أن يُدخل المستخدم أمر الخروج System prompt يحدد دور النموذج ونبرته وحدود سلوكه قائمة رسائل تتيح للنموذج رؤية الردود السابقة والحفاظ على السياق تحقق أساسي من المدخلات حتى لا تُرسل طلبات فارغة معالجة للاست

ما أبرز التفاصيل حول الخطوات الأولى نحو تطبيق؟

وتبرز فكرة مستقلة عن الخطوات الأولى نحو تطبيق ذكاء اصطناعي «حي». تبدو واجهة سطر الأوامر متواضعة، لكنها أسهل وسيلة لاختبار سلوك الروبوت في حوار حقيقي، حيث يصوغ المستخدم أفكاره بصورة غير مثالية ويطرح أسئلة توضيحية ويغيّر السياق باستمرار. وتظهر نقاط الضعف هنا سريعًا: system prompt عام أكثر من اللازم، وصيغة إخراج غير مريحة، وغياب أوامر الخروج أو إعادة التشغيل، وأخطاء غير واضحة عند تحميل النموذج. ويسهل توسيع هذا الهيكل لاحقًا دون تعقيد معماري زائد. فيمكن إضافة بث الرموز (stream) وأوامر مستقلة مثل /clear لمسح السجل، والتبديل بين النماذج، وتسجيل الحوارات، أو ربط الأدوات. لكن قيمة

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
ما رأيك؟
جارٍ تحميل التعليقات…