ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

【Bedrock AgentCore】ループエンジニアリングについて考えてみる

この記事を共有する

目次

はじめに

皆さんこんにちは!パーソル&サーバーワークスの小泉です。
これまでの記事で、AgentCoreのEvaluationRecommendation・A/BテストInsightsを使ってプロンプトを改善する方法を紹介してきました。
今回はこの改善サイクルを Step Functions で完全自動化し、人間がゴールを定義するだけでプロンプトが自動的に改善され続ける仕組みを作ってみました。

ループエンジニアリングとは

人によって、解釈が微妙にちがう部分があると思いますが、ループエンジニアリングは、AIエージェントの品質改善サイクルを自動化された反復プロセスとして設計する手法と考えています

従来のプロンプトエンジニアリング
人間がプロンプトを書く → 試す → 主観で判断 → 書き直す → 試す → ...

ループエンジニアリング
人間がゴールを定義する → AIが測定・分析・改善を自動で繰り返す → ゴール達成で停止

人間の役割が「プロンプトを書く」から「ゴールを定義する」に変わるものと認識してます

検証に使ったエージェント

これまでの記事と同じ英語学習エージェントを使用します。
このエージェントは辞書にない単語を聞かれるとツールが失敗するため、プロンプト改善の余地があります。

初期プロンプトは「英語を教えて」としています。

アーキテクチャ

stepfunction.png

今回使うAgentCoreの機能

機能役割
Runtimeエージェントのホスティング
Configuration Bundleプロンプトのバージョン管理
Observabilityトレース収集
Batch Evaluation品質測定(GoalSuccessRate)
Recommendationプロンプト改善案の自動生成

構成

リソース役割
Step Functions ステートマシンループ全体の制御
Lambda: loop-invoke-agentテストケース20個をエージェントに送信 + セッション停止
Lambda: loop-evaluateBatch EvaluationでGoalSuccessRate取得
Lambda: loop-recommendRecommendationで改善プロンプト取得
Lambda: loop-update-bundleConfig Bundleに新バージョン作成

ゴールの定義

自動ループには終了条件(ゴール)が必要です。
今回は以下の2つの条件で停止します

  • GoalSuccessRate >= 0.95 で成功として停止
  • ループ回数 >= 3 で強制停止(無限ループ防止)

テストケース(20個)

意図的に難しいケースを含めています:

カテゴリ狙い
辞書にない単語(4個)ephemeral, serendipity等ツール失敗時の対応を問う
あいまいな指示(3個)「英語力を上げたい」「わからん」意図不明時の対応を問う
複雑な文法エラー(4個)"If I would have known..."ツールで検出不可なエラー
複合的な質問(3個)「違いを説明して例文も教えて」複数対応を問う
クイズ(2個)「5問出して」量の対応を問う
正常系(2個)comprehensive等辞書にある単語
雑な質問(2個)「英語」1単語だけで回答が難しい場合を問う

実行結果

stepfunction2.png

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

プロンプトの変化

Loop 1 後:

roop.png

Loop 2 後(最終):

loop2.png

AIがトレースから「どこで失敗したか」を学んで、具体的な対処法をプロンプトに書き足しています。

なぜスコアが改善しきれなかったか

評価結果は以下の通りになり、GoalSuccessRate は 0.58 → 0.60 → 0.53 で、大幅な改善には至りませんでした。

15_sfn_execution_detail3.png

理由

  • ツール自体の限界 辞書が5単語しかないので、プロンプト改善だけでは辞書にない単語への対応は限界がある
  • テストケースが難しすぎる 「英語」「わからん」のような1単語の質問はどんなプロンプトでもゴール達成が困難
  • プロンプト改善とツール改善は別軸 プロンプトは「振る舞いの指示」、ツールは「能力の拡張」。両方必要

前回の記事のInsightsでも「Incomplete Tool Resource Dictionary Gaps」が指摘されており、プロンプト改善だけでは解決できない問題があることと一致します。

所感

今回はプロンプト改善のみをループに組み込みましたが、次のステップとしてツール改善の自動化本番スコア低下をトリガーにするテストケースの自動生成の機能を追加して最終的には「人間がゴールを定義するだけで、プロンプトもツールも自動で改善され続ける」状態を目指していきたいと思いました。

この記事は私が書きました

小泉 和貴

記事一覧

全国を旅行することを目標に、仕事を頑張っています。

小泉 和貴

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。