मेमोरी टूल्स
मेमोरी टूल्स एजेंटों को तर्क के दौरान अपनी दीर्घकालिक मेमोरी को स्वायत्त रूप से खोजने में सक्षम करते हैं। केवल बाहरी ऑर्केस्ट्रेशन पर निर्भर रहने के बजाय, एजेंट तय करता है कि मेमोरी को कब और कैसे क्वेरी करना है।
अवलोकन
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_results | 5 | 1–100 | लौटाई गई अधिकतम मेमोरी प्रविष्टियाँ |
min_relevance_score | None | 0.0–1.0 | न्यूनतम समानता थ्रेशोल्ड |
project_id | None | — | खोजों को एक प्रोजेक्ट तक सीमित करें |
परियोजना-विशिष्ट मेमोरी
जब project_id कॉन्फ़िगर किया जाता है, तो खोजें उपयोगकर्ता की मेमोरी के भीतर उस परियोजना तक सीमित होती हैं:
let tool = LoadMemoryTool::builder()
.memory_service(service)
.project_id("my-project")
.build()?;
किसी भी बैकएंड के साथ काम करता है
मेमोरी टूल MemoryService trait को सौंपते हैं। कोई भी बैकएंड काम करता है:
InMemoryMemoryService— विकास और परीक्षणPostgresMemoryService— pgvector के साथ उत्पादन- कस्टम कार्यान्वयन
पिछला: ← स्कीमा सामान्यीकरण | अगला: Sessions →