- 公開日
- 最終更新日
【Bedrock AgentCore】OptimizationでAI Agentを最適化
この記事を共有する
目次
はじめに
皆さんこんにちは!パーソル&サーバーワークスの小泉です。
以前の記事ではConfiguration Bundleを使ってシステムプロンプトをコード外で管理する方法を紹介しました。
また、Agentの評価についても記載したので
今回は評価結果を基に、AIにプロンプトの改善案を出してもらい、A/Bテストで効果を定量的に測定するところ(改善)を検証しました。
なぜこれをやったのか
前回の記事でEvaluationを使って品質を可視化できるようになりました。
なので今回はAgentを「どう改善すればよいのか」、「改善は適切なのか」を検証しました。
具体的にはBedrock AgentCore(以下AgentCore)のOptimization 機能(Recommendation + A/Bテスト)を用いて検証を行いました。
今回使うAgentCoreの機能
| 機能 | 役割 |
|---|---|
| Runtime | エージェントのホスティング基盤 |
| Configuration Bundle | プロンプトの外部管理・バージョン管理 |
| Gateway | A/Bテストのトラフィック振り分け |
| Observability | トレース収集(Evaluationの前提) |
| Evaluations | エージェント品質の自動評価 |
| Optimization | プロンプト改善案の自動生成 + A/Bテスト |
全体の流れ

検証の前提
検証用に作成した英語学習エージェントを使います。
- Runtime: デプロイ済みの英語学習エージェント(Strands Agents + Claude Sonnet 4)
- ツール: lookupvocabulary(辞書5単語のみ)、checkgrammar、generate_quiz
- Config Bundle: 「英語を教えてください。」という大雑把なプロンプトが入っている状態
- Evaluation結果: GoalSuccessRate 0.75(4回中1回ゴール未達)
辞書が5単語しかないため、辞書にない単語を聞かれるとツールが失敗します。
この状態でプロンプト改善だけでどこまで品質が上がるかを検証します。
手順
1. Recommendationでプロンプト改善案を生成
AgentCoreのOptimization機能に、蓄積済みのトレースデータを分析させてプロンプトの改善案を自動生成してもらいます。
agentcore run recommendation \ --type system-prompt \ --runtime runtime01 \ --evaluator Builtin.Helpfulness \ --inline "You are an English language tutor. Help users learn English." \ --wait
--inline には現在のプロンプトを渡します(Config Bundleから読む方法もありますが、今回は直接指定しました※1)
※1 日本語プロンプトを渡すとprompt attack protectionで弾かれたため、英語でプロンプトを指定しました。
マネコンの画面から、AIがトレースを分析した説明が確認できます。

今回の分析では以下が指摘されました
- 7トレースを分析。6つがスコア1.0、1つが0.83
- スコア0.83のトレース: クイズを出したとき、答えを隠してユーザーの回答を待った → 減点
- 成功パターン: ツール出力に付加価値を加えている、ツールが間違ったら自分の知識で上書きしている
この分析を基に、以下の改善プロンプトが生成されました
生成された改善プロンプト:
You are an English language tutor. Help users learn English. Respond in the user's native language while teaching English. Use tools (lookupvocabulary, generatequiz, check_grammar) proactively. Add value beyond tool output: collocations, usage context, related forms. If a tool returns incorrect results, override with your expertise. If a tool fails, answer from your own knowledge. For quizzes, present both the question and full explanation.
日本語訳
あなたは英語の家庭教師です。ユーザーの英語学習を助けてください。英語を教えながらも、ユーザーの母国語で説明してください。ツール(lookupvocabulary, generatequiz, check_grammar)を積極的に使ってください。ツールの出力をそのまま返すのではなく、付加価値を加えてください(コロケーション、使用場面 、関連語形など)。ツールが間違った結果を返した場合は、あなた自身の知識で上書きしてください。ツールが失敗した場合は、自分の知識で回答してください。クイズの場合は、問題と解説を両方提示してください。
元のプロンプトが1行だったのに対して、具体的な振る舞い指示が追加されました。
マネコンの画面から、元のプロンプトと改善プロンプトがdiff形式で表示されます。

2. A/Bテストの前提: Gatewayの設定
A/BテストにはAgentCore Gatewayが必要です。
A/Bテストでは、Gatewayがリクエストを受け取った時点でControl/Treatmentを振り分け、対応するConfig BundleバージョンのIDをヘッダーに注入してRuntimeに転送します。
3. A/Bテストの実行
Recommendationで生成された改善プロンプトをConfig Bundleの新バージョンとして保存し、旧バージョン(大雑把)vs 新バージョン(AI推奨)を50:50で振り分けるA/Bテストを開始します。
agentcore run ab-test \ --name "prompt_ab_test_v2" \ --gateway "abTestGateway" \ --runtime runtime01 \ --control-bundle agentConfig \ --control-version "3b793f39-..." \ --treatment-bundle agentConfig \ --treatment-version "d37693ee-..." \ --online-eval qualityMonitor \ --control-weight 50 \ --treatment-weight 50
Gateway経由でエージェントを呼び出すと、リクエストがランダムに旧プロンプト(Control)か新プロンプト(Treatment)に振り分けられます。
4. A/Bテスト結果
10〜12セッション分のデータが溜まった後、結果が表示されました。

| 評価器 | Control(大雑把) | Treatment(AI推奨) | 改善 |
|---|---|---|---|
| GoalSuccessRate | 0.80 | 1.00 | +25% |
| Helpfulness | 1.00 | 1.00 | 0% |
GoalSuccessRateが0.80→1.00に改善。
AI推奨プロンプトでは全セッションでユーザーのゴールを達成できています。
p値※2は0.52でサンプルサイズが小さいため統計的有意性には届いていませんが、改善の方向性はわかりました。
本番環境で数百セッション流せば有意になる可能性が高いと考えています。
※2 結果が偶然である確率。一般的に0.05未満で統計的に有意と判断される
所感
今回の検証では、具体的な最適化よりどのように最適化するかの流れについて記載しました。実際にエージェントを構築・運用する際には評価・最適化の観点から設計するとPDCAが回りやすいと感じました。
この記事は私が書きました
小泉 和貴
記事一覧全国を旅行することを目標に、仕事を頑張っています。