मेमोरी टूल्स

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

अवलोकन

ADK-Rust memory-tools फीचर फ्लैग के पीछे दो मेमोरी टूल्स प्रदान करता है:

Toolउद्देश्यआमंत्रण
LoadMemoryToolतर्क के दौरान ऑन-डिमांड मेमोरी खोजAgent इसे किसी अन्य tool की तरह कॉल करता है
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.0.0", features = ["memory-tools"] }
adk-memory = "2.0.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_scoreNone0.0–1.0न्यूनतम समानता थ्रेशोल्ड
project_idNoneखोजों को एक प्रोजेक्ट तक सीमित करें

परियोजना-विशिष्ट मेमोरी

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

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

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

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

  • InMemoryMemoryService — विकास और परीक्षण
  • PostgresMemoryService — pgvector के साथ उत्पादन
  • कस्टम कार्यान्वयन

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