मेमोरी टूल

मेमोरी टूल एजेंट को तर्क करते समय स्वायत्त रूप से अपनी दीर्घकालिक मेमोरी खोजने में सक्षम बनाते हैं। केवल बाहरी ऑर्केस्ट्रेशन पर निर्भर रहने के बजाय, एजेंट तय करता है कि मेमोरी से कब और कैसे क्वेरी करनी है।

अवलोकन

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_idNoneखोजों को किसी प्रोजेक्ट तक सीमित करता है

प्रोजेक्ट-स्कोप्ड मेमोरी

जब project_id कॉन्फ़िगर किया जाता है, तो खोजें उपयोगकर्ता की मेमोरी में उस प्रोजेक्ट तक सीमित रहती हैं:

let tool = LoadMemoryTool::builder()
    .memory_service(service)
    .project_id("my-project")
    .build()?;

किसी भी बैकएंड के साथ काम करता है

मेमोरी टूल्स MemoryService trait को सौंपे जाते हैं। कोई भी बैकएंड काम करता है:

  • InMemoryMemoryService — विकास और परीक्षण
  • PostgresMemoryService — pgvector के साथ प्रोडक्शन
  • कस्टम कार्यान्वयन

पिछला: ← स्कीमा सामान्यीकरण | अगला: सेशंस →