Slide 1

Slide 1 text

個人的によく知らなかった AgentCore Memoryの機能を中心に深掘りしてみた おはよう! 神野 雄大(Jinno Yudai/@yjinn448208) 3/13(金)JAWS-UG朝会

Slide 2

Slide 2 text

自己紹介 2

Slide 3

Slide 3 text

自己紹介 3 簡単な自己紹介です! 名前 神野 雄大(Jinno Yudai)/@yjinn448208 最近X始めました! 所属 クラスメソッド株式会社 クラウド事業本部 コンサルティング部 AIソリューションアーキテクト 資格 ● Japan All AWS Top Engineers 2025 推しの サービス ブログはこのアイ コンで書いていま す! ラ・ムーとチーズ ナンが好きです! ● Amazon Bedrock AgentCore (自称日本一ブログを書いています)

Slide 4

Slide 4 text

対象と目的 4 今日はAgentCoreを簡単に振り返りながら、AgentCoreの一機能であるMemoryの基本 から個人的にあまり知らなかった機能を深掘りすると言った形でお話しできればと思っ ています! 対象 対象と目的 ● Amazon Bedrock AgentCore Memoryをもっと知りたい方 目的 ● Amazon Bedrock AgentCore Memoryの色々な機能を知ってもらって いつか活用していただく!!!

Slide 5

Slide 5 text

Amazon Bedrock AgentCoreについて 5

Slide 6

Slide 6 text

Amazon Bedrock AgentCoreはAIエージェントを展開・運用するために最適なマネージ ドサービスとなります。マネージドサービスによりインフラ管理を排除し、開発者が エージェントのロジック構築に集中できる環境を提供します。 Amazon Bedrock AgentCore とは 6 Amazon Bedrock AgentCore ● AIエージェントのホスティング ○ Strands Agents、LangGraphなど多様なエージェ ントフレームワークに対応 ● 便利なマネージドサービス ○ AIエージェントを使用する上で認証・ツール連携な ど便利な機能がマネージドサービスとして提供 (IdentityやMemoryなど) 特徴

Slide 7

Slide 7 text

Amazon Bedrock AgentCoreはデプロイするためのRuntime機能をベースに認証機能 IdentityなどAIエージェントを開発する上で便利な機能が備わっています。 Amazon Bedrock AgentCoreが持つ機能群 7 ● Runtime:AIエージェントの実行環境 ● Identity:認証機能 ● Gateway:MCPツールの集約機能、外部サービスのMCPツール化機能 ● Memory:記憶機能 ● Observability:AIエージェントの挙動を可視化 ● Evaluations:AIエージェントの評価機能(Preview) ● Built in tools ○ Code Interpreter:コード実行環境 ○ Browser:ブラウザ実行環境

Slide 8

Slide 8 text

Amazon Bedrock AgentCoreはRuntime、Identity、Memory、Gateway、Built-in Tools、Observability、Evaluationsというサービスが、それぞれ本番運用の具体的な課 題を解決します。組み合わせても使用できる柔軟性を持っており、ニーズに応じた最適 な構成を選択できます。 Amazon Bedrock AgentCoreの連携イメージ 8 Amazon Bedrock AgentCore Identity Gateway Built in tools Memory Observability Evaluations Runtime Identity 今日の主役!!!

Slide 9

Slide 9 text

Amazon Bedrock AgentCore Memory 9

Slide 10

Slide 10 text

AIエージェントに「記憶」を持たせることで、より賢く、よりパーソナライズされた対 応が可能になります。AgentCore Memory機能は、短期記憶(会話履歴)と長期記憶 (重要な情報の抽出)の両方をマネージドで提供します。開発者は複雑な記憶管理の実 装に悩むことなく、エージェントに学習能力と文脈理解能力を付与できます。 Amazon Bedrock AgentCore Memory 10 Amazon Bedrock AgentCore ユーザー Strands Agents Bedrock LLM エージェントに質問 AIエージェント Bedrockを使用 Memory ● 会話履歴 ● サマリー ● 客観的事実

Slide 11

Slide 11 text

