AIエージェントを作ったあと、「それが良く動いているか」をどう測るかは難問です。AWS の awslabs が公開した UAEF(Universal Agent Evaluation Framework) は、この「エージェントの採点」を標準化しようとする Python フレームワークです。README は自らを “A framework-agnostic evaluation system for AI agents” と説明します。

特定のエージェント基盤に縛られず、LangGraph・Bedrock・Strands などのトレースを共通形式に変換して、7次元36メトリクスで採点するのが核です。本記事では GitHubリポジトリ awslabs/uaef(2026-11-12 時点、v0.2.0・タグ無し)のコードとドキュメントを一次情報に、何を測り、どう使い、どこまで成熟しているかを整理します。

HOW IT WORKS基盤非依存:どのエージェントのトレースも同じ入口で

トレース → 正規化 → 採点 → AWS保存

  1. 入力

    エージェントの実行トレースと正解データ(ground_truth)を evaluate() に渡す

  2. アダプタで正規化

    LangGraph・LangChain・Bedrock・Langfuse・Strands・AgentCore・汎用JSON の7アダプタが共通形式 AgentTrace に変換

  3. 評価エンジン

    SingleAgent・MultiTurn・MultiAgent・Offline(バッチ) から自動選択し、7次元36メトリクスで採点

  4. 結果とAWS保存

    overall_score 等を返す。persist=True で DynamoDB(実験ごと1行)と S3(全結果JSON)へ

出典: awslabs/uaef の README・src/uaef/(2026-11-12 確認、v0.2.0)。数値・名称はコードとドキュメントから転記

30秒でわかる UAEF

  • 何 — AIエージェントを採点する framework-agnostic な評価フレームワーク(AWS awslabs・Apache-2.0)
  • 測るもの — 7次元36メトリクス(ツール呼び出し・応答品質・責任あるAI・性能・マルチターン・マルチエージェント・推論)
  • 対応 — LangGraph・LangChain・Bedrock・Langfuse・Strands・AgentCore・汎用JSON の7アダプタ
  • 使い方 — トレースと正解を渡して evaluate() 一発。結果は DynamoDB と S3 に保存
  • 現在地 — v0.2.0・タグ無し・star 63(2026-11-12 時点)・PyPI 配布なし。評価の「型」を見るのに向く

注記:star は 63(2026-11-12 時点)

GitHub の star は 2026-11-12 に 63、翌13日の再確認で 65 でした。利用者がまだ少なく、不具合の報告や外部の検証例も少ない段階です。リリースのタグも無いので、試すときはコミットを固定し、結果を自分の環境で確かめる前提で読んでください。

エージェント基盤そのものの選び方は AIエージェントフレームワーク比較2026|LangGraph・CrewAI・Dify等9種をStar数・実コードで検証 にまとめています。UAEF はその「作ったあと、どう採点するか」を担う位置づけです。

UAEFとは——エージェント採点を標準化するフレームワーク

エージェント評価のつらさは、基盤ごとにトレースの形が違い、「何を・どう測るか」がばらばらになる点にあります。UAEF は、各基盤のトレースを共通形式(AgentTrace)に変換するアダプタ層を挟み、その上で統一されたメトリクスを走らせます。README いわく、対応は “LangGraph, LangChain, AWS Bedrock, Langfuse, Strands, AgentCore, or any custom framework via adapters”。

評価エンジンには SingleAgent・MultiTurn・MultiAgent・Offline(バッチ) のモードがあり、トレースの種類に応じて自動で選ばれます(マルチエージェントのトレースなら MultiAgent、それ以外は SingleAgent 側でマルチターンも扱う実装)。「1回の応答」から「複数エージェントの連携」まで、同じ入口で測れる設計です。

何を測るのか——7次元36メトリクス

UAEF の中心は 36 の組み込みメトリクスです。README は “36 built-in metrics across 7 dimensions” とし、内訳はドキュメントから次のように数えられます。決定的な指標(正規表現や集合計算で機械的に決まる)と、LLM が判定する指標が混在しているのが特徴です。

次元 メトリクス数 代表例と判定方式
ツール呼び出し 4 tool_selection_accuracy(Jaccard・決定的)
応答品質 4 answer_relevance(LLM判定)
責任あるAI 4 prompt_injection_detection(正規表現・決定的)
パフォーマンス 4 latency_score(閾値2000ms・決定的)
マルチターン 12 会話の一貫性など
マルチエージェント 4 連携の質
推論 4 推論の妥当性(LLM判定)

36 METRICS, 7 DIMENSIONS決定的 約12 + LLM判定 約24(+RAGAS/DeepEval統合で15前後)

7次元36メトリクスでエージェントを採点

マルチターン

12

ツール呼び出し

4

応答品質

4

責任あるAI

4

パフォーマンス

4

マルチエージェント

4

推論

4
出典: README『36 built-in metrics across 7 dimensions』と docs/Guides/metrics-catalog.md(2026-11-12 確認)

