- 公開日
- 最終更新日
【Bedrock AgentCore】ループエンジニアリングについて考えてみる
この記事を共有する
目次
はじめに
皆さんこんにちは!パーソル&サーバーワークスの小泉です。
これまでの記事で、AgentCoreのEvaluation・Recommendation・A/Bテスト・Insightsを使ってプロンプトを改善する方法を紹介してきました。
今回はこの改善サイクルを Step Functions で完全自動化し、人間がゴールを定義するだけでプロンプトが自動的に改善され続ける仕組みを作ってみました。
ループエンジニアリングとは
人によって、解釈が微妙にちがう部分があると思いますが、ループエンジニアリングは、AIエージェントの品質改善サイクルを自動化された反復プロセスとして設計する手法と考えています
従来のプロンプトエンジニアリング
人間がプロンプトを書く → 試す → 主観で判断 → 書き直す → 試す → ...
ループエンジニアリング
人間がゴールを定義する → AIが測定・分析・改善を自動で繰り返す → ゴール達成で停止
人間の役割が「プロンプトを書く」から「ゴールを定義する」に変わるものと認識してます
検証に使ったエージェント
これまでの記事と同じ英語学習エージェントを使用します。
このエージェントは辞書にない単語を聞かれるとツールが失敗するため、プロンプト改善の余地があります。
初期プロンプトは「英語を教えて」としています。
アーキテクチャ

今回使うAgentCoreの機能
| 機能 | 役割 |
|---|---|
| Runtime | エージェントのホスティング |
| Configuration Bundle | プロンプトのバージョン管理 |
| Observability | トレース収集 |
| Batch Evaluation | 品質測定(GoalSuccessRate) |
| Recommendation | プロンプト改善案の自動生成 |
構成
| リソース | 役割 |
|---|---|
| Step Functions ステートマシン | ループ全体の制御 |
| Lambda: loop-invoke-agent | テストケース20個をエージェントに送信 + セッション停止 |
| Lambda: loop-evaluate | Batch EvaluationでGoalSuccessRate取得 |
| Lambda: loop-recommend | Recommendationで改善プロンプト取得 |
| Lambda: loop-update-bundle | Config Bundleに新バージョン作成 |
ゴールの定義
自動ループには終了条件(ゴール)が必要です。
今回は以下の2つの条件で停止します
- GoalSuccessRate >= 0.95 で成功として停止
- ループ回数 >= 3 で強制停止(無限ループ防止)
テストケース(20個)
意図的に難しいケースを含めています:
| カテゴリ | 例 | 狙い |
|---|---|---|
| 辞書にない単語(4個) | ephemeral, serendipity等 | ツール失敗時の対応を問う |
| あいまいな指示(3個) | 「英語力を上げたい」「わからん」 | 意図不明時の対応を問う |
| 複雑な文法エラー(4個) | "If I would have known..." | ツールで検出不可なエラー |
| 複合的な質問(3個) | 「違いを説明して例文も教えて」 | 複数対応を問う |
| クイズ(2個) | 「5問出して」 | 量の対応を問う |
| 正常系(2個) | comprehensive等 | 辞書にある単語 |
| 雑な質問(2個) | 「英語」 | 1単語だけで回答が難しい場合を問う |
実行結果

| ループ | GoalSuccessRate | セッション数 | AIが追加した指示 |
|---|---|---|---|
| 初期 | -- | -- | (なし。「英語を教えて.」のみ) |
| 1回目 | 0.58 | 19 | ツール使用指示、回答方式の固定化 |
| 2回目 | 0.60 | 20 | 適切なツール使用指示、応答がなかった場合の指示 |
| 3回目 | 0.53 | 19 | (MaxLoopReachedで停止) |
プロンプトの変化
Loop 1 後:

Loop 2 後(最終):

AIがトレースから「どこで失敗したか」を学んで、具体的な対処法をプロンプトに書き足しています。
なぜスコアが改善しきれなかったか
評価結果は以下の通りになり、GoalSuccessRate は 0.58 → 0.60 → 0.53 で、大幅な改善には至りませんでした。

理由
- ツール自体の限界 辞書が5単語しかないので、プロンプト改善だけでは辞書にない単語への対応は限界がある
- テストケースが難しすぎる 「英語」「わからん」のような1単語の質問はどんなプロンプトでもゴール達成が困難
- プロンプト改善とツール改善は別軸 プロンプトは「振る舞いの指示」、ツールは「能力の拡張」。両方必要
前回の記事のInsightsでも「Incomplete Tool Resource Dictionary Gaps」が指摘されており、プロンプト改善だけでは解決できない問題があることと一致します。
所感
今回はプロンプト改善のみをループに組み込みましたが、次のステップとしてツール改善の自動化、本番スコア低下をトリガーにする、テストケースの自動生成の機能を追加して最終的には「人間がゴールを定義するだけで、プロンプトもツールも自動で改善され続ける」状態を目指していきたいと思いました。
この記事は私が書きました
小泉 和貴
記事一覧全国を旅行することを目標に、仕事を頑張っています。