メモリツール
メモリツールにより、エージェントは推論中に自身の長期メモリを自律的に検索できます。外部オーケストレーションのみに依存するのではなく、エージェントがメモリをいつ、どのようにクエリするかを決定します。
概要
ADK-Rustは、memory-tools機能フラグの背後で2つのメモリツールを提供します。
| ツール | 目的 | 呼び出し |
|---|---|---|
LoadMemoryTool | 推論中にオンデマンドでメモリを検索 | エージェントは他のツールと同様に呼び出します |
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.1.0", features = ["memory-tools"] }
adk-memory = "2.1.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
2通りの方法で使用できます。
通常のツールとして
エージェントが明示的に呼び出します(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 | なし | 0.0–1.0 | 類似度の最小しきい値 |
project_id | なし | — | 検索範囲をプロジェクトに限定します |
プロジェクトスコープのメモリ
project_id を設定すると、ユーザーのメモリ内でそのプロジェクトに検索範囲が限定されます。
let tool = LoadMemoryTool::builder()
.memory_service(service)
.project_id("my-project")
.build()?;
あらゆるバックエンドに対応
メモリツールは MemoryService trait に処理を委譲します。あらゆるバックエンドが利用できます。
InMemoryMemoryService— 開発およびテストPostgresMemoryService— pgvector を使用した本番環境- カスタム実装
前へ: ← スキーマの正規化 | 次へ: セッション →