OpenAIのEvals APIに入門する
Hello Datasets! - AgentKitでシステムプロンプトを評価するでは,GUIからシステムプロンプトの評価データセットを作って評価を実行しましたが,Evals APIを使うと,プログラマブルに評価の作成や実行管理ができます。
この記事は,AgentKit Evalsで使えるLLM Grader - Score Model GraderでGUIで作ったのと同等のプロンプト評価をEvals APIで再現したメモです。
評価系のツールキットはだいたい学習に時間が必要ですが,Evals APIも難しい部類のツール(と思う)です。独特の癖に慣れるまでは少し頑張る必要がありそう。
リファレンス
- Quickstart: Working with evals
- API doc: Evals API Reference
評価の作成から実行までの流れ
4ステップあります。
Evalオブジェクトを作成する
Evalオブジェクトは,評価に必要なデータソース定義と,評価基準(Grader)をまとめた構造体です。Create Evalで作成します。
テストデータをアップロードする
Evalの実行に使うテストデータをFilesにアップロードします。テストデータのフォーマットはJSONLです。 「テストデータ」とは具体的には,ユーザープロンプトや期待するAssistantレスポンスなどを含みます。Eval作成時に定義したデータソース定義と一致している必要があります。
Evalを実行する
Create Eval Runで,Evalオブジェクトにテストデータを渡して評価を実行します。
Eval Runの結果を取得する
Get Eval Runで,実行したEval Runの結果を取得します。
以下は具体的なコード例です。開発時はJupyter Notebookと,Evalsダッシュボードを併用するのが便利です。Evalsダッシュボードでは,APIから作成したEvalやRunを確認できます。(ダッシュボードでEval/Eval Run作成もできますが,入力項目が多くGUIのほうが手間がかかるので,作成はAPIを推奨です。)
1. Evalオブジェクトを作成する
=
=
レスポンスに含まれるidを控えておきます(Eval Run作成時に参照する)。
2. テストデータをアップロードする
JSONLで,データソース定義で指定したプロパティitem.input_text, item.expected_titlesを含むデータをJSONLで用意します。
このファイルをFiles APIでアップロードします。
=
=
レスポンスに含まれるidを控えておきます(Eval Run作成時に参照する)。
3. Evalを実行する
EvalのIDと,テストデータファイルのIDを指定して,Eval Runを作成します。
=
=
レスポンスに含まれるidを控えておきます(結果取得時に参照する)。
なお,1. のEvalオブジェクト作成が成功しても,Runが失敗することがあります。不正なtesting-criteria(Grader)が作られてしまい,実行時に失敗することがあるので,Runが失敗したらEvalの定義を頑張ってデバッグしましょう。私はEval定義の中の一部プロパティのint/floatの型ミスでRunに失敗していて,デバッグに3時間かかってつらかった。Eval作成時のvalidationを厳しくしてくれるといいなあ。
4. Eval Runの結果を取得する
=
=
レスポンスに,Evalで定義したGraderの評価結果がすべて含まれています。
CIに組み込んだり,定時バッチで本番環境でのデグレ検出をする際には,おおむねこのような流れでいけそうです。 またEval/Eval Runの作成の他,削除や一覧取得,実行中Runの停止といった管理APIが用意されています。
EvalsのGUI(ダッシュボード)
EvalやEval Runの履歴を目視で確認する時は,Evalsのダッシュボードを使います。
Eval一覧

Eval詳細

Eval Run詳細

これは Agents SDK+αのTipsを一人で書いていくアドカレ Advent Calendar 2025の24日目の記事です。