...

/

تعزيز قدرات الوكيل باستخدام الذاكرة في LlamaIndex

تعزيز قدرات الوكيل باستخدام الذاكرة في LlamaIndex

تعرف على كيفية تمكين وكلاء الذكاء الاصطناعي بالذاكرة لتحسين الاحتفاظ بالسياق والتفاعلات الأكثر ذكاءً.

سنغطي ما يلي...

تخيل أنك تتحدث مع مساعد ذكاء اصطناعي لا يستجيب بدقة في اللحظة فحسب، بل يتذكر أيضًا اسمك ووظيفتك وتفضيلاتك في المحادثات المستقبلية. في هذا الدرس، بناء ذلك تحديدًا: وكيل مدرك للذاكرة باستخدام LlamaIndex.

ولتحقيق ذلك، يتعين علينا دمج أنظمة الذاكرة في وكيل الذكاء الاصطناعي الخاص بنا، مما يمكّنه من تخزين واسترجاع المعلومات عبر التفاعلات.

Press + to interact
LlamaIndex agent enhanced with memory: chat history is stored in a memory buffer and persisted in vector storage to enable contextual retrieval
LlamaIndex agent enhanced with memory: chat history is stored in a memory buffer and persisted in vector storage to enable contextual retrieval

أنواع الذاكرة في LlamaIndex

يوفر LlamaIndex العديد من وحدات الذاكرة بناء وكلاء أذكياء:

  • الذاكرة الأساسية ( ChatMemoryBuffer ): هي ذاكرة قصيرة المدى تحتوي على سياق المحادثة الحالية.

  • الذاكرة الثانوية ( VectorMemory ): هي ذاكرة طويلة المدى تحتفظ بالمعلومات المهمة لما بعد محادثة واحدة.

  • الذاكرة القابلة للتكوين ( SimpleComposableMemory ): تجمع بين مصادر الذاكرة الأساسية والثانوية.

سنوضح كيفية إعداد كل منها، خطوة بخطوة:

أولاً، نقوم باستيراد جميع الوحدات التي سنستخدمها طوال الدرس.

from llama_index.llms.groq import Groq
from llama_index.embeddings.ollama import OllamaEmbedding
from llama_index.core.memory import VectorMemory, SimpleComposableMemory, ChatMemoryBuffer
from llama_index.core.llms import ChatMessage
from llama_index.core.tools import FunctionTool
Import required modules

ستساعدنا هذه الوحدات في الاتصال بنموذج اللغة، وتضمين رسائل المستخدم كمتجهات، وتحديد آليات الذاكرة، بناء أدوات تفاعلية يمكن لوكيلنا استخدامها.

  • Groq (LLM): يسمح هذا الاستيراد للوكيل بالاتصال بنموذج لغة مستضاف بواسطة Groq، مثل llama3-70b-8192 ، وهو المسؤول عن إنشاء الاستجابات.

  • OllamaEmbedding : تتصل هذه الوحدة بنموذج محلي يعمل عبر Ollama ، مثل nomic-embed-text . توفر هذه الوحدة تحويلًا سريعًا وفعالًا للنصوص إلى تضمينات متجهية، وهو أمر بالغ الأهمية لتمكين البحث الدلالي. ونظرًا لاعتمادنا على البحث الدلالي لاسترجاع السياق ذي الصلة من الذاكرة، فإن نموذج التضمين يلعب دورًا مفتاح في التفاعلات التي تعتمد على الذاكرة. بينما يدعم LlamaIndex نماذج التضمين من مختلف المزودين، فإننا نستخدم Ollama هنا لأنه خفيف الوزن، ويعمل محليًا، ومجاني الاستخدام.

  • فئات الذاكرة ( VectorMemory ، ChatMemoryBuffer ، SimpleComposableMemory ): توفر هذه الفئات أنواعًا مختلفة من وظائف الذاكرة. تُدير VectorMemory التخزين طويل الأمد باستخدام التضمينات، بينما تحتفظ ChatMemoryBuffer بسجلّ المحادثات الأخيرة، بينما تجمع SimpleComposableMemory بينهما لإنشاء نظام ذاكرة موحّد.

  • ChatMessage : تحدد هذه الفئة كيفية هيكلة رسائل الدردشة الفردية، مما يتيح التخزين والاسترجاع المتسقين داخل نظام ذاكرة الوكيل.

  • FunctionTool : يسمح هذا المكون بتغليف وظائف Python القياسية كأدوات قابلة للاتصال، والتي يمكن للوكيل استخدامها أثناء المحادثات لأداء مهام محددة، مثل استرداد الذكريات المخزنة.

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

llm = Groq(model="llama3-70b-8192", api_key="{{GROQ_API_KEY}}")
embedding_model = OllamaEmbedding(model_name="nomic-embed-text")
Initialize the LLM and embedding model
  • llm هو اتصالنا بنموذج LLaMA 3 المستضاف على Groq، والذي يولد استجابات للوكيل.

  • يسمح لنا embedding_model بتحويل إدخال المستخدم إلى متجهات يمكن تخزينها والبحث عنها في الذاكرة طويلة المدى.

بعد إعداد نموذج اللغة ونموذج التضمين، يمكننا الآن تحويل انتباهنا إلى الذاكرة - وهي جزء أساسي من بناء وكيل ذكي واعي ...