بناء نظام دردشة متطور قائم على Ollama وLangChain مع معالجة الرسوميات

يوضح هذا البرنامج التعليمي كيفية بناء نظام محلي متكامل لمعالجة اللغات الكبيرة (LLM) يدعم معالج الرسوميات (GPU) ، و يجمع بين Ollama و LangChain. سنتناول في هذا البرنامج التعليمي خطوات بناء هذا النظام بدءاً من تثبيت المكتبات اللازمة وحتى إنشاء واجهة مستخدم سهلة الاستخدام.

1. تثبيت المكتبات وتهيئة Ollama

سنبدأ بتثبيت جميع المكتبات الضرورية لتشغيل النظام، بما في ذلك LangChain، Sentence Transformers، ChromaDB، وغيرها من المكتبات المساعدة. يتم ذلك باستخدام أمر pip في بيئة العمل الخاصة بك.

pip install langchain langchain-community langchain-core chromadb sentence-transformers faiss-cpu pypdf python-docx requests psutil pyngrok gradio

بعد تثبيت المكتبات، نقوم بتهيئة خادم Ollama، وهو نظام إدارة نماذج اللغات الكبيرة. نحدد إعدادات تشغيل Ollama، بما في ذلك اسم النموذج، ونقطة النهاية API، ومعلمات توليد النص مثل درجة الحرارة، والحد الأقصى لعدد الرموز، وحجم سياق النموذج. يمكننا التحكم في الأداء عن طريق ضبط عدد الطبقات التي تُحمل على وحدة معالجة الرسوميات (GPU)، وحجم الدُفعة، وعدد الخيوط المتوازية.

@dataclass
class OllamaConfig:
    model_name: str = "llama2"
    base_url: str = "http://localhost:11434"
    max_tokens: int = 2048
    temperature: float = 0.7
    gpu_layers: int = -1
    context_window: int = 4096
    batch_size: int = 512
    threads: int = 4

نقوم بإنشاء مُدير Ollama (OllamaManager) للتحكم في تثبيت، وتشغيل، ومراقبة خادم Ollama. ويتضمن ذلك التحقق من حالة الخادم، وسحب النماذج حسب الطلب، وإدارتها، وإيقاف الخادم بشكل صحيح.

2. إنشاء نظام توليد الإجابات المعزز بالاسترجاع (RAG)

سنستخدم تقنية توليد الإجابات المعززة بالاسترجاع (RAG) لتحسين دقة إجابات النظام. تتضمن هذه التقنية استخراج المعلومات من وثائق PDF أو نصوص، وتقسيمها إلى أجزاء أصغر، ثم دمجها باستخدام Sentence Transformers. يتم تخزين هذه الأجزاء في متجر متجهات (FAISS أو Chroma) للبحث السريع والفعال.

class RAGSystem:
    # ... (code for RAG system implementation) ...

3. إدارة ذاكرة الدردشة متعددة الجلسات

يُمكن لهذا النظام إدارة عدة جلسات دردشة بشكل متزامن، مع الاحتفاظ بسجل محادثات كل جلسة. نستخدم ConversationManager لإدارة ذاكرة الدردشة، مما يسمح لنا بالاحتفاظ بسجل محادثات مُفصّل أو ملخص لها، بناءً على نوع الذاكرة المختار.

4. إنشاء وكيل ذكي (Agent)

سنستخدم وكيلًا ذكيًا (Agent) من LangChain للتحكم في سير العمل. يُمكننا تجهيز الوكيل بأدوات مثل البحث على الإنترنت (DuckDuckGo) واستعلامات RAG. يُقرر الوكيل ذاته متى يستخدم كل أداة بناءً على سياق المحادثة.

class OllamaLangChainSystem:
    # ... (code for system integration) ...

5. إنشاء واجهة مستخدم (Gradio)

لتسهيل استخدام النظام، سننشئ واجهة مستخدم بسيطة باستخدام مكتبة Gradio. تتيح هذه الواجهة إمكانية الدردشة، وتصفح النماذج، وتحميل الوثائق إلى نظام RAG، ومراقبة أداء النظام.

6. مراقبة الأداء

نقوم بمراقبة استخدام موارد النظام مثل وحدة المعالجة المركزية (CPU) والذاكرة (RAM) ووقت الاستدلال لتقييم كفاءة النظام وتحديد أي قيود قد تواجهه.

class PerformanceMonitor:
    # ... (code for performance monitoring) ...

7. الاستنتاج

يوفر هذا النظام منصة مرنة وفعالة لاختبار نماذج اللغات الكبيرة محلياً. يمكن تعديل النظام بسهولة لإضافة أدوات جديدة، أو ضبط خيارات الاستدلال، أو تعديل أنبوب RAG لاستيعاب كميات أكبر من البيانات أو نماذج دمج مختلفة. نأمل أن يوفر هذا البرنامج التعليمي أساسًا متينًا لبناء أنظمة دردشة متقدمة تعتمد على Ollama وLangChain.

(ملاحظة: تم حذف بعض أجزاء الكود الطويلة من أجل الوضوح والإيجاز، ولكن الشرح يغطي جميع الجوانب الأساسية للنظام.)

المصدر: MarkTechPost