Outils de mémoire
Les outils de mĂ©moire permettent aux agents de rechercher de maniĂšre autonome dans leur propre mĂ©moire Ă long terme pendant le raisonnement. Au lieu de dĂ©pendre uniquement dâune orchestration externe, lâagent dĂ©cide quand et comment interroger la mĂ©moire.
Vue dâensemble
ADK-Rust fournit deux outils de mĂ©moire derriĂšre lâindicateur de fonctionnalitĂ© memory-tools :
| Outil | Objectif | Invocation |
|---|---|---|
LoadMemoryTool | Recherche de mĂ©moire Ă la demande pendant le raisonnement | Lâagent lâappelle comme nâimporte quel autre outil |
PreloadMemoryTool | Charge automatiquement le contexte pertinent au dĂ©but du tour | SâexĂ©cute comme un BeforeModelCallback |
Démarrage rapide
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()?;
Installation
[dependencies]
adk-tool = { version = "2.1.0", features = ["memory-tools"] }
adk-memory = "2.1.0"
LoadMemoryTool
Lâagent appelle cet outil pendant son raisonnement pour rechercher dans la mĂ©moire Ă lâaide dâune requĂȘte :
{
"name": "load_memory",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query" },
"limit": { "type": "integer", "minimum": 1, "maximum": 100 }
},
"required": ["query"]
}
}
Lâoutil renvoie des JSON structurĂ©s :
{
"memories": [
{
"content": "The user prefers dark mode",
"author": "assistant",
"timestamp": "2026-05-15T10:30:00Z"
}
],
"count": 1
}
PreloadMemoryTool
Peut ĂȘtre utilisĂ© de deux façons :
Comme outil standard
Lâagent lâappelle explicitement (paramĂštre query facultatif â utilise la derniĂšre entrĂ©e de lâutilisateur par dĂ©faut).
Comme BeforeModelCallback
Injecte automatiquement les mĂ©moires pertinentes dans lâinstruction systĂšme avant chaque appel au modĂšle :
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()?;
Configuration
Les deux outils partagent MemoryToolConfig :
| Option | Par défaut | Plage | Description |
|---|---|---|---|
max_results | 5 | 1â100 | Nombre maximal dâentrĂ©es de mĂ©moire renvoyĂ©es |
min_relevance_score | Aucun | 0.0â1.0 | Seuil minimal de similaritĂ© |
project_id | Aucun | â | Limite les recherches Ă un projet |
Mémoire limitée au projet
Lorsque project_id est configurĂ©, les recherches sont limitĂ©es Ă ce projet dans la mĂ©moire de lâutilisateur :
let tool = LoadMemoryTool::builder()
.memory_service(service)
.project_id("my-project")
.build()?;
Fonctionne avec nâimporte quel backend
Les outils de mĂ©moire dĂ©lĂšguent au trait MemoryService. Nâimporte quel backend fonctionne :
InMemoryMemoryServiceâ dĂ©veloppement et testsPostgresMemoryServiceâ production avec pgvector- ImplĂ©mentations personnalisĂ©es
PrĂ©cĂ©dent : â Normalisation du schĂ©ma | Suivant : Sessions â