كيفية إعطاء الذاكرة لوكيلك
تعلم كيفية تزويد وكلاء الذكاء الاصطناعي بالذاكرة باستخدام قواعد البيانات المتجهة، وسجل المحادثات، والتخزين المنظم. تقنيات عملية للسياق المستمر.
الوسوم
ملخص سريع
تعلم كيفية تزويد وكلاء الذكاء الاصطناعي بالذاكرة باستخدام قواعد البيانات المتجهة، وسجل المحادثات، والتخزين المنظم. تقنيات عملية للسياق المستمر.
كيفية منح وكيل الذكاء الاصطناعي ذاكرة
وكلاء الذكاء الاصطناعي الحديثة قوية، لكنها غالبًا ما تفتقر إلى قدرة بشرية أساسية: الذاكرة. بدون ذاكرة، يبدأ كل تفاعل مع الوكيل من الصفر—بدون سياق، بدون تاريخ، بدون استمرارية. هذا يحد من قدرات الوكلاء في مهام مثل المساعدين الشخصيين، روبوتات دعم العملاء، أو أدوات البحث طويلة المدى. في هذه المقالة، ستتعلم تقنيات عملية لتزويد وكيلك بذاكرة، باستخدام أدوات مفتوحة المصدر وواجهات برمجة تطبيقات. سنغطي التثبيت، التهيئة، وأمثلة استخدام حقيقية، بالاستناد إلى التطورات الحديثة من منظمات رائدة في مجال الذكاء الاصطناعي.
لماذا تهم الذاكرة لوكلاء الذكاء الاصطناعي
الذاكرة تحول روبوت الدردشة عديم الحالة إلى مساعد دائم وواعٍ بالسياق. وفقًا لمدونة LangChain، الذاكرة هي مكون أساسي لبناء وكلاء يمكنهم التفكير في المحادثات السابقة، تذكر تفضيلات المستخدم، والحفاظ على تفاعلات طويلة المدى متماسكة. بدون ذاكرة، يكرر الوكلاء أنفسهم، ينسون التعليمات، ويفشلون في تخصيص الردود. قسم أخبار OpenAI سلط الضوء على الذاكرة كمجال تركيز رئيسي لتحسين الذكاء الاصطناعي التحادثي، مما يمكن الوكلاء من "تذكر" التفاصيل عبر الجلسات. وبالمثل، تناقش مدونة Microsoft AI دمج الذاكرة في وكلاء المؤسسات لمهام مثل إدارة المشاريع وإدارة علاقات العملاء. كما تؤكد أخبار Anthropic على الذاكرة كجزء من أنظمة الذكاء الاصطناعي الآمنة والموثوقة، حيث يحتاج الوكلاء إلى تذكر القيود أو المبادئ التوجيهية الأخلاقية.
باختصار، الذاكرة تسد الفجوة بين الرد أحادي الدور والحوار متعدد الأدوار. تسمح للوكلاء بـ:
- الاحتفاظ بمعلومات خاصة بالمستخدم (مثل الاسم، التفضيلات).
- البناء على الإجابات السابقة (مثل "كما ذكرت سابقًا...").
- التعلم من الأخطاء (مثل تجنب الأخطاء المتكررة).
- الحفاظ على السياق عبر محادثات طويلة أو جلسات متعددة.
المتطلبات
قبل الغوص في التنفيذ، تأكد من توفر ما يلي:
- **Python 3.9+** مثبتة على نظامك.
- مدير الحزم **pip** (عادةً ما يكون مضمنًا مع Python).
- **بيئة افتراضية** (موصى بها) لعزل التبعيات.
- الوصول إلى **واجهة برمجة تطبيقات LLM** (مثل OpenAI، Anthropic، أو نموذج محلي عبر Ollama). ستحتاج إلى مفتاح API للنماذج السحابية.
- معرفة أساسية بسطر الأوامر ونصوص Python.
لهذا الدليل، سنستخدم وحدات الذاكرة من LangChain، المدعومة على نطاق واسع والموثقة جيدًا في مدونة LangChain. يمكنك تكييف المفاهيم مع أطر عمل أخرى مثل Semantic Kernel من Microsoft أو Claude API من Anthropic.
التثبيت خطوة بخطوة
1. إعداد بيئة Python افتراضية
أنشئ وفعّل بيئة افتراضية لتجنب تعارض التبعيات:
python -m venv agent-memory-env
source agent-memory-env/bin/activate # على Windows: agent-memory-env\Scripts\activate2. تثبيت LangChain والحزم المطلوبة
قم بتثبيت المكتبة الأساسية لـ LangChain، بالإضافة إلى دعم الذاكرة وموفر LLM. سنستخدم OpenAI كمثال، لكن يمكنك استبداله بـ Anthropic أو غيره.
pip install langchain langchain-community langchain-openai- `langchain`: الإطار الأساسي لبناء الوكلاء.
- `langchain-community`: تكاملات مساهمات المجتمع (تتضمن أنواع الذاكرة).
- `langchain-openai`: غلاف واجهة برمجة تطبيقات OpenAI.
إذا كنت تفضل نموذجًا محليًا، قم بتثبيت Ollama والتكامل المقابل مع LangChain:
pip install langchain-ollama3. تعيين مفتاح API الخاص بك
قم بتصدير مفتاح OpenAI API كمتغير بيئة (استبدل `your-api-key-here` بمفتاحك الفعلي):
export OPENAI_API_KEY="your-api-key-here"لموجه أوامر Windows:
set OPENAI_API_KEY="your-api-key-here"لـ Windows PowerShell:
$env:OPENAI_API_KEY="your-api-key-here"4. التحقق من التثبيت
قم بتشغيل اختبار سريع للتأكد من أن LangChain و LLM يعملان:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
response = llm.invoke("قل 'مرحبًا، ذاكرة!'")
print(response.content)المخرجات المتوقعة: `مرحبًا، ذاكرة!`
أنواع الذاكرة للوكلاء
تقدم LangChain عدة أنواع من الذاكرة، كل منها مناسب لحالات استخدام مختلفة. بناءً على توثيق مدونة LangChain، إليك الأكثر شيوعًا:
- **ConversationBufferMemory**: يخزن تاريخ المحادثة بالكامل كقائمة من الرسائل. بسيط لكنه قد يصبح كبيرًا.
- **ConversationSummaryMemory**: يلخص المحادثة بشكل دوري، مما يقلل من استخدام الرموز مع الاحتفاظ بالنقاط الرئيسية.
- **ConversationBufferWindowMemory**: يحتفظ فقط بآخر N من التبادلات، مثالي للسياق قصير المدى.
- **VectorStoreRetrieverMemory**: يستخدم قاعدة بيانات متجهة لتخزين واسترجاع المحادثات السابقة ذات الصلة بناءً على التشابه الدلالي. رائع للذاكرة طويلة المدى.
- **EntityMemory**: يستخرج ويتذكر الكيانات (مثل الأسماء، الأماكن) من المحادثات.
اختر بناءً على احتياجاتك: المهام قصيرة المدى تحتاج ذاكرة المخزن المؤقت أو النافذة؛ المساعدون طويلو المدى يحتاجون ذاكرة الملخص أو المتجهات.
أمثلة الاستخدام
مثال 1: ذاكرة المخزن المؤقت البسيطة للمحادثة
هذا المثال ينشئ وكيلًا أساسيًا يتذكر المحادثة بأكملها.
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
# تهيئة LLM والذاكرة
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
memory = ConversationBufferMemory()
# إنشاء سلسلة محادثة
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=True # يعرض محتوى الذاكرة للتصحيح
)
# التفاعل الأول
response = conversation.predict(input="مرحبًا! اسمي علي.")
print(response)
# التفاعل الثاني (الوكيل يتذكر الاسم)
response = conversation.predict(input="ما اسمي؟")
print(response)**المخرجات**: سيرد الوكيل بـ "اسمك علي." يُظهر `verbose=True` مخزن الذاكرة الذي يحتوي على كل من مدخلات المستخدم وردود المساعد.
مثال 2: ذاكرة النافذة لسياق محدود
استخدم ذاكرة النافذة للاحتفاظ بآخر تبادلين فقط، لمنع تجاوز الرموز:
from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(k=2) # الاحتفاظ بآخر دورين
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=True
)
# محاكاة محادثة أطول
conversation.predict(input="أحب البيتزا.")
conversation.predict(input="ماذا أحب؟") # يتذكر
conversation.predict(input="أحب أيضًا التاكو.")
conversation.predict(input="ماذا أحب؟") # قد ينسى البيتزا بسبب النافذةمثال 3: ذاكرة الملخص للمحادثات الطويلة
ذاكرة الملخص تضغط تاريخ المحادثة، مثالية للوكلاء طويلي المدى:
from langchain.memory import ConversationSummaryMemory
memory = ConversationSummaryMemory(llm=llm) # يستخدم LLM للتلخيص
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=True
)
conversation.predict(input="أنا أتعلم بايثون.")
conversation.predict(input="ماذا أتعلم؟") # يتذكر
conversation.predict(input="الآن أتعلم عن الذاكرة في الذكاء الاصطناعي.")
conversation.predict(input="ما المواضيع التي أدرسها؟") # يلخص كليهمامثال 4: ذاكرة المتجهات للاسترجاع طويل المدى
لذاكرة دائمة عبر الجلسات، استخدم مخزن متجهات. قم بتثبيت ChromaDB:
pip install chromadbثم نفذ:
from langchain.memory import VectorStoreRetrieverMemory
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
# تهيئة التضمينات ومخزن المتجهات
embeddings = OpenAIEmbeddings()
vectorstore = Chroma(collection_name="agent_memory", embedding_function=embeddings)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) # استرجاع أعلى 3 ذكريات مشابهة
memory = VectorStoreRetrieverMemory(retriever=retriever, memory_key="history")
# حفظ ذاكرة
memory.save_context({"input": "لوني المفضل هو الأزرق"}, {"output": "تم التسجيل"})
# حفظ ذاكرة أخرى
memory.save_context({"input": "أعيش في طوكيو"}, {"output": "تم التسجيل"})
# استرجاع الذاكرة ذات الصلة
relevant = memory.load_memory_variables({"input": "أين أعيش؟"})
print(relevant) # يعيد "أعيش في طوكيو" وذكريات أخرى ذات صلةهذا النهج يحفظ الذكريات على القرص، لذا تبقى بعد إعادة التشغيل.
مثال 5: بناء وكيل كامل بذاكرة
ادمج الذاكرة مع وكيل يمكنه استخدام الأدوات. إليك مساعد بسيط يتذكر تفضيلات المستخدم:
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import tool
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
# تعريف أداة بسيطة
@tool
def get_weather(city: str) -> str:
"""الحصول على الطقس الحالي لمدينة."""
return f"الطقس في {city} مشمس."
# تهيئة LLM والذاكرة
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
memory = ConversationBufferMemory(memory_key="chat_history")
# إنشاء وكيل
tools = [get_weather]
prompt = PromptTemplate.from_template(
"أنت مساعد مفيد بذاكرة. تاريخ المحادثة:\n{chat_history}\n\nالمستخدم: {input}\nالمساعد:"
)
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, memory=memory, verbose=True)
# التفاعل
agent_executor.invoke({"input": "مرحبًا، أنا أحمد. أعيش في باريس."})
agent_executor.invoke({"input": "ما اسمي ومدينتي؟"}) # يتذكر
agent_executor.invoke({"input": "ما الطقس في مدينتي؟"}) # يستخدم الذاكرةأفضل الممارسات والاعتبارات
1. **إدارة الرموز**: الذاكرة تستهلك رموزًا. استخدم ذاكرة النافذة أو الملخص لأنظمة الإنتاج للتحكم في التكاليف. تشير مدونة OpenAI إلى أن السياقات الأطول تزيد من زمن الاستجابة والتكلفة.
2. **الخصوصية والأمان**: تخزين ذكريات المستخدم يثير مخاوف الخصوصية. نفذ موافقة المستخدم وسياسات حذف البيانات، كما أبرزت أخبار Anthropic. تجنب تخزين المعلومات الحساسة除非 مشفرة.
3. **الاستمرارية**: للذاكرة طويلة المدى، استخدم قاعدة بيانات مثل Chroma أو Pinecone. توصي مدونة Microsoft AI بمخازن المتجهات لذاكرة المؤسسات القابلة للتوسع.
4. **الاختبار**: اختبر دائمًا سلوك الذاكرة مع الحالات الحدودية (مثل معلومات متضاربة، ذاكرة فارغة). توفر مدونة LangChain أدوات تصحيح مثل `verbose=True`.
5. **البديل الاحتياطي**: إذا فشل استرجاع الذاكرة، قدم ردًا بديلاً (مثل "لا أتذكر هذه المعلومات").
الخلاصة
منح وكيلك ذاكرة ليس مجرد ميزة إضافية—إنه ضروري لبناء أنظمة ذكاء اصطناعي مفيدة حقًا وواعية بالسياق. من خلال تنفيذ مخازن المحادثة المؤقتة، الملخصات، النوافذ، أو مخازن المتجهات، يمكنك تحويل روبوت عديم الحالة إلى مساعد دائم يتذكر تفضيلات المستخدم، التفاعلات السابقة، والأهداف طويلة المدى. ابدأ بذاكرة المخزن المؤقت البسيطة للنماذج الأولية، ثم انتقل إلى مخازن المتجهات للإنتاج. التقنيات المغطاة هنا، بناءً على رؤى من LangChain وOpenAI وMicrosoft وAnthropic، توفر أساسًا متينًا. مع تطور تقنيات الذاكرة، ستصبح وكلاؤك أكثر قدرة وتخصيصًا وموثوقية. الآن حان دورك: اختر نوع ذاكرة، قم بتثبيت التبعيات، وامنح وكيلك هبة الذاكرة.
المصادر
أسئلة شائعة
عن ماذا يتحدث هذا المقال؟
يتناول هذا المقال موضوع "كيفية إعطاء الذاكرة لوكيلك" ضمن تصنيف وكلاء الذكاء الاصطناعي. تعلم كيفية تزويد وكلاء الذكاء الاصطناعي بالذاكرة باستخدام قواعد البيانات المتجهة، وسجل المحادثات، والتخزين المنظم. تقنيات عملية للسياق المستمر.
لمن يفيد هذا المقال؟
يفيد القراء المهتمين بفهم أدوات وتقنيات الذكاء الاصطناعي بطريقة عملية وواضحة.
ما الخطوة التالية؟
اقرأ المقال كاملاً، راجع المصادر المرفقة، ثم جرّب الأفكار المناسبة لاحتياجك بحذر.



