Zep - هندسة السياق والذاكرة للوكلاء
Zep هي طبقة ذاكرة و هندسة السياق لوكلاء AI. مبنية على محرك رسم بياني المعرفة الزمني Graphiti، يستقبل سجل المحادثة والبيانات التجارية ويصهرها إلى رسم بياني قابل للاستعلام يتتبع كيفية تغير الحقائق بمرور الوقت ويعيد السياق ذي الصلة والحاكم بكمون منخفض لقاعدة استجابات الوكيل. يوفر نواة مفتوحة المصدر وخدمة سحابية مدارة (SOC 2 / HIPAA)، مع SDKs لـ Python و TypeScript و Go.
التثبيت / الإعداد
| الهدف | الأمر |
|---|
| SDK Python | pip install zep-cloud (سحابة) |
| SDK TypeScript | npm install @getzep/zep-cloud |
| مستضاف ذاتياً (الإصدار المجتمعي) | قم بالتشغيل عبر Docker Compose للمشروع |
| مفتاح API | export ZEP_API_KEY=... |
المفاهيم الأساسية
| المصطلح | المعنى |
|---|
| المستخدم | مستخدم نهائي يخدمه الوكيل |
| الخيط | جلسة محادثة لمستخدم |
| الرسم البياني | رسم بياني المعرفة الزمني للمستخدم/المجموعة |
| الحقيقة | علاقة تعرّف الوقت في الرسم البياني |
| كتلة السياق | السياق المجمع الجاهز للحقن |
المستخدمون والخيوط
from zep_cloud.client import Zep
zep = Zep(api_key="...")
zep.user.add(user_id="nick", email="nick@example.com")
zep.thread.create(thread_id="t1", user_id="nick")
| الاستدعاء | الوصف |
|---|
user.add(...) | إنشاء مستخدم |
thread.create(...) | بدء خيط محادثة |
thread.add_messages(...) | إضافة الرسائل (استقبال تلقائي إلى الرسم البياني) |
user.delete(...) | إزالة مستخدم وبياناتهم |
إضافة الذاكرة
zep.thread.add_messages(
thread_id="t1",
messages=[{"role": "user", "content": "I moved to Berlin.", "name": "Nick"}],
)
# إضافة بيانات تجارية غير الدردشة مباشرة إلى الرسم البياني
zep.graph.add(user_id="nick", type="text",
data="Nick''s subscription tier is Pro.")
| الاستدعاء | الوصف |
|---|
thread.add_messages(...) | استقبال أدوار المحادثة |
graph.add(...) | إضافة النص/JSON التعسفي إلى الرسم البياني |
| الاستقبال | الكيانات/الحقائق المستخرجة والطابع الزمني تلقائياً |
استرجاع السياق
# الحصول على كتلة سياق مجمعة للموجه
memory = zep.thread.get_user_context(thread_id="t1")
print(memory.context) # سلسلة جاهزة للحقن من الحقائق ذات الصلة
# أو الاستعلام عن الرسم البياني مباشرة
edges = zep.graph.search(user_id="nick", query="where does Nick live?")
| الاستدعاء | العوائد |
|---|
thread.get_user_context(...) | كتلة سياق مركبة |
graph.search(...) | الحقائق/الحواف أو العقد المطابقة للاستعلام |
| نطاق البحث | الحواف (الحقائق) أو العقد (الكيانات) أو الحلقات |
لماذا الزمني
لأن Zep يستند إلى الرسم البياني والزمني، لا تقوم التحديثات المتناقضة بالكتابة بعمى — الحقائق القديمة يتم إبطالها بطابع زمني والحقائق الجديدة مسجلة، لذا يحصل الوكيل على الحقيقة الحالية في حين يبقى التاريخ قابلاً للاستعلام.
| الإمكانية | الفائدة |
|---|
| إبطال الحقيقة | السياق الحالي يبقى دقيقاً |
| الأصل | تتبع حقيقة إلى مصدرها |
| استرجاع الحاكم | سياق منخفض الكمون والمرخص |
| عبر الجلسات | تبقى الذاكرة عبر الخيوط |
سير العمل الشائع
# حلقة الوكيل مع ذاكرة Zep
zep.thread.add_messages(thread_id="t1", messages=user_turn)
context = zep.thread.get_user_context(thread_id="t1").context
# مسبق `context` إلى موجه نظام LLM الخاص بك ثم الإنشاء
Zep مقابل طبقات الذاكرة الأخرى
| الجانب | Zep | Mem0 | مخزن متجه خام |
|---|
| النموذج | رسم بياني زمني (Graphiti) | متعدد الطبقات | التضمينات فقط |
| حقائق زمنية | نعم | محدود | لا |
| تجميع السياق | كتلة مدمجة | الاسترجاع | يدوي |
| الأفضل لـ | ذاكرة وكيل الإنتاج | التخصيص | تذكر بسيط |
موارد