Herramientas de memoria
Las herramientas de memoria permiten a los agentes buscar de forma autónoma en su propia memoria a largo plazo durante el razonamiento. En lugar de depender únicamente de la orquestación externa, el agente decide cuándo y cómo consultar la memoria.
Descripción general
ADK-Rust proporciona dos herramientas de memoria detrás del indicador de funcionalidad memory-tools:
| Herramienta | Propósito | Invocación |
|---|---|---|
LoadMemoryTool | Búsqueda de memoria bajo demanda durante el razonamiento | El agente la invoca como cualquier otra herramienta |
PreloadMemoryTool | Carga automáticamente el contexto relevante al inicio del turno | Se ejecuta como un BeforeModelCallback |
Inicio rápido
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()?;
Instalación
[dependencies]
adk-tool = { version = "2.1.0", features = ["memory-tools"] }
adk-memory = "2.1.0"
LoadMemoryTool
El agente llama a esta herramienta durante el razonamiento para buscar en la memoria con una consulta:
{
"name": "load_memory",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query" },
"limit": { "type": "integer", "minimum": 1, "maximum": 100 }
},
"required": ["query"]
}
}
La herramienta devuelve JSON estructurado:
{
"memories": [
{
"content": "The user prefers dark mode",
"author": "assistant",
"timestamp": "2026-05-15T10:30:00Z"
}
],
"count": 1
}
PreloadMemoryTool
Se puede usar de dos maneras:
Como herramienta normal
El agente la llama explícitamente (parámetro query opcional; si no se proporciona, utiliza la entrada más reciente del usuario).
Como BeforeModelCallback
Inyecta automáticamente los recuerdos relevantes en la instrucción del sistema antes de cada llamada al modelo:
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()?;
Configuración
Ambas herramientas comparten MemoryToolConfig:
| Opción | Predeterminado | Rango | Descripción |
|---|---|---|---|
max_results | 5 | 1–100 | Máximo de entradas de memoria devueltas |
min_relevance_score | Ninguno | 0.0–1.0 | Umbral mínimo de similitud |
project_id | Ninguno | — | Limita las búsquedas a un proyecto |
Memoria con ámbito de proyecto
Cuando se configura project_id, las búsquedas se limitan a ese proyecto dentro de la memoria del usuario:
let tool = LoadMemoryTool::builder()
.memory_service(service)
.project_id("my-project")
.build()?;
Funciona con cualquier backend
Las herramientas de memoria delegan en el trait MemoryService. Cualquier backend funciona:
InMemoryMemoryService— desarrollo y pruebasPostgresMemoryService— producción con pgvector- Implementaciones personalizadas
Anterior: ← Normalización del esquema | Siguiente: Sesiones →