合計36のうち、ドキュメントの表から数えると決定的が約12、LLM判定が約24です。さらに RAGAS・DeepEval との統合で15前後を足せます(Stickler 統合は作業中)。決定的な指標は再現性が高く安く回せ、LLM判定の指標は曖昧な品質を拾える——この使い分けが、評価の設計として参考になります。

UAEFの使い方——evaluate()一発と、Bedrockによる判定

導入は、リポジトリを clone して uv で依存を入れます(PyPI 配布は無く、README は .whl か clone での導入を示します)。いずれも公式READMEの記載で、筆者が実行して確認したものではありません。

# 公式READMEの導入手順(Python 3.10+ / uv 必須)。未実行
git clone https://github.com/awslabs/uaef.git
cd uaef && uv sync

Python ライブラリとしての最小の使い方は、トレースと正解データを渡して evaluate() を呼ぶだけです(README の Quick Start より)。

# 公式READMEの記載(Quick Start)。未実行
from uaef.api import evaluate

result = evaluate(trace=trace, ground_truth=ground_truth)
print(f"Score: {result.overall_score:.2f}")

結果を AWS に残すには、persist=True と実験名を付けます。

# 公式READMEの記載。未実行
result = evaluate(
    trace=trace,
    ground_truth=ground_truth,
    persist=True,
    experiment_name="my-agent-v1",
    experiment_objective="baseline",
)

LLM が判定するメトリクスは、AWS Bedrock の Claude(既定は us.anthropic.claude-sonnet-4-6、temperature 0・max_tokens 2048)で動きます。設定を見ると、判定モデルは Anthropic Claude 系以外を受け付けない検証が入っています。正解データ(ground_truth)は、メトリクスによって「必須/任意/不要」が分かれます(たとえば網羅性の指標は必須、応答の関連性は不要)。導入は Python 3.10 以上と uv、そして Bedrock・DynamoDB・S3 を使う AWS 認証情報が前提です。

AWSへの保存とデプロイ——DynamoDBとS3、サービス一式

評価結果の永続化は、実験ごとに DynamoDB に1行(平均スコアや結果の保存先パスなど)、全結果の JSON を S3 に置く構成です。チームで評価をAPIとして使うための uaef-service も同梱され、Cognito・API Gateway・Worker Lambda・Step Functions・DynamoDB+S3・CloudFront の UI で構成されます。./scripts/cloud_deploy.sh 一発でのデプロイや、FastAPI コンテナを EKS 上で動かす選択肢も用意されています(事前に cdk bootstrap が必要)。

BEFORE YOU USE IT有用だが初期段階。前提を押さえて

v0.2.0・AWS前提、本番は再現確認を

  1. 1.初期段階

    v0.2.0・タグ無し・star 63(11/12 時点)・PyPI 配布なし(.whl か clone)。API や既定値は変わり得る。本番ならバージョン固定と再現確認を

  2. 2.AWS が前提

    LLM判定は Bedrock の Claude(既定 claude-sonnet-4-6)、永続化は DynamoDB/S3。別クラウド単独では完結しない

  3. 3.導入要件

    Python 3.10 以上と uv、Bedrock・DynamoDB・S3 を使う AWS 認証情報

  4. 4.判定の前提

    LLM判定に渡すエージェント出力は untrusted data として扱う注意(プロンプトインジェクション混入を想定)

出典: awslabs/uaef の README・config.py・SECURITY.md(2026-11-12 確認)

「評価を1回する」だけなら Python ライブラリで完結しますが、「チームの評価を継続的に回す」ところまで AWS 上に用意されているのが、awslabs 公式らしい作りです。

UAEFの注意点と現在地——v0.2.0・star 63 の初期段階

有用な設計ですが、成熟度は正直に見るべきです。

  • 初期段階:v0.2.0・タグ無し・star 63(2026-11-12 時点)・PyPI 配布なし(リポジトリの .whl か clone で導入)。API や既定値は今後変わり得ます。本番の評価基盤にするなら、バージョンの固定と自分の環境での再現確認を前提にしてください。
  • AWS 前提:LLM判定は Bedrock、永続化は DynamoDB/S3 と、AWS に乗ることが前提です。別のクラウドやローカルだけで完結させる作りではありません。
  • 判定の限界:LLM判定のメトリクスは、判定に渡す出力を “untrusted data”(信頼できないデータ)として扱う注意がドキュメントにあります。評価する対象の出力にプロンプトインジェクションが混じり得る、という前提です。

エージェントの「良し悪し」を何で測るかは、作る側が最後まで悩む部分です。UAEF は、そのメトリクスの一覧と、決定的/LLM判定の使い分けを具体的に見せてくれる点で、自分の評価を設計する際の良いたたき台になります。エージェント評価そのものの難しさは、ベンチマーク側からの視点として Continual-ARCとは|エージェントの「メモリ」は学習になっていたか も合わせて読むと立体的になります。エージェント基盤の選び方は AIエージェントフレームワーク比較2026|LangGraph・CrewAI・Dify等9種をStar数・実コードで検証 に、永続メモリの実装は agentmemory徹底解説 にまとめています。

参照ソース