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 :

OutilObjectifInvocation
LoadMemoryToolRecherche de mĂ©moire Ă  la demande pendant le raisonnementL’agent l’appelle comme n’importe quel autre outil
PreloadMemoryToolCharge automatiquement le contexte pertinent au dĂ©but du tourS’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 :

OptionPar défautPlageDescription
max_results51–100Nombre maximal d’entrĂ©es de mĂ©moire renvoyĂ©es
min_relevance_scoreAucun0.0–1.0Seuil minimal de similaritĂ©
project_idAucun—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 tests
  • PostgresMemoryService — production avec pgvector
  • ImplĂ©mentations personnalisĂ©es

PrĂ©cĂ©dent : ← Normalisation du schĂ©ma | Suivant : Sessions →

Outils de mémoire - Documentation ADK-Rust | ADK-Rust