Memoryは大きく分けて短期記憶と長期記憶の2種類の記憶を管理できます。 短期記憶と長期記憶 11 短期記憶 ● セッション中の会話履歴を保持 ● 最大365日まで保存可能 ● リアルタイムでアクセス可能 長期記憶 ● 短期記憶から自動的に戦略に基づく情報を抽出し ベクトルで保存 ● 抽出するための4つのビルトイン戦略およびカス タムの戦略を設定可能 ● ビルトインの戦略は4つ提供されている ○ Semantic Memory Strategy ■ 知識や事実を保存 ○ UserPreference Strategy ■ ユーザーの好みや傾向を保存 ○ Summary Memory Strategy ■ 会話のサマリーを保存 ○ Episodic Memory Strategy ■ やり取りから教訓を保存 自動抽出

Slide 12

Slide 12 text

短期記憶はユーザー毎にactor_id、セッション毎にsession_idがビルトインの属性で存 在するので簡単にユーザー毎の会話履歴を保持可能となります。 記憶構造のイメージ 12 memory_id:memory-001 actor_id:user-001 session_id:sess ion_001 Q:xxxについて 教えて A:YYY actor_id:user-002 session_id:sess ion_002 Q:zzzについて 教えて A:TTT session_id:sess ion_001 Q:DDDについ て教えて A:EEE session_id:sess ion_002 Q:FFFについて 教えて A:XXX

Slide 13

Slide 13 text

短期記憶の単位はChatGPTやCluadeなどの会話履歴タブがイメージしやすいです。 記憶構造のイメージ 13 actor_id:ユーザーの識別の単位 session_id:一連の会話履歴の単位

Slide 14

Slide 14 text

Memoryは便利な機能なので簡単に使いたいですよね・・・?? Strands AgentsでMemoryは簡単に使えます! 14

Slide 15

Slide 15 text

Strands AgentsにSession Managerといった便利な機能があります。 この機能を活用することで、シームレスにMemoryを利用できて実装が簡単です。  Amazon Bedrock AgentCore MemoryとStrands Agentsとの連携 15 ● MemoryID、SessionID、ActorIDの設 定をしてセッションマネージャーを作成 し、Agentの引数に設定すればMemory と連携可能

Slide 16

Slide 16 text

長期記憶の連携も簡単に設定できます。NameSpaceを設定すればOKです。 Amazon Bedrock AgentCore MemoryとStrands Agentsとの連携 16 ● Configの設定に長期記憶戦略の設定を行 えば使用可能 ● NameSpaceを設定 ● Episodic Memoryも設定可能 ● 複数の長期記憶戦略の設定も可能

Slide 17

Slide 17 text

ここまでは一度は軽く聞いたことがあるトピックかと思います。 ここからは個人的にあまり馴染みがなかった機能をさらっていきま す。 17

Slide 18

Slide 18 text

短期記憶の保存形式について 18

Slide 19

Slide 19 text

メモリーは会話形式で保存するイメージが強いですが、Blob形式もサポートしていま す。画像やドキュメント、または状態をJSON形式などで保存することも可能です。 記憶構造のイメージ 19 会話形式 Blob形式 こんにちは、今日はい い天気ですね。 はい、とてもいい天気 ですね! 一連のやり取りとそれぞれのロール を1つのイベントとして保存 ユーザー AIエージェント ドキュメント 下記ドキュメントや画 像を読み取って ユーザー 画像 AIエージェント 読み取って文字起こし します。完了しまし た。 ドキュメントや画像、状態も保存可能 状態

Slide 20

Slide 20 text

もちろんどちらか一方ということはなく併用も可能です!注意点としては、Strands の Session ManagerはBlobは対応していない、また長期記憶の抽出対象にもならない点は 注意です。 記憶構造のイメージ 20 ドキュメント 議事録を添付します。 ユーザー 画像 AIエージェント 受け取りました。 会話形式とBlob形式のファイルを併用 して保存できる 短期記憶のイメージ 種類:会話形式 ロール:USER 内容:議事録を添付します。 種類:会話形式 ロール:ASSISTAMT 内容:受け取りました。 種類:Blob形式 ファイル名:meeting.md Data:Base64形式で保存 短期記憶 として保存

Slide 21

Slide 21 text

会話の分岐機能 21

Slide 22

Slide 22 text

短期記憶はある地点から分岐して記憶を持たせることが可能です。Claude Codeでいう とforkみたいな機能が実現できます。「さっきの質問をやり直したい」を履歴を壊さず に実現することができます。後はマルチエージェントが元の質問に対して複数の回答を 考える際に並行で考えたい際などでしょうか。 会話の分岐機能 22 ユーザー:カレーの材料を買いたい! 何が必要かな? AI:じゃいがも、人参、玉ねぎ、豚肉、カレー ルーですね。 ユーザー:Aスーパーだといくらぐらいですか? AI:1800円ぐらいです。いいお値段ですね。 ユーザー:ラ・ムーだといくらぐらいですか? AI:800円ぐらいです。安いですね。 ワイ あれ、ラ・ムーの方が安くないか?? 元の会話履歴は維持しつつ質問やり直し たいぞ! 元の質問を維持しつつ分岐

