10月2日、AWSが「Building ambient agents with Amazon Bedrock AgentCore: From event-driven signals to human-in-the-loop workflows」と題した記事を公開した。S3にファイルが届くたびに人が気づいて手動でトリアージする——そのルーティンをなくすのがこの記事の主題だ。Amazon Bedrock AgentCoreを使ってイベント駆動型の「アンビエントエージェント」を構築し、人間の承認ステップを組み込むワークフローの実装方法が、サンプルコードとアーキテクチャ図を交えて解説されている。
「アンビエントエージェント」とは何か
アンビエントエージェント(Ambient Agent)とは、ユーザーがチャット画面でプロンプトを打つのを待つのではなく、S3アップロードやスケジュールタスクといったシステムイベントを契機に自律的に動くエージェントを指す。LangChainも同様のパラダイムを提唱しており、「人間が能動的に操作しなくても、環境の変化に反応して動き続けるエージェント」という設計思想が業界全体で注目されている。従来のチャットボット型AIが「呼ばれたら答える」受動的なモデルであるのに対し、アンビエントエージェントはバックグラウンドで常時待機し、イベントを検知した瞬間に処理を開始する。ファイル監視・定期バッチ・Webhookトリガーといった用途と特に相性がよく、人間の介在コストを大幅に削減できる点がエンタープライズ導入の文脈で評価されている。
処理の流れは以下のようになる:
Event → Signal → Agent → [Optional human interaction] → Action
チャットベースのエージェントとの最大の違いはトリガーが人間ではなくイベントである点、そして複数のエージェントが並行して動作できる点だ。ただし、完全自律ではない。承認・確認が必要な場面では人間に割り込む設計になっており、これが本番運用における信頼性の担保となっている。
実装の核心:ask_humanツール1本で実現するHITL
この実装で特に面白いのは、Human-in-the-loop(HITL)の仕組みをたった1つのツール(ask_human)で統一している点だ。
エージェントが人間に問いかける場面は主に4パターンある:
| パターン | 内容 |
|---|---|
| Notify | 結果を報告するだけ |
| Question | 曖昧な点の確認を求める |
| Review | アクションの承認/却下/修正を要求 |
| Error | 失敗を記録し、リトライを促す |
これらはすべて同一のレスポンスエンベロープで処理される。statusフィールドがcompleted/interrupted/errorのいずれかを返し、対応するフィールドにresult/question/errorが入る。プラットフォーム側のコードパスは1本だけ、というシンプルな設計だ。
エージェントがinterruptedを返すと、ジョブはinterruptedステータスに移行し、ReactフロントエンドのJobsページの「Interrupted」タブに警告マーカー付きで表示される。ユーザーは複数のチャット画面を監視する必要がなく、1つのJobsビューで全エージェントの状態を把握できる。
アーキテクチャ:フルサーバーレス構成
主要コンポーネントは以下のとおり:
- Amazon S3:ファイルアップロードのシグナルエントリポイント
- Amazon SQS:APIリクエストとエージェント呼び出しを非同期に分離。DLQ(デッドレターキュー)で失敗メッセージを補足
- AWS Lambda(3本のパイプライン関数):Signal Processor/Job Execution/Scheduler
- Amazon Bedrock AgentCore Runtime:コンテナベースでエージェントを実行。長時間ジョブをサポート
- Amazon DynamoDB:ジョブレコード、シグナル定義、会話履歴を管理
- React フロントエンド(S3 + CloudFront配信):ジョブ監視・承認操作のUI
エージェントの各ターンの上限はLambdaの15分タイムアウトに設定されており、シグナル→エージェント→HITLの一連のフローをカバーするのに十分な余裕がある。
シグナル設定:autoExecuteフラグで自律度を制御
シグナルの挙動はautoExecuteフラグ1つで切り替えられる:
autoExecute: false(デフォルト):ジョブがJobsページにidleステータスで積まれ、人間がレビュー後に実行する。未知の入力や高リスクなツールが絡む場面向け- **
autoExecute: true**:シグナル受信直後にジョブキューへ投入され、エージェントが即時実行。人間への割り込みはask_human呼び出し時のみ
現在リファレンス実装として提供されているシグナルソースはS3ファイルアップロードとスケジュール実行の2種類。APIウェブフック、DynamoDBストリームなどは拡張ポイントとして設計されており、新規Lambdaハンドラーを追加することで対応できる。
前提条件と使用モデル
デプロイにはAWS CDK v2、Docker、Python 3.11以上、Node.js 18以上が必要。使用モデルはAnthropic Claude Sonnet 4.5(Amazon Bedrockで利用可能な最新Claudeシリーズの一つ。設定1行で変更可)で、us-east-1リージョンがデフォルトとなっている。Bedrockで当該モデルへのアクセスを事前に有効化しておく必要がある(手順はこちら)。なお、Amazon Bedrockで利用可能なモデルの最新一覧は公式ドキュメントで確認できる。
詳細はBuilding ambient agents with Amazon Bedrock AgentCore: From event-driven signals to human-in-the-loop workflowsを参照していただきたい。