Slide 1

Slide 1 text

Ambient Agent on AWS! 2025/05/20 (火) JAWS-UG東京 ランチタイムLT会 #23 福地開

Slide 2

Slide 2 text

Who am I ? 福地 開 (ふくち はるき) @har1101mony 所属:NECソリューションイノベータ株式会社 年次:3年目 業務:インフラエンジニア(AWS) 活動:ITなんでも勉強会「つながりテック」 運営 表彰:AWS Community Builders(AI Engineering)

Slide 3

Slide 3 text

Ambient Agentとは?

Slide 4

Slide 4 text

Ambient Agentとは? ◆よくあるAIエージェント(チャットボットなど) • 人間からのメッセージをトリガーに、エージェントが動作する • 一度に1つの会話しかできない

Slide 5

Slide 5 text

Ambient Agentとは? ◆よくあるAIエージェント(チャットボットなど) • 人間からのメッセージをトリガーに、エージェントが動作する • 一度に1つの会話しかできない ◆Ambient Agent • イベント駆動・スケジュール駆動で自動的にエージェントが動作 →周囲の環境(Ambient)により一層溶け込むAIエージェント • 一度に複数のタスクを依頼することが可能

Slide 6

Slide 6 text

Ambient Agentのユースケースを考える ◆生徒の評価を作成してくれる、教師向けAmbient Agent • 小学校教師(特に担任)は自クラスの生徒全員分の評価を行う • その際、一人あたり数百文字の評価文章も作成する必要がある • さらに学期末ごとに評価を実施する必要がある →30人×400文字×3学期=36,000文字!?

Slide 7

Slide 7 text

Ambient Agentのユースケースを考える ◆生徒の評価を作成してくれる、教師向けAmbient Agent • 小学校教師(特に担任)は自クラスの生徒全員分の評価を行う • その際、一人あたり数百文字の評価文章も作成する必要がある • さらに学期末ごとに評価を実施する必要がある →30人×400文字×3学期=36,000文字!? ◆その評価のたたき台を作成するエージェントがあれば良さそう! • 毎回教師が「この生徒の評価を作成して」と実行するのは大変 • イベント駆動で、自動的にエージェントが評価を作成しておく • 生成された評価文章を元に、教師が手直し(Human in the loopの一種?) • 教師に限らず、色んな管理者向けにも転用できる(かも?)

Slide 8

Slide 8 text

AWS上で簡単なAmbient Agentを構築してみる ◆アーキテクチャ • EventBridgeをトリガーに、Lambdaを呼び出す • Lambda内部でBedrock Agentを呼び出す • Bedrock AgentがDynamoDBから該当生徒の情報を取得し、評価文を作成 • LambdaがDynamoDBに評価文を格納 • 教師は生成された評価を参照して、手直し

Slide 9

Slide 9 text

実装詳細 ◆EventBridge • 出席番号、評価対象期間をJSON形式で入力 • この出席番号を起点に、Lambda側で出席番号をループ処理するような形 • 現状は番号と期間をベタ書きしている。本当はここも良しなにやってほしい

Slide 10

Slide 10 text

実装詳細 ◆Lambda(エージェントを呼び出す) • 渡された出席番号を起点に、ループ処理を実装 • 10000→10001→10002…という流れで順々に評価を作成 • 連続してBedrock Agentを呼び出しすぎるとToo Many Requestsエラーが 起こりやすいので注意(後述)

Slide 11

Slide 11 text

実装詳細 ◆Bedrock Agent • DynamoDBにアクセスするアクショングループを実装し、データ取得 • 指導要領を元に評価基準を作成 • 作成した評価は、エージェント呼び出しLambdaへ返す →エージェントによる評価データ格納はしない

Slide 12

Slide 12 text

実装詳細 ◆Lambda(データを格納する) • 渡された出席番号を起点に、ループ処理を実装 • 10000→10001→10002…という流れで順々に評価を作成 • 連続してBedrock Agentを呼び出しすぎるとToo Many Requestsエラーが 起こりやすいので注意 • DynamoDBへデータを格納し、ユーザーへ通知する →AIエージェントの役割をできるだけ絞っておきたい

Slide 13

Slide 13 text

考慮ポイント1:エラーハンドリング ◆エージェントはバックエンドで自動的に動く ◆そのため、エラーに気づきにくい ◆エラーが起こった時にどうするか?を設計に入れておくことが重要 • SNSなどで通知する • 自動で再実行してくれるように仕込んでおく • (例)EventBridgeの再試行ポリシーやDLQを利用する or Lambda側で処理

Slide 14

Slide 14 text

考慮ポイント2:1処理のエージェント呼び出し回数 ◆このエージェントは一回の実行で約30秒かかる ◆Lambdaの実行可能時間は最大15分 ◆長くなればなるほど、Bedrock側のエラーの確率が上がる ◆細かく分けすぎるとEventBridgeを膨大に作成する必要がある • 入力(出席番号、期間)をペイロードにベタ書きしているのが良くない? • 他に良い方法を模索中…

Slide 15

Slide 15 text

考慮ポイント3:データ格納方法 ◆正確な評価のためには、できるだけ詳細なデータが必要 ◆そのデータは誰がどうやって入力する? • 生徒がやると、粒度がまちまちになるかも • 教師がやると、データの入力が負担になる ◆解決案としては… • 選択式・定型文での入力 • 自然言語の入力をAIが構造化 • 音声でデータ入力 ◆データの入力もAIエージェントが行ってくれるのが理想

Slide 16

Slide 16 text

◆AWS上で簡易的なAmbient Agentを構築可能です! ◆Lambda+Bedrock Agentだけでなく、 Step Functions+Bedrockでも同じようなことができる (しかも実行時間の制限がないはず!) ◆裏側で勝手に動いてくれる優秀なAmbient Agentを作りましょう! 良いものができたらぜひ教えて下さい! まとめ