Slide 23

Slide 23 text

実装は下記のように下記のように行います。AgentCore SDKを使えば難しいことはな く、ブランチの作成および特定のブランチの記憶を取得することも可能です。 こちらも Strands のSession Managerでは実現できない機能なので注意が必要です。 会話の分岐機能 23 ブランチ作成時 特定のブランチの記憶を取得

Slide 24

Slide 24 text

長期記憶の戦略について整理 24

Slide 25

Slide 25 text

長期記憶は、短期記憶から自動的に重要な情報を抽出・統合する機能です。抽出された インサイトはベクトルデータとして保存され、セマンティック検索により関連性の高い 記憶を効率的に取得できます。 短期記憶から長期記憶への抽出イメージ 25 AIエージェント 短期記憶 りんごについて教えて 大好きなんです。 質問履歴を記録 長期記憶 自動的にベクトル化して抽出 AIエージェント 私の好みを教えて UserPreference Memory Strategyを設定 好みについてセ マンティック検 索 あなたはりんごが好きですね。

Slide 26

Slide 26 text

短期記憶から長期記憶への抽出はStrategyを設定することで簡単に設定できます。 actor_idやsession_idでNamespaceを作成して、ユーザー単位やセッション単位など、 どういった単位で抽出するかを設定可能です。 長期記憶の設定イメージ 26 ● UserPreferenceMemoryStrategy ○ Namespace : /retail-agent/{actor_id}/preferences ○ 特定の顧客の好みを抽出 ● SemanticMemoryStrategy ○ Namespace : /retail-agent/product-knowledge ○ ユーザーがアクセスできる共有製品情報を抽出 ● SummaryMemoryStrategy ○ Namespace : /support-agent/{actor_id}/case-summaries/{session_id} ○ 過去のサポートケースの概要やサマリーを抽出 使用例のイメージ

Slide 27

Slide 27 text

長期記憶には戦略がもう1つあります。 直近のre:Inventで発表されたアップデートEpisode記憶戦略です。 27

Slide 28

Slide 28 text

Episodic Memory 28 新しい長期記憶戦略が追加されました。エピソード記憶といって、今までのやり取りか らAIエージェントがユーザーのリクエストを効果的に満たすためのナレッジや教訓に昇 華できる面白い戦略です。2段階で抽出が行われるのが他の長期記憶戦略とは異なる特徴 となっています。 ConsolidationとReflectionの2段階で抽出を実現

Slide 29

Slide 29 text

Episodic Memory 29 より具体的に長期記憶への保存プロセスを確認してみます。短期記憶のやり取りからエ ピソードを抽出し、構造化してさらに複数のエピソードからも振り返りを行い、別途構 造化して記憶されるのが特徴になっています。 Extraction(抽出) Consolidation(統合) Reflection(振り返り) インタラクションを分析 し、エピソードの完了を自 動で判定。完了時点でのレ コードを生成 関連イベントを構造化され た1つの記録に統合 複数のエピソードを横断分 析し、成功パターンや失敗 からの解決策など、広範囲 な洞察を抽出 長期記憶 短期記憶 Episode Memoryとして抽出 Reflectionとして抽出 Episode Memory戦略の 特徴

Slide 30

Slide 30 text

ここまでは結構ご存じの方も多いと思います。 カスタムで戦略を作る機能が実はございます。 30

Slide 31

Slide 31 text

組み込み戦略のプロンプトやモデルをカスタマイズする「オーバーライド」と、戦略を 一切使わず自分で記憶レコードを直接操作する「セルフ管理」の2種類があります。オー バーライドはマネージドの延長ですが、セルフ管理は抽出ロジックを完全にアプリ側で 制御します マネージドな組み込み戦略以外でのカスタム戦略 31 オーバーライド マネージド戦略のパイプラインはそのま ま利用。抽出・統合のプロンプトとモデ ルを差し替えできる。 セルフ管理 パイプラインのトリガーから抽出ロジッ クまですべてを自前で制御する。 マネージドな組み込み戦略以外でのカスタム戦略

