أدوات الذاكرة
تمكّن أدوات الذاكرة الوكلاء من البحث بشكل مستقل في ذاكرتهم طويلة الأمد أثناء الاستدلال. وبدلًا من الاعتماد حصريًا على التنسيق الخارجي، يقرر الوكيل متى وكيف يستعلم عن الذاكرة.
نظرة عامة
يوفّر ADK-Rust أداتَي ذاكرة خلف علامة الميزة memory-tools:
| الأداة | الغرض | الاستدعاء |
|---|---|---|
LoadMemoryTool | البحث عن الذاكرة عند الطلب أثناء الاستدلال | يستدعيها الوكيل مثل أي أداة أخرى |
PreloadMemoryTool | تحميل السياق ذي الصلة تلقائيًا عند بدء الدور | تعمل كـ BeforeModelCallback |
البدء السريع
use adk_tool::memory::{LoadMemoryTool, PreloadMemoryTool};
use adk_memory::InMemoryMemoryService;
use std::sync::Arc;
let memory_service = Arc::new(InMemoryMemoryService::new());
// LoadMemoryTool — agent calls during reasoning
let load_tool = LoadMemoryTool::builder()
.memory_service(memory_service.clone())
.max_results(5)
.min_relevance_score(0.3)
.build()?;
// PreloadMemoryTool — auto-injects at turn start
let preload_tool = PreloadMemoryTool::builder()
.memory_service(memory_service.clone())
.max_results(3)
.build()?;
// Use LoadMemoryTool as a regular tool
let agent = LlmAgentBuilder::new("assistant")
.model(model)
.tool(Arc::new(load_tool))
.before_model_callback(preload_tool.into_before_model_callback())
.build()?;
التثبيت
[dependencies]
adk-tool = { version = "2.1.0", features = ["memory-tools"] }
adk-memory = "2.1.0"
LoadMemoryTool
يستدعي الوكيل هذه الأداة أثناء الاستدلال للبحث في الذاكرة باستخدام استعلام:
{
"name": "load_memory",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query" },
"limit": { "type": "integer", "minimum": 1, "maximum": 100 }
},
"required": ["query"]
}
}
تعيد الأداة بنية JSON:
{
"memories": [
{
"content": "The user prefers dark mode",
"author": "assistant",
"timestamp": "2026-05-15T10:30:00Z"
}
],
"count": 1
}
PreloadMemoryTool
يمكن استخدامها بطريقتين:
كأداة عادية
يستدعيها الوكيل بشكل صريح (معلمة query اختيارية — وتعود إلى أحدث إدخال للمستخدم عند عدم تحديدها).
كـ BeforeModelCallback
تُدرج الذكريات ذات الصلة تلقائيًا في تعليمة النظام قبل كل استدعاء للنموذج:
let preload = PreloadMemoryTool::builder()
.memory_service(service)
.max_results(3)
.build()?;
let agent = LlmAgentBuilder::new("assistant")
.model(model)
.before_model_callback(preload.into_before_model_callback())
.build()?;
التهيئة
تشترك الأداتان في MemoryToolConfig:
| الخيار | الافتراضي | النطاق | الوصف |
|---|---|---|---|
max_results | 5 | 1–100 | الحد الأقصى لإدخالات الذاكرة المُعادة |
min_relevance_score | لا شيء | 0.0–1.0 | الحد الأدنى لعتبة التشابه |
project_id | لا شيء | — | يقيّد عمليات البحث بنطاق مشروع |
الذاكرة المحددة بنطاق المشروع
عند تهيئة project_id، تُحدَّد عمليات البحث بنطاق المشروع ضمن ذاكرة المستخدم:
let tool = LoadMemoryTool::builder()
.memory_service(service)
.project_id("my-project")
.build()?;
تعمل مع أي واجهة خلفية
تفوض أدوات الذاكرة إلى سمة MemoryService. تعمل أي واجهة خلفية:
InMemoryMemoryService— للتطوير والاختبارPostgresMemoryService— للإنتاج مع pgvector- تطبيقات مخصصة
السابق: ← تطبيع المخطط | التالي: الجلسات →