3行でいうと
- 両社の文書とも、評価は「本物の入力に近いテスト」を「自動で採点できる形」で持つことを勧めています。
- 採点は、速く確実な方法(完全一致などのコード判定)を先に検討し、AIによる判定は、信頼できると確かめてから使います。
- OpenAIのEvals(評価の管理画面とAPI)は2026年10月31日に読み取り専用、11月30日に停止予定です。
- 10問程度のテストは、小さな差を見分けられません。差がはっきり出たものだけを信じます。
この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書を読んでまとめたものです。
先に結論
- 評価(evals)は、AIの仕組みの出来を測る自作のテストです。OpenAIの文書は「構造化されたテスト」と説明しています。市販のベンチマーク(MMLUなど、モデル同士を比べる共通の試験)とは別物で、自分の用途の入力で測ります。
- OpenAIの文書は、評価をやらない進め方を「雰囲気で判断する評価(vibe-based)」と呼び、アンチパターンとして挙げています。「うまく動いている気がする」で済ませる、または出荷してから評価を作り始める、という意味です。
- 見立てです。最初のテストは、実際に困った入力を10問集めて、1問ずつ「合格の条件」を決めるところから始められると思います。数を増やすのは、その後でよいと思います。
- 注意が必要な変更があります。OpenAIは、自社のEvalsプラットフォームを終了すると発表しています(後述)。移行先として、オープンソースのPromptfooを案内しています。
前提:何を「回帰」と呼ぶか
- テストセットは、入力と、期待する出力(または合格条件)の組を集めたものです。
- 回帰は、前はできていたことが、変更の後にできなくなることです。プロンプト(AIへの指示文)、モデル、検索の設定のどれを変えても起こります。
- CIは、コードの変更のたびに自動でテストを走らせる仕組みです。評価を、この仕組みに載せることがあります。
- AIの出力は、同じ入力でも毎回少しずつ変わることがあります。OpenAIの文書は、この性質(nondeterminism、毎回結果がぶれること)があるからこそ、評価が要るという立場です。
手順:10問から始めて、育てる
AnthropicとOpenAIの文書の共通点を、僕らが手順の形に整理しました(見立てです)。
- 目的を一文で書く。 Anthropicは、成功の基準を「具体的で測れるもの」にするよう勧めています。例は「感情分類の精度がよい」ではなく、「多様な1万件の投稿で、F1スコア(適合率と再現率をまとめた指標)が0.85以上」です。
- 入力を10問集める。 実際に使われた入力、実際に失敗した入力から選びます。OpenAIは、開発中のログを残し、そこから評価の事例を拾うよう勧めています。テストの分布が実際の利用と離れることを、アンチパターンとしています。
- 境界の例を混ぜる。 Anthropicが挙げる例は、関係ない入力、長すぎる入力、人間でも判断が割れる曖昧な入力です。OpenAIは、典型的な例、境界の例、悪意のある入力の例を入れるよう書いています。
- 合格の条件を、先に決める。 「正しい答え」が決まる課題なら、正解を持ちます。決まらない課題は、守るべき条件(例:JSONの形である、特定の語を含む、禁止語を含まない)に分けます。
- 採点を自動にする。 次の節で詳しく書きます。
- 回して、結果を保存する。 保存した結果が、次の変更との比較の土台になります。
- 変更のたびに回す。 プロンプトを直す、モデルを替える、検索の設定を変える、のどれでも回します。
- 失敗を足していく。 本番で見つけた失敗を、そのたびにテストセットに足します。
採点方法の選び方
Anthropicの文書は、採点方法を3つ挙げ、コード判定を「最も速く確実で、とても拡大しやすい」と説明しています。文書の並びは、コード判定、人間による判定、AIによる判定の順です。下の表は、読みやすいよう速い順に僕らが並べ替えました。
| 方法 | 長所 | 短所 | 例(文書より) |
|---|---|---|---|
| コード判定 | 最速で確実、大量に回せる | 微妙な判断ができない | 完全一致、文字列を含むか |
| AIによる判定 | 速く柔軟、複雑な判断にも使える | 先に信頼性を確かめる必要がある | 基準表(ルーブリック)で採点 |
| 人間による判定 | 最も質が高く柔軟 | 遅く高い。できれば避ける | 専門家の評価 |
さらに、次の点が両社の文書で共通しています。
- Anthropicは「質の高い少数の人手採点」より「質がやや低くても多数の自動採点」を勧めています。
- OpenAIは、AIは「複数の選択肢を比べる」「分類する」「基準で採点する」ほうが、自由な文章を生成させるより信頼できる、と書いています。
- AIによる判定を使うときは、基準を具体的にし、「correct / incorrect」や1〜5の数字のように、答えの形を決める。判定用のAIに思考(thinking)をオンにして、判定の前に推論させると成績が上がる、とAnthropicは書いています。
- OpenAIは、AIの判定が人間の評価と合っているかを確かめてから、判定を増やすよう勧めています。AIによる判定の癖については、次の記事で扱います。
道具:OpenAIのEvals終了と、Promptfoo
OpenAIの文書(評価の案内ページと廃止予定のページ)には、次のとおり書かれています。
- 2026年6月3日に、Evalsプラットフォームの廃止が通知されました。
- 2026年10月31日に、既存のevalsが読み取り専用になります。
- 2026年11月30日に、EvalsのダッシュボードとAPIが停止予定です。
- 移行先として、OpenAIはPromptfooを案内しています。文書では、Promptfooを「AIアプリとエージェントを評価し、攻撃的なテスト(レッドチーム)をするためのオープンソースのCLI(コマンドで使う道具)とライブラリ」と説明しています。
Promptfooは、設定ファイル(YAML)に「プロンプト」「モデル」「テスト」「合格条件(assertion)」を書き、コマンドで実行します。公式文書の設定例です。この記事では、実行していません。
prompts:
- file://prompt1.txt
providers:
- openai:gpt-6-luna
tests:
- vars:
language: French
input: Hello world
assert:
- type: contains-json
- type: javascript
value: output.toLowerCase().includes('bonjour')
Promptfooの合格条件と、CIでの足切り
Promptfooの文書にある合格条件(assertion)の種類の一部です。
equals(完全に一致)、contains(文字列を含む)、regex(正規表現に合う)、is-json(正しいJSONである)javascript、python(自分で書いた関数で判定)levenshtein(文字列の違いが閾値以下)、latency(応答時間が閾値以下)、cost(費用が閾値以下)similar(意味の近さ、つまり埋め込みの類似度が閾値以上)
AIによる判定の条件(llm-rubricなど)や、検索の評価向けの条件(context faithfulness、context recallなど)も、文書の一覧にあります。
CIの文書には、足切りの例があります。eval --fail-on-errorは、1つでも失敗すれば異常終了にする指定です。また、結果をJSONで出して合格率を計算し、95%未満ならビルドを失敗させるシェルの例が載っています。この95%は、文書の例にある数字で、推奨値ではありません。
npmの最新版は0.124.1、ライセンスはMITでした(2026年10月22日確認)。バージョンが若いので、設定の書き方が変わる可能性があります。
10問で何が分かるか(僕らの計算です)
僕らの計算です。本当の合格率が80%の仕組みを、10問で測ったとします。テストのたびに合格数が揺れる幅の目安(標準偏差)は、√(0.8×0.2÷10) ≒ 0.126、つまり約±13ポイントです。問題数と揺れの幅は次のとおりです。
| 問題数 | 揺れの幅(目安) |
|---|---|
| 10問 | 約±13ポイント |
| 50問 | 約±6ポイント |
| 100問 | 約±4ポイント |
この計算は、各問題が独立で、合格率が同じとした単純な仮定です。実際は問題ごとに難しさが違います。それでも、次のことは言えます。10問のテストで「前は8問、今回は7問合格」は、改善や悪化の証拠になりません。10問の役目は、明らかな壊れ方を見つけることだと思います。小さな差を見たいときは、問題数を増やすか、同じ問題を複数回走らせて平均を取ります。
よくあるつまずき
- 開発に使った問題で、そのまま出荷判断をする。 Anthropicの図では、プロンプトの調整は手元のテストで行い、出荷前には「取り置きした評価(held-out evals)」で確かめる流れになっています。見立てです。調整に使った問題は、いわば答えを知っている状態なので、その点数だけで判断するのは危ういと思います。
- 平均点だけを見る。 全体の合格率が同じでも、特定の型の入力だけ壊れていることがあります。
- 採点の基準が曖昧。 「いい感じの要約」は採点できません。「3文以内」「固有名詞が原文と一致」のように、数えられる条件に分解します。
- 採点用のAIを替えて、点数の比較ができなくなる。 基準を変えたら、過去の結果と同じ条件で再採点します。
- 評価の道具が止まる。 OpenAIのEvalsのように、管理画面型のサービスは終了することがあります。テストの入力と合格条件を、自分の手元のファイルで持っておくと、道具を替えやすくなります(見立てです)。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。手順は、文書の内容を僕らが整理した見立てです。
- 日付と終了予定は、OpenAIの文書に書かれたものです。変わる可能性があります。
- 「10問から始める」は、僕らの見立てです。Anthropic・OpenAIの文書には、この数字は書かれていません。文書は、数は多いほうがよく、実際の利用に似せることが大事、という立場です。
- 10問の揺れの計算は、単純化した仮定です。
- Promptfooの設定例は、公式文書のものを短くまとめたものです。モデル名などは、文書の書き方のままで、現在の利用可否は確かめていません。
- AIで判定する場合、評価したい入力や出力を判定用のAIにも送ることになります。機密や個人情報を含む場合は、送ってよいか、契約や社内規則で確認してください。
出典
- Working with evals(OpenAI API、OpenAI、2026年10月22日確認)
- Evaluation best practices(OpenAI API、OpenAI、2026年10月22日確認)
- Deprecations(OpenAI API、OpenAI、2026年10月22日確認)
- Moving from OpenAI Evals to Promptfoo(OpenAI Cookbook、OpenAI、2026年10月22日確認)
- Define success criteria and build evaluations(Claude Platform Docs、Anthropic、2026年10月22日確認)
- Configuration(Promptfoo Docs、Promptfoo、2026年10月22日確認)
- Assertions & metrics(Promptfoo Docs、Promptfoo、2026年10月8日確認)
- CI/CD(Promptfoo Docs、Promptfoo、2026年10月22日確認)
- promptfoo(npm registry、2026年10月22日確認)
更新履歴
-
2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
-
2026年10月22日 公式の資料を読み直して、次の点を直しました。
- 前:採点は、コード判定を先に使い、AI判定は後 → いま:コード判定を先に検討し、AI判定は信頼できると確かめてから使う
- 前:Anthropicは採点方法を速い順に挙げた → いま:文書の並びはコード・人間・AIの順で、速い順は並べ替え
- 前:AI判定の前に、理由を考えさせると成績が上がる → いま:判定用のAIの思考(thinking)をオンにして推論させる
- 前:Promptfooの最新版は0.124.0 → いま:0.124.1
