Share
Embed
Bedrock AgentCoreで解き放て! Strands Agentsで構築するマルチエージェントの実装Tips
ServerlessDays Tokyo 2025
https://serverless.connpass.com/event/362044/
Transcript
88 slides
-
1 KDDI Agile Development Center Corporation $ whoami 御⽥ 稔(みのるん)
@minorun365 テックエバンジェリスト KDDIアジャイル開発センター株式会社(KAG) クラウドや⽣成AIで内製開発を⾏いながら 技術の楽しさを広める活動をしています AWS Community Hero AWS Samurai 2023, 2024 2025 Japan AWS Top Engineer 2025 Japan AWS All Certs Engineer Qiita 2024 Top Contributor -
3 KDDI Agile Development Center Corporation # みのるんワールドツアー2025 千秋楽︕ ⽉
⽕ ⽔ ⽊ ⾦ ⼟ ⽇ 8/18 19 20 21 22 23 24 25 26 27 28 29 30 31 9/1 2 3 4 5 6 7 8 9 10 11 ★書籍校了 12 13 14 15 16 17 18 19 20 21 新潟 シアトル 横浜 ⼤阪 ⾚坂 岩⼿ 新宿 名古屋 横浜 -
10 KDDI Agile Development Center Corporation AIエージェントとは︖ AIを使った「なんか賢いアプリケーション」全般をAIエージェントと呼んでいます。 旅⾏の予約しといて 稟議資料の叩き作って
コード書いて、 プルリク出しといて 旅⾏予約AIエージェント 資料作成AIエージェント コーディングAIエージェント -
11 KDDI Agile Development Center Corporation AIエージェントとは︖ AIを使った「なんか賢いアプリケーション」全般をAIエージェントと呼んでいます。 旅⾏の予約しといて 稟議資料の叩き作って
旅⾏予約AIエージェント 資料作成AIエージェント コード書いて、 プルリク出しといて コーディングAIエージェント これが流⾏りすぎて、 AIエージェント=開発者が使うもの だと思われちゃってることも🥹 -
12 KDDI Agile Development Center Corporation コーディング以外のAIエージェントの例 KDDIの “本部⻑AI” こと「A-BOSS」
営業の提案資料を何度でもレビューしてくれる︕ AWS 資料をアップするだけ -
13 KDDI Agile Development Center Corporation LLM時代の「AIエージェント」の特徴 概ね以下の特徴をもつと⾔われている (Wang et
al. 2024) AIエージェント プロファイリング ⻑期記憶 計画&振り返り ツール実⾏ 役割を定義したり パーソナライズできる ⼈間のように⻑い期間の 記憶をうまく保持する ⽬的を達成するために 計画を⽴て適宜修正する テキスト⽣成だけでなく 様々な外部ツールを使える -
16 KDDI Agile Development Center Corporation なぜ「AIエージェント案件」は難しいのか︖ 概念が理解しづらく、そもそも発注側が「AIエージェント」の要件を出すに⾄りづらい • ⽣成AIで最も多い「AIで何かやらなきゃ」案件、どうしても発注担当者の技術知識
(RAGやファインチューニング等)に引っ張られた要件になりがち • エンジニア側の提案⼒も必要。顧客の潜在ニーズを察知して「その要件なら、 アプローチをこう変えればAIエージェントでうまく解決できますよ」と提案する必要がある -
17 KDDI Agile Development Center Corporation なぜ「AIエージェント案件」は難しいのか︖ 概念が理解しづらく、そもそも発注側が「AIエージェント」の要件を出すに⾄りづらい • ⽣成AIで最も多い「AIで何かやらなきゃ」案件、どうしても発注担当者の技術知識
(RAGやファインチューニング等)に引っ張られた要件になりがち • エンジニア側の提案⼒も必要。顧客の潜在ニーズを察知して「その要件なら、 アプローチをこう変えればAIエージェントでうまく解決できますよ」と提案する必要がある せっかく導⼊しても、UXを⼯夫しないと使われず放置される • AIアプリはチャットボットになりがち。「このフォームに何でも⼊れてください︕」だと、 多くのユーザーは何をしたらいいか分からない -
18 KDDI Agile Development Center Corporation なぜ「AIエージェント案件」は難しいのか︖ 概念が理解しづらく、そもそも発注側が「AIエージェント」の要件を出すに⾄りづらい • ⽣成AIで最も多い「AIで何かやらなきゃ」案件、どうしても発注担当者の技術知識
(RAGやファインチューニング等)に引っ張られた要件になりがち • エンジニア側の提案⼒も必要。顧客の潜在ニーズを察知して「その要件なら、 アプローチをこう変えればAIエージェントでうまく解決できますよ」と提案する必要がある せっかく導⼊しても、UXを⼯夫しないと使われず放置される • AIアプリはチャットボットになりがち。「このフォームに何でも⼊れてください︕」だと、 多くのユーザーは何をしたらいいか分からない • 開発前に業務を徹底分析する「サービスデザイン」と、⼩さいリリースを繰り返して ユーザーのフィードバックを素早く取り込むアプローチが効果的 -
22 KDDI Agile Development Center Corporation 私のプリセールス芸「Vibe商談」 この活動で気づいたポイント︓ • 実際に動くものを⾒せるまで、AIエージェントはパワポの世界にいる空想上の存在
• 裏でエージェントが何をしているか、ストリーミングで逐次表⽰するUXがめちゃ重要 すげぇ︕︕ これください localhost:30000 -
24 KDDI Agile Development Center Corporation AWSクラウド 必ず使うビルディングブロック「Amazon Bedrock」 AWSが提供する開発者向けの⽣成AIサービス。
⽣成AIモデルをサーバーレスで、API経由の従量課⾦で⼿軽に利⽤できる︕ アプリケーション サーバー Amazon Bedrock APIを叩くだけ アプリ利⽤者 -
25 KDDI Agile Development Center Corporation Bedrockを使って、AIエージェントを構築するには︖ Bedrock Agents Bedrock
AgentCore Strands Agents 初⼼者向け 本格⼊⾨セット GUIでAIエージェントを 簡単に作れる︕ デプロイも運⽤もAWSに おまかせ ⾃分で開発したエージェントを サーバーレスでデプロイ︕ 認証、ツール、可観測性など 必要な機能だけをアドオンできる Python⽤のフレームワーク 最⼩3⾏のシンプルなコードで AIエージェントが書ける︕ -
26 KDDI Agile Development Center Corporation Amazon Bedrock Agents 本格的なAIエージェントが、AWSマネジメントコンソールからGUIで簡単に作れる︕
AWS Cloud Webアプリ Amazon Bedrock エージェント Amazon Bedrock ナレッジベース アクショングループ (AWS Lambda) 頭脳となるLLM (Claudeなど) Web API (例︓カレンダー サービス) 議事録を⾒て 次回予定を カレンダーに 登録しといて︕ ⾏動計画を ⽴てる 「ツール」を使って 外部サービスを操作 社内データを RAGで検索 -
27 KDDI Agile Development Center Corporation Amazon Bedrock エージェントの作り⽅ コンソールの「エージェントビルダー」から簡単作成︕
Lambda関数は、Claudeに書くのを⼿伝ってもらおう。 LLMを選択 指⽰を⼊⼒ 動作テスト できる ツールやRAGなど、 持たせる「武器」を設定 -
28 KDDI Agile Development Center Corporation 「マルチエージェント」で⾃分だけのAIチームを作ろう︕ 仕事が複雑になると、1体のエージェントだけでは対応しきれない。複数体をコラボさせよう。 マネジメントコンソールから簡単にチームが作れる︕ 監督者
エージェント 稟議資料 作っといて︕ 協⼒者 エージェント1 協⼒者 エージェント2 調査担当と スライド担当で 分担だ︕ -
31 KDDI Agile Development Center Corporation 「かんたん」と「⾃由度」はトレードオフ︕ Bedrock Agentsのつらみ •
GUIは簡単だけど、何体もエージェント作るのがつらい︕ • IaCも⼀応対応してるけど、結構ハードル⾼め デプロイ -
32 KDDI Agile Development Center Corporation 「かんたん」と「⾃由度」はトレードオフ︕ Bedrock Agentsのつらみ •
GUIは簡単だけど、何体もエージェント作るのがつらい︕ • IaCも⼀応対応してるけど、結構ハードル⾼め • 新しいモデルが出ても、対応するまで時間がかかる • Bedrockのクォータに抵触すると即エラーで終了してしまう デプロイ LLM -
33 KDDI Agile Development Center Corporation 「かんたん」と「⾃由度」はトレードオフ︕ Bedrock Agentsのつらみ •
GUIは簡単だけど、何体もエージェント作るのがつらい︕ • IaCも⼀応対応してるけど、結構ハードル⾼め • 新しいモデルが出ても、対応するまで時間がかかる • Bedrockのクォータに抵触すると即エラーで終了してしまう • MCPに直接対応していない • マルチエージェントの構成に制限がある デプロイ LLM 応⽤ -
35 KDDI Agile Development Center Corporation ⼈気のAIエージェント開発⽤フレームワーク 定番の⽼舗、LangChainファミリー。 「グラフ」を描いてワークフローを構築 TypeScriptファーストの新星︕
Webアプリの延⻑でエージェントが書ける AWSが作ったPythonベースのSDK とにかくシンプルなので⼊⾨に最適 -
36 KDDI Agile Development Center Corporation 定番の⽼舗、LangChainファミリー。 「グラフ」を描いてワークフローを構築 TypeScriptファーストの新星︕ Webアプリの延⻑でエージェントが書ける
AWSが作ったPythonベースのSDK とにかくシンプルなので⼊⾨に最適 ⼈気のAIエージェント開発⽤フレームワーク もはや、AIエージェント開発は データサイエンティストがNotebookで ポチポチする難しそうなものではありません。 僕らのような普通のWebエンジニアが アプリのバックエンドの⼀部として ⼿軽に組み込める武器のひとつなのです -
38 KDDI Agile Development Center Corporation AWS発のOSSフレームワーク「Strands Agents」 なんと最⼩3⾏のPythonコードでAIエージェントが書ける︕ 有名な他のフレームワークと⽐べても、とにかくシンプルで開発しやすいのが特徴。
Amazon Q Developerなど、 AWSの商⽤サービスにもStrandsが使われている 3行でAIエージェ ントを書いて、 同僚を怖がらせ ましょう! -
39 KDDI Agile Development Center Corporation ツール モデル Strands =「より⽷」
「モデル」と「ツール」をガッチャンコするのがStrandsの思想。 少し前はLLMが賢くなかったので、 複雑なワークフローを書いて縛る必要があった。 今はLLMが優秀なので、モデルとツールだけ指定すれば AIエージェント⾃体はシンプルに書ける︕ 新しいフレームワークだからこその利点と⾔える。 -
41 KDDI Agile Development Center Corporation デフォルトでストリーミング&過負荷リトライに対応︕ モデルを指定するだけでストリーミング出⼒に対応。 BedrockがレートリミットでHTTP 429エラーを吐いても、⾃動でリトライし続けてくれる。
ConverseStream APIで ストリーミングレスポンス HTTP 429エラー時は エクスポネンシャルバックオフ -
47 KDDI Agile Development Center Corporation Agent as Tools の例
いわゆるSupervisorパターンの実装。 親エージェントが⼦エージェントを ツールとして呼び出す Agent as Tools -
51 KDDI Agile Development Center Corporation A2A on Strandsの実装例 リモートエージェントをTool
Useで呼べる専⽤クラスが便利︕ A2A A2A クライアント A2A サーバー -
55 KDDI Agile Development Center Corporation Bedrock AgentCoreとは︖ AIエージェント専⽤の便利パーツ集︕ •
ランタイム(サーバーレス基盤) • メモリー(記憶管理) • ゲートウェイ(ツール集約) • アイデンティティ(認証認可) • オブザーバビリティ(運⽤監視) などなど… ⾃分の好きなフレームワークに、 APIで欲しい機能だけ導⼊可能︕ -
56 KDDI Agile Development Center Corporation 好きなフレームワークで開発したAIエージェントを、サーバーレス環境にデプロイできる︕ いわば「AIエージェント専⽤コンテナLambda」 中⼼となるプリミティブ「ランタイム」 AWS
AgentCore ランタイム デプロイ AgentCore SDKで APIサーバー化 -
58 KDDI Agile Development Center Corporation AIに記憶をもたせる「メモリー」 短期記憶もしくは⻑期記憶をAPIでマネージド提供。 ようはDynamoDBとかベクトルDB的なやつを、よしなに管理してくれる。しかもメトリクス付き︕ 短期記憶
⻑期記憶 その話、 詳しく教えて︖ 先⽉と同じ作業を やってほしいんだけど 過去の会話の 要約 呼び出し 呼び出し -
59 KDDI Agile Development Center Corporation AIに記憶をもたせる「メモリー」 AgentCore SDKを使ってメモリーを操作できる。 Strandsでは、短期記憶をHooksで制御したり、
AgentCoreMemoryToolProviderで⻑期記憶を呼ぶと便利。 その話、 詳しく教えて︖ 呼び出し イベントの保存 イベントの 呼び出し 短期記憶の例 -
60 KDDI Agile Development Center Corporation SaaSやAPIを簡単にツール化できる「ゲートウェイ」 AIエージェント⽤のツールを束ねて、ひとつのMCPサーバーにまとめてくれる︕ ⽤意されたSaaSや、Lambda関数、⼀般のWeb APIなどに対応。
AgentCore ゲートウェイ Lambda関数 MCPサーバーとして 呼び出せる Confluenceに 議事録をまとめて 組み込みのSaaSプロバイダー -
63 KDDI Agile Development Center Corporation エージェントをとりまく権限制御ができる「アイデンティティ」 ユーザー / エージェント
/ ゲートウェイ間の認証認可を制御してくれるAPI。 AgentCore ゲートウェイ インバウンド の認証/認可 アウトバウンド の認可 インバウンド の認証/認可 ユーザー エージェント AgentCore アイデンティティ アウトバウンド の認可 SaaS -
64 KDDI Agile Development Center Corporation エージェントをとりまく権限制御ができる「アイデンティティ」 認可のアクセストークンが必要な関数に、AgentCore SDKのデコレーターを付けるだけ︕ デコレーターで
認可を要求 AgentCore アイデンティティ ゲート ウェイ エージェント SaaS -
65 KDDI Agile Development Center Corporation ⾼度な武器を提供してくれる「ツール」 AWSのインフラを活かした、⾼度なツールをマネージド提供。 まずは「ブラウザー」と「コードインタープリター」がローンチ。 ブラウザー
コード インタープリター Webブラウザを 操作できる サンドボックスで コードを実⾏できる -
68 KDDI Agile Development Center Corporation フロントエンドの選択肢 初⼼者向け 本格UI開発に⼊⾨ Pythonで簡単に綺麗なUIが書ける︕
JSが苦⼿なバックエンドエンジニアは ここから始めてみよう Next.jsやReactなどのリポジトリを 紐づけるだけで⾃動デプロイ︕ Gen2でめっちゃ進化しました -
73 KDDI Agile Development Center Corporation AIエージェントのUXは、ストリーミング表⽰が命︕ 「思考中」表⽰でユーザーを安⼼させる テキストは⽣成と同時に逐次表⽰して待たせない ツールやサブエージェントの呼び出しは
イベントとして分かりやすく表⽰ 呼び出されたサブエージェントの⾏動内容も リアルタイムで画⾯に反映する -
74 KDDI Agile Development Center Corporation うまく実装するコツ • イベントを検知しよう エージェントをストリーミングモードで呼び出して、もしSSEのレスポンスオブジェクトに
「contentBlockStart」があれば、その種別をyield(出⼒)してフロントエンドに渡す。 -
75 KDDI Agile Development Center Corporation うまく実装するコツ • イベントを検知しよう エージェントをストリーミングモードで呼び出して、もしSSEのレスポンスオブジェクトに
「contentBlockStart」があれば、その種別をyield(出⼒)してフロントエンドに渡す。 • 応答テキストを逐次表⽰しよう イベントと同様にSSEレスポンスを条件判定して、もし「contentBlockDelta」があれば、 その内容(差分コンテンツ)をyieldしてフロントエンドに渡す。 -
76 KDDI Agile Development Center Corporation うまく実装するコツ • イベントを検知しよう エージェントをストリーミングモードで呼び出して、もしSSEのレスポンスオブジェクトに
「contentBlockStart」があれば、その種別をyield(出⼒)してフロントエンドに渡す。 • 応答テキストを逐次表⽰しよう イベントと同様にSSEレスポンスを条件判定して、もし「contentBlockDelta」があれば、 その内容(差分コンテンツ)をyieldしてフロントエンドに渡す。 • サブエージェントもイベント検知&ストリーミングしよう サブエージェントごとにキューを張り、すべてのキューを親のストリームにマージすると リアルタイムで全員の動きを逐次表⽰することができる。