أدوات الذاكرة

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

نظرة عامة

يوفّر 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_results51–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
  • تطبيقات مخصصة

السابق: ← تطبيع المخطط | التالي: الجلسات →