fable-eval について
Fable Evalは、エージェントの動作、プロンプト、制御ロジックの変更を評価するスキルです。凍結したベースラインと候補を意味的なシナリオ群で比較し、ホールドアウトの保全と回帰を確認します。
主な機能
- 01テスト前に評価基準を定義
- 02異なる意味的シナリオ群を網羅
- 03ベースラインとコーパスの識別情報を固定
- 04スライス別に採点し回帰を確認
- 05ホールドアウトへの正解情報の漏えいを防止
- 06証拠に基づくロールバック判断を維持
活用シーン
- 01改訂したエージェントスキルやプロンプトの評価
- 02候補となるエージェント設定の比較
- 03トリガーの適合率と再現率の測定
- 04動作変更による回帰の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ immamdouhaboammar/ get-fable --skill fable-evalインストール後、Claude Code で/fable-evalを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skill.package.jsonagents/openai.yamlevals/scenarios.jsonexamples/eval-regression-run.mdreferences/benchmark-design-and-overfit-control.mdeval-harness-protocol.mdtemplates/eval-benchmark-report.template.md詳細
Fable Eval
エージェント制御の変更が、主張された改善対象の動作を実際に改善しつつ、ベンチマークへのひそかな過剰適合や、隣接する動作の破綻を引き起こしていないかを測定します。
ミッション
評価はスコアボードではなく、意思決定のための手段です。固定された比較基準点、代表的な意味的ファミリー、オラクルの隔離、明示的な失敗コスト、ロールバックの判断が必要です。
プロンプトが指示文に似ているから、ホールドアウトが作成時に漏れていたから、あるいは平均スコアが深刻な回帰を覆い隠しているからといって、候補が勝利してはなりません。
次の場合に有効化
- Skills、プロンプト、ルーター、フック、エージェントプロファイル、ポリシー、またはモデル制御ロジックを変更する場合;
- 候補となるプロンプト/エージェント設定を比較する場合;
- トリガーの適合率/再現率や、アクションの遵守度を測定する場合;
- 新しい動作成熟度の主張を検証する場合;
- 見かけ上の改善が堅牢か、ベンチマーク固有かを調査する場合。
次の場合は有効化しない
- 通常のアプリケーション動作を検証する場合(
fable-verify); - 意図する動作が明確になる前にSkillを作成する場合(
skill-creator); - 合否判断を伴わない、単発の主観的なプロンプトデモを実施する場合。
評価の分類
| 変更 | 主な評価リスク |
|---|---|
| ルーター/トリガー | 偽陽性、偽陰性、優先順位 |
| Skillの指示 | アクションの正確性、禁止された近道、境界動作 |
| Spark/次のアクション | トップ1のアクション、危険な提案、無応答の適合率 |
| フック/ガード | 強制力、誤ったブロック、回避 |
| プロンプト/ペルソナ | タスク品質+回帰+指示の競合 |
| ツールポリシー | 適切なツール選択、安全でない/欠落したアクション |
| モデル/設定 | 代表的なタスクにおける品質/レイテンシ/コストのばらつき |
プロトコル
ステージ1 — テストの実施前に判断基準を定義する
以下を明記します。
- 評価対象の候補;
- ベースライン/コントロール;
- 改善が期待される具体的な動作;
- メトリクスとしきい値;
- 許容できない回帰;
- ロールバックのアクション。
結果を見てからメトリクスを考案することは避けてください。
ステージ2 — 意味的シナリオファミリーを構築する
言い回しの違いではなく、異なる判断を対象にします。該当するものとして、以下を含めます。
- 典型的な肯定ケース;
- 非トリガー/境界ケース;
- 複数のアクションが競合する曖昧なケース;
- 近道を選ばせようとする敵対的な圧力;
- 部分的/矛盾する証拠;
- 失敗/復旧パス;
- レガシー/制約のある環境;
- 未知のホールドアウト。
ファミリーの網羅度を、プロンプトの生の件数とは別に記録します。
ステージ3 — ベースラインとコーパスの識別情報を固定する
実行を以下に紐付けます。
- コーパスのハッシュ/バージョン;
- 候補/ベースラインの識別情報;
- 評価器/スコアラーのバージョン;
- 外部プロバイダーを使う場合は、プロバイダー/モデル/設定;
- タイムスタンプ/リポジトリのリビジョン。
対象、オラクル、コーパス、またはスコアリングロジックを変更すると、明示的に正規化しない限り、直接比較の有効性が失われます。
ステージ4 — オラクルを保護する
プロバイダーに送信するリクエストからは、期待されるアクション、禁止されたアクション、カテゴリラベル、ホールドアウトの識別情報、スコアリングの実装、回答を含むメタデータを明かしてはなりません。
ホールドアウトの失敗を繰り返し読みながら候補を作成しないでください。発見したケースは将来のチェック済みコーパスに追加し、新たな未知のホールドアウトを維持してください。
ステージ5 — ベースラインと候補を一貫した条件で実行する
比較に必要な場合は、同じタスク入力、ツールの利用可能性、コンテキスト予算、温度/設定、タイムアウトポリシー、スコアリングルールを使用します。
プロバイダーのエラー/タイムアウトは失敗または明示的な利用不可状態として記録します。不足している出力をオラクルで補完してはなりません。
ステージ6 — 平均だけでなくスライスごとにスコアを評価する
以下を確認します。
- 全体のメトリクス;
- 各意味的ファミリー;
- 否定的/敵対的ケースにおける禁止事項への違反;
- コストの高い回帰;
- 確率的な変動が重要な場合のばらつき/反復実行の安定性;
- 該当する場合のルーティング混同行列のペア。
平均が1%向上しても、リリース/セキュリティ/復旧に関する深刻な回帰が発生するなら、許容できません。
ステージ 7 — 不審な改善を調査する
以下を確認します:
- プロンプトの漏洩;
- 重複/ほぼ重複するシナリオ;
- ベンチマーク固有のキーワード照合;
- ツール/コンテキストの予算変更;
- スコアラーのドリフト;
- 都合のよいシード/実行結果の選択;
- 候補へのサンプルのコピー。
ステージ 8 — 判断し、ロールバック手段を確保する
判定:
- ACCEPT:しきい値を満たし、禁止されたリグレッションがなく、エビデンスが代表性を備え、新しい;
- REJECT:候補が必須の振る舞いを退行させるか、しきい値を満たさない;
- INCONCLUSIVE:エビデンスに広さ/安定性/ホールドアウトの完全性が不足している。
ロールバックが可能なよう、ベースラインのアーティファクトを記録します。
判断ルール
- 生のシナリオ数より、意味的なファミリーの網羅性が重要です。
- 1つのケースの表面的な言い換えは、独立したカバレッジにはなりません。
- ホールドアウトは、候補の調整に繰り返し使われた時点で、ホールドアウトではなくなります。
- 平均値の前にスライスを比較します。安全上重大な禁止違反があれば、平均スコアが高くても却下できます。
- 確率的なばらつきによって判断が変わり得る場合は、1つのシードを都合よく選ぶのではなく、安定性を推定できるだけの回数を実行します。
- 候補とベースラインでプロバイダー/ランタイムのエラーが異なる場合は、インフラストラクチャの障害と振る舞いのスコアを分けて扱います。
- 評価対象の Skill/コーパス/オラクルが変更された後は、鮮度の検証によって同一性が証明されない限り、古い成熟度の結果を保持しないでください。
- 候補が失敗した後、リリースするためだけにしきい値を引き下げないでください。
不変条件
- 候補を評価する前に、ベースラインを再現可能な状態で凍結します。
- オラクル/ホールドアウトのデータは、評価対象のエージェントから隠されたままにします。
- 条件が同等であると主張する場合、候補とベースラインは同等の条件下で比較します。
- 欠落した/失敗したプロバイダー出力を、期待される回答で置き換えることは決してありません。
- すべての採用判断にロールバック手段を用意します。
- 集計スコアが改善しても、高コストのリグレッションは見える状態に保ちます。
失敗の分類
ベンチマークへの過適合
候補は確認済みのケースでは改善しますが、未確認のファミリー/ホールドアウトでは失敗します。意味的な網羅性を高め、候補を却下または汎化します。
オラクルの漏洩
期待されるデータ/禁止事項/カテゴリのデータが、プロバイダー/候補の作成ループに渡されています。汚染されたエビデンスを破棄し、新しいブラインドケースを作成します。
指標の盲点
重要なスライスが悪化している一方で、平均は改善しています。ファミリーごとの指標と拒否判断用の指標を使用します。
比較不能な実行
異なるモデル/ツール/コンテキスト/スコアラーの設定によって、見かけ上の改善が生じています。条件を統制して再実行します。
高いばらつき
実行を繰り返すと判定が変わります。サンプル数を増やす/非決定性を制御するか、判定不能とします。
コーパスのドリフト
エビデンスの取得後に Skill/シナリオ/オラクルが変更されています。エビデンスを古いものとして扱い、再実行します。
アンチパターン
- 5つの言い換えを、独立した5つのテストとして数える;
- すべての候補を調整する際にホールドアウトを確認する;
- 平均スコアだけで採用する;
- 失敗を見た後にしきい値を変更する;
- プロバイダーのタイムアウトを、失敗/未完了ではなくスキップとして扱う;
- 肯定例のみを評価する;
- ケースごとの答えが分かるような形で、期待されるアクションの語彙をコピーする;
- コーパスのハッシュが変わっているにもかかわらず、エビデンス JSON ファイルがあるという理由で M4 を主張する。
評価レポート
Candidate / baseline:
Corpus + hashes:
Provider/config:
Semantic families:
Metrics + thresholds:
Per-family results:
Forbidden/high-cost regressions:
Variance/repeats:
Leakage/comparability checks:
Verdict: ACCEPT | REJECT | INCONCLUSIVE
Rollback:
Evidence freshness:
完了基準
評価は、以下を満たした時点で完了です:
- ベースラインと候補が明確に特定されている;
- 意味的なカバレッジとブラインドホールドアウトの完全性に信頼性がある;
- 指標が意味のあるスライスごとに確認されている;
- リグレッション/禁止アクションが平均値によって隠されていない;
- 判定とロールバックがエビデンスに基づいている;
- エビデンスの鮮度が、評価対象の正確なコーパス/制御条件に紐付いている。
段階的なリソース
- 詳細ガイド:
references/benchmark-design-and-overfit-control.md - 既存のプロトコル:
references/eval-harness-protocol.md - 例:
examples/eval-regression-run.md