Ferramentas de memória
As ferramentas de memória permitem que os agentes pesquisem autonomamente sua própria memória de longo prazo durante o raciocínio. Em vez de depender exclusivamente da orquestração externa, o agente decide quando e como consultar a memória.
Visão geral
ADK-Rust fornece duas ferramentas de memória por trás da flag de recurso memory-tools:
| Ferramenta | Finalidade | Invocação |
|---|---|---|
LoadMemoryTool | Pesquisa de memória sob demanda durante o raciocínio | O agente a chama como qualquer outra ferramenta |
PreloadMemoryTool | Carrega automaticamente o contexto relevante no início do turno | É executado como um BeforeModelCallback |
Início 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()?;
Instalação
[dependencies]
adk-tool = { version = "2.1.0", features = ["memory-tools"] }
adk-memory = "2.1.0"
LoadMemoryTool
O agente chama esta ferramenta durante o raciocínio para pesquisar na memória com uma consulta:
{
"name": "load_memory",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query" },
"limit": { "type": "integer", "minimum": 1, "maximum": 100 }
},
"required": ["query"]
}
}
A ferramenta retorna JSON estruturado:
{
"memories": [
{
"content": "The user prefers dark mode",
"author": "assistant",
"timestamp": "2026-05-15T10:30:00Z"
}
],
"count": 1
}
PreloadMemoryTool
Pode ser usada de duas maneiras:
Como uma ferramenta comum
O agente a chama explicitamente (parâmetro query opcional — usa como padrão a entrada mais recente do usuário).
Como um BeforeModelCallback
Insere automaticamente memórias relevantes na instrução do sistema antes de cada chamada do 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()?;
Configuração
Ambas as ferramentas compartilham MemoryToolConfig:
| Opção | Padrão | Intervalo | Descrição |
|---|---|---|---|
max_results | 5 | 1–100 | Número máximo de entradas de memória retornadas |
min_relevance_score | Nenhum | 0.0–1.0 | Limite mínimo de similaridade |
project_id | Nenhum | — | Limita as pesquisas a um projeto |
Memória com Escopo de Projeto
Quando project_id é configurado, as pesquisas ficam limitadas a esse projeto na memória do usuário:
let tool = LoadMemoryTool::builder()
.memory_service(service)
.project_id("my-project")
.build()?;
Funciona com Qualquer Backend
As ferramentas de memória delegam ao trait MemoryService. Qualquer backend funciona:
InMemoryMemoryService— desenvolvimento e testesPostgresMemoryService— produção com pgvector- Implementações personalizadas
Anterior: ← Normalização de Schema | Próximo: Sessões →