evaluation-harness — 最小の評価ハーネス(Python)
データセット・実行・判定・レポートという評価ハーネスAgent の評価を繰り返し実行可能にする仕組み一式。データセット・実行系・採点系・レポートの 4 点で構成される。の 4 部品を、最小の形で示すサンプルです。分類タスクを題材に、合格率と失敗ケースを出し、閾値割れなら異常終了(CI 組み込み可)します。次のドキュメントの内容を実装しています。
- Agent 評価の基礎 — 評価ハーネスモデルの外側 — ループ・ツール・フィードバック・環境・制御の総体。同じモデルでも作り込みで性能と信頼性が変わるため、モデルと並ぶ一級の設計対象として扱う。の 4 部品
- 回帰テストと CI 組み込み — 閾値割れで異常終了させ CI に組み込む
- 学習ロードマップ — Cルートの実行記録と終了条件へ戻る
このサンプルの要点
- 4 部品を分けて設計する: データセット(
dataset.json)/ 実行系(run_case)/ 採点系(judge)/ レポート(report)を分離しています - 許容ラベルとの完全一致: 前後の空白だけを除き、ラベル 1 語と完全一致した場合に採点します。「請求ではありません」のような説明・否定・複数ラベルは不合格です。生の応答はレポートに保持します
- CI に組み込める: 合格率が閾値を下回ると終了コードが非ゼロになります(回帰テストプロンプト・ツール・モデルの変更で既存の品質が壊れていないかを、評価データセットの再実行と前回比較で検知するテスト。の土台)
前提
- Python 3.11 以降(
--mockは追加依存なし・標準ライブラリのみで動きます) - 実 API 実行時のみ: Anthropic API キー(環境変数
ANTHROPIC_API_KEY)とpip install -r requirements.txt
実行
# モック実行(API キー不要・依存インストール不要)
python eval_harness.py --mock
echo "exit=$?" # 合格率が閾値以上なら 0
# 実 API 実行(要 ANTHROPIC_API_KEY)
pip install -r requirements.txt
python eval_harness.pyモック実行では 1 ケース(領収書 = 請求)をわざと誤分類し、レポートに NG が 1 件出ます(合格率はちょうど閾値なので終了コードは 0)。閾値割れ(終了コード 1)を確かめるには、eval_harness.py の PASS_THRESHOLD を 0.9 に上げて再実行してください。
動作確認日
- 今回の再確認: 2026-10-04(Python 3.12.14、作業専用 venv、固定した anthropic 1.4.0 / httpx2 2.12.0 / mcp 2.2.0)。全 6 サンプルの
--mockを含む 17 回帰テストが合格しました。実 SDK の HTTP モックとローカル MCPツールやデータソースを LLM アプリケーションに接続するための標準プロトコル。概要は ツール使用、接続の実務は ツール接続標準(MCP とエコシステム) stdio を確認し、実 LLM API は呼んでいません(実行手順)
以下は過去の確認記録です。
- モック実行(
--mock): 2026-10-03 に確認(Python 3.12.14、追加依存なし。c4のみNG、4/5=80%で閾値80%を満たし終了コード0) - 回帰テスト: 2026-09-10 に確認。否定された正解ラベルの誤合格防止と、anthropic 1.4.0 / httpx2 2.12.0 の HTTP モックで生成打ち切りの拒否を確認(実行手順)
- 実 API 実行: 未確認(各自の環境で確認し、この欄に日付を追記してください)
TODO・未確認事項
モデルの選択
既定モデルは claude-opus-5-5 です(モデル仕様確認: 2026-10-03)。環境変数 ANTHROPIC_MODEL で上書きできます。PowerShell では $env:ANTHROPIC_MODEL = "claude-sonnet-5-5"、POSIX シェルでは export ANTHROPIC_MODEL=claude-sonnet-5-5 を実行してから起動します。--mock は API を呼びません。モデル移行時は強制ツール指定・思考履歴・出力上限の互換性を確認してください。実 API の動作確認日は従来の記録を維持し、今回のモック回帰結果は作業記録に分けます。