2026年7月17日 【Memory Bank】ユーザーとのやり取りや知識、実績を蓄積し、「成長・継承」できるエージェントを作りたい Agent Development Kit Gemini Google Cloud Python Vertex AI 検索する Popular tags 事例紹介 GEN-STEP 生成AI(Generative AI) Vertex AI Search Looker Studio BigQuery AlloyDB Google Workspace Cloud SQL Category Google Cloud Author Tera SHARE 目次 Memory Bank の詳しい説明 Memory Bank とは何か(核心) Memory Bank を使うべきタイミング 実際の使用方法(コーディング) 動作確認 まとめ Content こんにちは!teraです!! 早速ですが、AIエージェントを使っていて、こんな経験をしたことはないでしょうか? 「先週話した内容、覚えていてよ…」 「毎回同じことを説明するのが面倒だな」 「担当者が変わっても、これまでの経緯を引き継いでほしい」 通常のLLMベースのエージェントは、会話のたびに記憶がリセットされます。どれだけ丁寧に教えても、セッションが終わればゼロに戻る。これでは本当の意味での「パートナー」とは言えません。 この課題を解決するのが Memory Bank という考え方です。Memory Bank を導入することで: ユーザーの好みや役職などを記憶し、パーソナライズした応答ができる プロジェクトの状況や過去の議論を蓄積・引き継げる エージェント自身が会話を重ねるたびに「成長」していく 本記事では、Memory Bank の仕組みの解説から、Python を使った実装・動作確認まで、実際のコードを交えて紹介します。 Memory Bank の詳しい説明 AIエージェントの「記憶」の3分類 AIエージェントの記憶は、Google ADK などの主要なエージェント SDK が採用している分類に沿うと整理しやすくなります。大きく State(短期記憶)/ Artifact(一時記憶)/ Memory(長期記憶) の3種類です。 State(短期記憶) 「セッション中のメモ帳」 State とは、1回の会話セッションの中でエージェントが保持する一時的な状態です。プログラムでいう「変数」に近い概念で、ユーザーとの会話の流れや操作の進捗をリアルタイムで記録します。 # Stateの典型的な実装イメージ(Google ADK) session.state["user_name"] = "tera" session.state["quiz_step"] = 3 session.state["score"] = 80 # セッション終了(プロセス終了)と同時に消える Google ADK では、状態を4つの名前空間で管理できます: user: や app: プレフィックスを使うと、セッションをまたいで一部の情報を引き継ぐこともできます。ただし、会話の文脈全体を保存するというより、設定値や進捗フラグなどシンプルなデータの管理に向いています。 ✅ 向いているシーン 会話の途中の状態(クイズの進行状況、フォームの入力途中など) / 1セッション内で完結するタスクの文脈管理 / プロトタイプ・検証段階の開発 Artifact(一時記憶) 「作業の中で生み出した成果物の置き場」 Artifact とは、エージェントがタスクを実行する過程で外部に出力・保存するファイルや構造化データです。生成したコード、分析レポート、PDF や画像ファイルなどが該当します。 # Artifactの典型的な実装イメージ(Google ADK) await tool_context.save_artifact( filename="report_2026-05.pdf", artifact=pdf_bytes # バイナリデータとして保存 ) # 後続の処理で再利用 artifact = await tool_context.load_artifact("report_2026-05.pdf") ✅ 向いているシーン コード生成・ドキュメント作成・データ分析の結果を保存したい場面 / 複数のツール(エージェント)間でファイルを受け渡したい場面 / 人間がレビュー・承認する成果物を作る用途 Memory(長期記憶)とそのバリエーション 「セッションをまたいで持続する記憶」 Memory とは、セッションが終わっても消えない永続的な記憶です。「このユーザーは〇〇が好き」「前回のクイズスコアは80点だった」といった情報をまたいで保持するために使います。 ❓ 「アプリを再起動してもセッションが引き継がれる」のはなぜ? ChatGPT や Claude.ai で「前の会話に戻れる」のは、会話ログをそのままデータベースに保存しているからです。これは「セッション永続化(Persistent Session)」と呼ばれる手法で、長期記憶の一形態です。 ① ユーザーがメッセージを送信 ↓ ② メッセージをDBに保存(会話ID紐づけ) ↓ ③ DBから過去ログを全件取得 → LLMに渡す ↓ ④ アプリ再起動後も同じ会話IDでDBから復元 → 続きから話せる Google ADK ではDatabaseSessionServiceを使ってこれを実現できます: # PostgreSQLにセッションデータを保存する例 uv run adk web --session_service_uri="postgresql://user:pass@localhost:5432/mydb" ただし、この方法には課題があります。会話量が増えるにつれてログが膨大になり、LLM へ渡すトークン数が増大します。また「何を覚えておくべきか」の選別がなく、不要な情報も含めて全件保存してしまいます。 これが Memory Bank と本質的に異なる点です。 長期記憶の実装方法の比較 Memory Bank とは何か(核心) 「録音」ではなく「ノートにまとめる」ことが Memory Bank の本質 DB永続化(Persistent Session)が会話の「録音・録画」だとすれば、Memory Bank は自分でまとめたノートです。 Google の Vertex AI(現Agent Platform) Memory Bank では、Gemini モデルが会話セッションを分析し、重要な情報だけを自動的に抽出・蒸留して保存します。次のセッションでは、膨大なログを全件渡すのではなく、厳選された記憶だけをコンテキストとして活用します。 【DB永続化(録音)】 会話ログ全体 → そのままDBへ → 次回も全部読み込む → 問題: トークン肥大化、不要情報も混入 【Memory Bank(ノート)】 会話ログ → LLMが重要情報を抽出・蒸留 → 構造化して保存 → 次回はコンパクトな記憶だけ読み込む Memory Bank が保存する記憶の種類は以下の通りです: 全体比較 ※ user: / app: プレフィックスを使えばセッション間で一部引き継ぎ可能 Memory Bank を使うべきタイミング 3つの記憶は競合するものではなく、目的に応じて組み合わせるのが正解です。 【セッション中の状態管理】 → State 【ツール間のファイル受け渡し・成果物の保存】 → Artifact 【会話の「続き」を再現したい(アプリ再起動対応)】 → DB永続化 【ユーザーの成長・知識の継承・パーソナライズ】 → Memory Bank ✅ Memory Bank を選ぶべき場面 「このユーザーはどんな人か」を覚えておきたいとき 「前回こういう指摘をもらった」という経験を次回に活かしたいとき 「このプロジェクトの背景」を毎回説明させたくないとき 複数セッションにまたがってエージェントを「育てていく」とき 担当者が変わっても知識を引き継ぎたいとき ❌ Memory Bank でなくてよい場面 1回限りのタスクで使い捨てのエージェントを作るとき → State で十分 会話の「続き」機能だけが欲しいとき → DB永続化で十分 大量ドキュメントを横断的に検索したいとき → RAG が適切 Memory Bank は「人間関係と同じで、付き合いを重ねるほど価値が増す」仕組みです。一度きりの利用より、継続的に使い続けるエージェントに組み込むことで真価を発揮します。 実際の使用方法(コーディング) ここでは Google ADK を使って Memory Bank と連携するパーソナル業務アシスタントを構築します。ユーザーの名前・役職・好みなどを長期記憶として蓄積し、セッションをまたいでパーソナライズされた応答ができるエージェントです。 ディレクトリ構成 . ├── memory_bank_sample_agent │ ├── agent.py # エージェント定義 │ ├── .env # 環境変数 │ └── __init__.py ├── pyproject.toml └── uv.lock プロジェクトの準備 # uv プロジェクトの初期化 uv init --no-readme # ADK パッケージの追加 uv add "google-adk>=1.29.0" # エージェントのパッケージディレクトリを作成 mkdir memory_bank_sample_agent # ADK がパッケージとして認識できるよう __init__.py を配置 echo "from . import agent" > memory_bank_sample_agent/__init__.py エージェントのソースコード(agent.py) Memory Bank との連携には、以下の2つの仕組みを使います。 # memory_bank_sample_agent/agent.py from google.adk.agents import Agent from google.adk.tools import google_search from google.adk.tools.agent_tool import AgentTool from google.adk.agents.callback_context import CallbackContext from google.adk.tools.preload_memory_tool import PreloadMemoryTool # 会話終了後に直近のやり取りを Memory Bank に保存するコールバック async def save_to_memory_callback(callback_context: CallbackContext): # 末尾の最終イベントを除いた直近5件を Memory Bank へ送信 await callback_context.add_events_to_memory( events=callback_context.session.events[-5:-1] ) return None # Web 検索用のサブエージェント search_agent = Agent( name="search_agent", model="gemini-2.5-flash", description="Google検索で最新情報を調べるエージェント", instruction="ユーザーの質問に対してGoogle検索を使って情報を収集し、日本語で回答してください。", tools=[google_search], ) # ルートエージェント(Memory Bank 連携あり) root_agent = Agent( name="my_agent", model="gemini-2.5-flash", description="ユーザーの情報や好みを記憶するパーソナル業務アシスタント", instruction="""あなたはユーザーに寄り添うパーソナル業務アシスタントです。 過去のやり取りから得たユーザーの情報(名前・役職・好み・プロジェクトの状況など)を 積極的に活用して、パーソナライズされた応答をしてください。 対応できることの例: - 業務に関する調査・情報収集(search_agent を活用) - 資料作成・文章のサポート - プロジェクトの進捗整理や次のアクション提案 - ユーザーの好みに合わせた回答スタイルの維持 回答は日本語で、ユーザーの好みに合わせて丁寧に行ってください。""", tools=[ AgentTool(agent=search_agent), PreloadMemoryTool(), # Memory Bank から記憶を自動ロード ], after_agent_callback=save_to_memory_callback, # 応答後に記憶を保存 ) Google Cloud の認証と環境変数設定 # プロジェクト ID を環境変数にセット export PROJECT_ID=<プロジェクトID> # Google Cloud CLI での認証 gcloud auth login gcloud auth application-default login gcloud config set project $PROJECT_ID memory_bank_sample_agent/.env を作成します: cat <<EOF > memory_bank_sample_agent/.env GOOGLE_GENAI_USE_VERTEXAI=1 GOOGLE_CLOUD_PROJECT=$PROJECT_ID GOOGLE_CLOUD_LOCATION=us-central1 EOF Agent Runtime へのデプロイ uv run adk deploy agent_engine \ --project=$PROJECT_ID \ --region=us-central1 \ --display_name="Memory Bank Sample Agent" \ memory_bank_sample_agent デプロイが成功すると、Agent Runtime のリソース名が出力されます: ✅ Created agent engine: projects/<プロジェクト番号>/locations/us-central1/reasoningEngines/<ID> このリソース名を環境変数に保存しておきます: export RESOURCE_NAME=projects/<プロジェクト番号>/locations/us-central1/reasoningEngines/<ID> ⚠️ リージョンに注意 Memory Bank 機能は現在 us-central1 のみ対応しています。asia-northeast1(東京)では Permission denied on ‘locations/…’ エラーが発生するため、必ず us-central1 を指定してください。 実装のポイント解説 POINT 1 — PreloadMemoryTool が記憶を自動注入する エージェントの実行開始時に、Memory Bank からそのユーザーの記憶を取得してプロンプトに挿入します。開発者がプロンプト管理をしなくても、エージェントが「覚えている」状態を自動的に作り出してくれます。 POINT 2 — after_agent_callback で記憶を蓄積する callback_context.add_events_to_memory()呼ぶことで、会話の終わりに直近のやり取りを Memory Bank へ送信します。Memory Bank 側では Gemini が会話内容を分析し、保存すべき重要情報だけを抽出・蒸留して記憶として保存します。 POINT 3 — スライスで送信するイベントを絞る events[-5:-1]のように直近のイベントだけを送ることで、毎回の会話で重複なく最新のやり取りを蓄積できます。末尾の最終イベント(コールバック自体の呼び出し)は除外しています。 動作確認 初回セッション:ユーザー情報を伝える 最初のセッションでは、名前・役職・好みなどをエージェントに伝えます。 この会話終了後、after_agent_callback が呼ばれ、Memory Bank に記憶が保存されます。 Memory Bank への保存確認 Agent Platform のコンソールから Memory Bank の中身を確認できます。「 teraさんは AI 活用推進担当」「箇条書きを好む」「推進プロジェクトの内容」といった情報が記憶として抽出・保存されていることが確認できます。 新しいセッション:記憶の引き継ぎを確認 ADK Web UI で新しいセッションを開始し、再度話しかけてみます: 新しいセッションにもかかわらず名前を覚えており、前回伝えた箇条書きスタイルも維持され、プロジェクトの内容もしっかり引き継がれています。これが Memory Bank の力です。 まとめ 本記事では、AIエージェントの「記憶」の仕組みを State・Artifact・DB永続化・Memory Bank の4つで整理し、Google ADK を使って Memory Bank エージェントを実装しました。 今回のポイント AIエージェントの記憶は State / Artifact / DB永続化 / Memory Bank の4種類で使い分けるのがベストプラクティス Memory Bank は「生の会話ログを保存する」DB永続化とは異なり、LLM が重要情報を蒸留して保存するのが本質 ADK の PreloadMemoryTool と after_agent_callback を組み合わせることで、Memory Bank との連携をシンプルに実装できる Agent Platform の Memory Bank はカスタマイズも可能で、保存するトピックや埋め込みモデルを用途に合わせて調整できる Memory Bank が特に活きるシーン システムサポートでは、Google Cloudの導入や活用を支援しております。 Google Cloudを導入したい・導入したけど使いこなせていない…という方は、お気軽にご相談ください! Google Cloud 導入・活動支援に関するご相談はこちら 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 面白かった 面白くなかった 興味深かった 興味深くなかった 使ってみたい Author Tera 2024年4月に新卒入社、理系出身でAIエージェントやデータ分析の業務を行っています。趣味はテニスでスクールにも通っています。 Agent Development Kit Gemini Google Cloud Python Vertex AI 2026年7月17日 【Memory Bank】ユーザーとのやり取りや知識、実績を蓄積し、「成長・継承」できるエージェントを作りたい Category Google Cloud 前の記事を読む Gemini Live API × ADK で「AI 塾講師システム」を開発してみた Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2026年7月17日 Google Cloud 【Memory Bank】ユーザーとのやり取りや知識、実績を蓄積し、「成長・継承」できるエージェントを作りたい 2026年7月16日 Google Cloud Gemini Live API × ADK で「AI 塾講師システム」を開発してみた 2026年7月3日 イベント・セミナー 【参加無料】typeエンジニア転職フェア 出展のお知らせ(2026/7/11) HOME Google Cloud 【Memory Bank】ユーザーとのやり取りや知識、実績を蓄積し、「成長・継承」できるエージェントを作りたい