メモリツール

メモリツールにより、エージェントは推論中に自身の長期メモリを自律的に検索できます。外部オーケストレーションのみに依存するのではなく、エージェントがメモリをいつ、どのようにクエリするかを決定します。

概要

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_results51–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 を使用した本番環境
  • カスタム実装

前へ: ← スキーマの正規化 | 次へ: セッション →