流暢な回答だけでは、AIエージェントが必須の手順を使ったかどうかは分からない。AWSの9月22日付ガイドでは、Strands EvalsとAmazon Bedrock AgentCoreが記録済みの実行履歴から、スキルの選択と指示への従い方をどう評価するか説明している。二つのシステムでは評価結果がない場合の扱いが異なり、合格フラグの読み取り方にも影響する。

大きな変化

  • 何が変わったか:これらのツールは、手順が読み込まれたか、タスクに適していたか、各ステップに従ったかを区別する。
  • なぜ重要か:確認したStrandsのコードでは、判定されていないケースが合格扱いになることがある。そのフラグだけでリリースを決めると、必須スキルが一度も読み込まれなかった事実を見逃すおそれがある。
  • 今後の注目点:スコアと併せて評価のカバー率も確認したい。想定した読み込みのうち何件が観測され、記録された証拠から判定できた呼び出しは何件か。

三つの確認項目はそれぞれ別の問いに答える

「Agent Skills仕様」では、スキルはSKILL.mdファイルを基本に定義される。その名前と説明はエージェントが使用場面を判断する手掛かりとなり、指示本文は有効化された後に読み込まれる。この違いにより、読み込みの成功、適切な選択、実行はそれぞれ別に確認する必要がある。

確認項目

証拠と結果

限界

StrandsのSkillInvoked

指定スキルの読み込み成功を記録し、決定的に合否を判定する。

適切さや実行内容は評価しない。

AgentCoreの選択精度

呼び出されたスキル、依頼、直前の文脈、利用可能な場合はスキル一覧を用い、モデルが「はい」か「いいえ」を判定する。

何も呼び出さない判断は評価しない。

AgentCoreの指示遵守

読み込まれた指示とセッション全体を用い、完全に遵守から未遵守までの5段階で判定する。

記録された手順への従い方を評価するもので、作業自体の正しさは評価しない。

固定版のSkillInvokedの実装では、状態がloadedである対応する読み込みイベントが必要だ。読み込みの成功が記録されていなければ、未検出、失敗、未解決のいずれの試行もこの判定では不合格となる。判定モデルは呼び出されない。テストケースで特定のスキルが必須なら、直接確認する方法となる。

AgentCoreでは結果がゼロ件になることがある

AgentCoreのドキュメントによると、スキルの呼び出しもスキル本文のシグナルも検出されない場合、両方の判定器はツール呼び出しを飛ばす。スキルの呼び出しが検出されないセッションでは、結果はゼロ件となる。

スキル一覧がなくても、選択の判定は止まらない。評価器は依頼内容と会話の文脈を使う。指示遵守の評価には、呼び出されたスキルと読み込まれた本文の両方が必要で、その後の手順を示す証拠としてセッション全体が使われる。

Strandsでは合格を示すN/A行が返ることがある

ソースを調べると、Strands Evalsのコミット9ea55c9を確認した9月23日時点では、異なる結果の表現が見つかった。これは同コミットの実装を説明するもので、インストール済みのあらゆるSDKバージョンに当てはまるとは限らない。

実行履歴がある一方でスキルが呼び出されなかった場合、選択評価器は非該当(N/A)の行を返し、仮のスコアは0.0で、合格フラグはtest_pass=trueとなる。スキルを呼び出さない判断が正しかったかどうかは、この評価器の対象外だ。

さらに、指示遵守評価器も、呼び出しなし、読み込み拒否、本文を利用できない場合に、合格扱いのN/A行を返す。一方、実行履歴そのものがなければ、両評価器とも不合格フラグ付きのN/Aを返す。

両評価器の集約関数は、N/Aの行を平均値から除外する。すべての行がN/Aの場合は、仮のスコア0を残し、各行の合格フラグを組み合わせる。その数値やフラグを正しく解釈するには、ラベルと理由が必要だ。

必須スキルへのルーティングを検証するには、判定器と名前を指定した読み込みアサーションを組み合わせる。指示の遵守を確認する際は、合格フラグを判定結果として扱う前に、指示と実行の証拠が記録されたか確認する。BIG CHANGEはドキュメントとソースコードを調べたが、これらの評価器を実行してはいない。