Slide 32

Slide 32 text

組み込み戦略のパイプラインをそのまま利用しつつ、 各ステップのプロンプトとモデル を差し替えできます。 カスタム戦略:オーバーライド 32 Extraction(抽出) Consolidation(統合) Reflection(振り返り) 変更可能 - モデル - プロンプト 長期記憶 短期記憶 抽出 抽出 変更可能 - モデル - プロンプト 変更可能 - モデル - プロンプト

Slide 33

Slide 33 text

戦略によってオーバーライドできるステップが異なります。 オーバーライド 33 戦略 Extraction Consolidation Reflection Semantic ✔ ✔ Summary ✔ User Preference ✔ ✔ Episodic ✔ ✔ ✔ オーバーライド可能な一覧

Slide 34

Slide 34 text

オーバーライドはコンソールからも設定可能で、抽出モデルやプロンプトテンプレート も上書きできます。それぞれの戦略でどんなプロンプトテンプレートが設定されている か見てみるのは面白いです。 オーバーライド 34 好きなモデルを 選択可能 デフォルトのプ ロンプトから変 更可能

Slide 35

Slide 35 text

マネージドな組み込み戦略は、裏でLLMがシステムプロンプトに従って動いています。 各戦略ごとに 「指示」と「出力スキーマ」を持つプロンプトが定義されており、イベン ト保存後に非同期でLLMが記憶抽出を実行します。 小ネタ:実は組み込みの戦略ではLLMが裏で動いている。 35 比較項目 組み込みの戦略 オーバーライドによるカスタム戦略 モデル AWS側で選定・管理(指定不可) 任意のモデルを使用可能 実行方式 イベント保存後に非同期でLLMが記憶抽 出を実行 組み込みの戦略と同様 リージョン 使用するリージョンによってクロスリー ジョン推論が実行される ※東京リージョンなら、ソウル、ムンバイ、シンガ ポール、シドニーでルーティングされる 使用するモデルやAgentCoreのリージョン に依存 コスト サービス利用料に含まれる LLM利用料は別途課金が発生 マネージドな組み込みとの比較表

Slide 36

Slide 36 text

マネージド戦略のパイプラインを一切使わず、トリガー・抽出・統合・保存をすべて自 前で制御します。AgentCoreはトリガー検知とペイロード配信までを担当し、そこから 先は自分のLambda 等で処理します。 完全セルフ抽出 36 AgentCoreが担当する部分 短期記憶 トリガー検知 トリガーの設定は自分で実施 メッセージ、トークン、アイドル秒数単位 をトリガーとして設定可能 上記のどれか1つが閾値に達したら発火 自前で実装する部分 ユーザー XXX 保存 SNS S3 Lambdaなど メッセージが格納 S3のパスやメモリー IDが連携される 長期記憶 Bedrock SNSやS3のメッセージを活用して、自前の 処理で、長期記憶を登録。 Bedrockを活用して登録内容を作らせるの も手として考えられる。

Slide 37

Slide 37 text

登録は下記のような処理をLambda関数などで実施するイメージです。シンプルに長期記 憶として保存したいメッセージを登録します。形式はtextのみだけとなります。 完全セルフ抽出 37

Slide 38

Slide 38 text

おまけ:Session Managerでの長期記憶の取り扱い 38

Slide 39

Slide 39 text

Strands AgentsのSession Managerで取得した長期記憶はユーザープロンプトに埋め込 まれます。下記のようなイメージです。 Session Managerで取得した長期記憶の形式 39 タグで初回に取得した長 期記憶がユーザープロンプトとして設定さ れている

Slide 40

Slide 40 text

先述したように機械的にユーザープロンプトに埋め込まれるので、処理を実装しなくて 良いので便利な反面、たまに変に長期記憶が最初から記憶されて悪さするケースもあっ たので、シチュエーションによって長期記憶を活用したいケースは、そのシチュエー ションになって初めて取得するようなツールとして活用するのも手かなと感じました。 個人的な所感 40 ユーザーの好みが必要であると判 断された場合のみ長期記憶を取得

Slide 41

Slide 41 text

ご清聴ありがとうございました! ちょっとニッチな話だったかもしれませんが、AgentCore Memoryも深掘りしてみると 色々な機能があって面白いですね。 少しでも触ってみようと思う機能や皆様の知見になりましたら幸いです! ありがとうございましたー!!! ありがとうございました 41

Slide 42

Slide 42 text

Thank you!