تحسين قدرات الوكيل باستخدام الذاكرة في LlamaIndex
تعرف على كيفية تمكين وكلاء الذكاء الاصطناعي بالذاكرة لتحسين الاحتفاظ بالسياق والتفاعلات الأكثر ذكاءً.
تخيل أنك تتحدث مع مساعد ذكاء اصطناعي لا يستجيب بدقة في اللحظة فحسب، بل يتذكر أيضًا اسمك ووظيفتك وتفضيلاتك في المحادثات المستقبلية. في هذا الدرس، بناء ذلك تحديدًا: وكيل مدرك للذاكرة باستخدام LlamaIndex.
ولتحقيق ذلك، نحتاج إلى دمج أنظمة الذاكرة في وكيل الذكاء الاصطناعي الخاص بنا، مما يمكّنه من تخزين واسترجاع المعلومات عبر التفاعلات.
أنواع الذاكرة في LlamaIndex
يوفر LlamaIndex العديد من وحدات الذاكرة بناء وكلاء أذكياء:
الذاكرة الأولية (
ChatMemoryBuffer): وهي ذاكرة قصيرة المدى تحتوي على سياق المحادثة الحالية.الذاكرة الثانوية (
VectorMemory): وهي ذاكرة طويلة المدى تحتفظ بالمعلومات المهمة لما بعد محادثة واحدة.الذاكرة القابلة للتكوين (
SimpleComposableMemory): يجمع بين مصادر الذاكرة الأولية والثانوية.
سنوضح كيفية إعداد كل منها، خطوة بخطوة:
أولاً، نقوم باستيراد جميع الوحدات التي سنستخدمها طوال الدرس.
from llama_index.llms.groq import Groqfrom llama_index.embeddings.ollama import OllamaEmbeddingfrom llama_index.core.memory import VectorMemory, SimpleComposableMemory, ChatMemoryBufferfrom llama_index.core.llms import ChatMessagefrom llama_index.core.tools import FunctionTool
ستساعدنا هذه الوحدات في الاتصال بنموذج اللغة، وتضمين رسائل المستخدم كمتجهات، وتحديد آليات الذاكرة، بناء أدوات تفاعلية يمكن لوكيلنا استخدامها.
Groq(LLM): يسمح هذا الاستيراد للوكيل بالاتصال بنموذج لغة مستضاف بواسطة Groq، مثلllama-3.3-70b-versatile، وهو المسؤول عن توليد الاستجابات.OllamaEmbedding: تتصل هذه الوحدة بنموذج محلي يعمل عبر Ollama ، مثلnomic-embed-textيوفر هذا النموذج تحويلًا سريعًا وفعالًا للنصوص إلى تضمينات متجهية، وهو أمر بالغ الأهمية لتمكين البحث الدلالي. ونظرًا لاعتمادنا على البحث الدلالي لاسترجاع السياق ذي الصلة من الذاكرة، فإن نموذج التضمين يلعب دورًا مفتاح في التفاعلات التي تعتمد على الذاكرة. وبينما يدعم LlamaIndex نماذج التضمين من مختلف المزودين، فإننا نستخدم Ollama هنا لأنه خفيف الوزن، ويعمل محليًا، ومجاني الاستخدام.فئات الذاكرة (
VectorMemory،ChatMemoryBuffer،SimpleComposableMemory): توفر هذه الفئات أنواعًا مختلفة من وظائف الذاكرة.VectorMemoryيدير التخزين طويل الأمد باستخدام التضمينات،ChatMemoryBufferيحتفظ بسجل المحادثة الأخير، وSimpleComposableMemoryيجمع كليهما لإنشاء نظام ذاكرة موحد.ChatMessage: تحدد هذه الفئة كيفية هيكلة رسائل الدردشة الفردية، مما يتيح التخزين والاسترجاع المتسقين داخل نظام ذاكرة الوكيل.FunctionTool: يسمح هذا المكون بتغليف وظائف Python القياسية كأدوات قابلة للاتصال، والتي يمكن للوكيل استخدامها أثناء المحادثات لأداء مهام محددة، مثل استرداد الذكريات المخزنة.
قبل أن نتمكن من تزويد عميلنا بالذاكرة، علينا ربطها بنموذج لغة ونموذج تضمين. يتولى نموذج اللغة فهم النص وتوليده، بينما يحوّل نموذج التضمين مُدخلات المستخدم إلى تمثيلات متجهية تسمح باسترجاعها لاحقًا بناءً على التشابه.
llm = Groq(model="llama-3.3-70b-versatile", api_key="{{GROQ_API_KEY}}")embedding_model = OllamaEmbedding(model_name="nomic-embed-text")
llmهو اتصالنا بنموذج LLaMA 3 المستضاف على Groq، والذي يولد استجابات للوكيل.embedding_modelيتيح لنا تحويل إدخال المستخدم إلى متجهات يمكن تخزينها والبحث عنها في الذاكرة طويلة المدى.
بعد إعداد نموذج اللغة ونموذج التضمين، يمكننا الآن تحويل انتباهنا إلى الذاكرة - وهي جزء أساسي من بناء وكيل ذكي واعي للسياق. ...