AIを組み込んだ処理を本番に出す前に、試験を回して挙動を確かめます。ここで件数を増やせば安心かというと、そうではありません。
不具合を4つ仕込んだ実装で試したところ、素直な例を5件回しても不具合は0件でした。14件目まで進めた時点で、5件すべてが出ています。
不具合を仕込んだ実装で実際に回しました。素直な例では0件、境目の例を含む14件目で5件すべてが出ます。
シミュレーション評価の効き方を、実際に不具合を仕込んで確かめました。題材は問い合わせを担当課に振り分ける実装です。
実装には4つの不具合を仕込んであります。試験は本当に実行しており、検出数は実測です。
function route(text) {
if (text.includes('返金')) return '経理';
if (text.includes('請求')) return '経理';
if (text.includes('故障')) return '技術';
if (text.includes('解約')) return '営業'; // 不具合1: 解約は法務が正
if (text.includes('見積')) return '営業';
if (text === '') return '営業'; // 不具合2: 空文字は保留にすべき
if (text.includes('請求') && text.includes('故障')) return '技術'; // 不具合3: 到達しない
if (text.length > 200) return '営業'; // 不具合4: 長文は要約に回すべき
return '営業';
}
試験件数 見つかった不具合 見逃した不具合
1件 0件 5件
5件 0件 5件
10件 1件 4件
14件 5件 0件
20件 5件 0件
40件 5件 0件
全 40件を回して見つかった不具合(5件)
「領収書を再発行したい」 期待 経理 / 実際 営業
「解約したい」 期待 法務 / 実際 営業
「(空文字)」 期待 保留 / 実際 営業
「請求書の件で故障の相談です」 期待 技術 / 実際 経理
「ああああああああああああ…(250文字)」 期待 要約 / 実際 営業
件数と検出数が比例していません。5件でも0件、14件で5件、そこから26件足しても0件のままです。
最初の9件は「返金してほしい」「見積をお願いします」といった素直な問い合わせです。実装はこれらを正しく振り分けます。正しく動く範囲を何件確かめても、壊れている場所には触れません。
後半に足した26件も同じ性質のものです。ですから検出は増えませんでした。
10件目から14件目に、境目の入力を集めてあります。語が別の分岐に先取りされる例、空文字、条件が重なる例、極端に長い例です。ここで5件すべてが出ました。
仕込んだ不具合は4つでしたが、検出は5件です。5件目の「領収書を再発行したい」は仕込んだ覚えのない漏れで、書きながら気づいていませんでした。試験の結果を記録に残す設計はエージェント可観測性の記事で扱っています。
不具合3は分かりにくい種類です。「請求」の判定が先にあるため、その後の複合条件には決して到達しません。読んで気づける人もいますが、動かせば確実に出ます。コードを自分で見直させる方法では見つけにくい種類でもあり、その限界は自己反省の記事で扱っています。
件数を増やしても、素直な例ばかりなら検出は増えない。
Be task-specific: Design evals that mirror your real-world task distribution.原文Claude Platform Docs「Define success criteria and build evaluations」 この内容の有効期限2027-02-17
実際の仕事の分布を写したうえで、境目を足します。採点はコードでできる形に寄せてください。
シミュレーション評価の設計は、何を入力に選ぶかと、どう採点するかの2つで決まります。前の節の結果が、前者の重要さを示しています。
Anthropicは方針を明確に示しています。その仕事に固有の試験にすること、つまり実際の仕事の分布を写した試験を設計することだという書き方です。
同じ文書では、境目の例を忘れないようにという注意も添えられています。前の節でいえば、10件目から14件目にあたる部分です。
1番目から検討してください。Anthropicも、コードによる採点は最も速く最も信頼でき、規模も広げやすいとしています。ただし規則で割り切れない judgment には向かない、という但し書きも付いています。
前の節では件数を増やしても検出が増えませんでした。ただしこれは足した26件が素直な例だったからです。
同じ文書には、自動で採点できるなら少し精度の落ちる問いを多く用意するほうが、質の高い手作業の試験を少数用意するよりよいという方針も示されています。自動採点が前提であれば、件数は効きます。
自動で採点できるなら件数は効く。できないなら中身で稼ぐ。
Code-based grading: Fastest and most reliable, extremely scalable, but also lacks nuance for more complex judgments that require less rule-based rigidity.原文Claude Platform Docs「Define success criteria and build evaluations」 この内容の有効期限2027-02-17
本番に出す前に、決めた入力を流して結果を採点します。何をもって成功とするかを先に決めるところから始まります。
シミュレーション評価は、本番に出す前に決めた入力を流し、返ってきた結果を採点する仕組みです。人が触る前に、機械で挙動を確かめます。
始める順番が決まっています。試験を作る前に、何をもって成功とするかを決めます。ここが曖昧だと、結果が出ても読めません。
基準は測れる形にします。「性能がよい」ではなく「振り分けの正答率が95%以上」と書きます。数値にできない基準は、判定の段でぶれます。
Anthropicの方針は明確です。自動採点であれば、多少精度が落ちても問いを多く用意するほうが、手作業で丁寧に採点する少数の試験よりよいとしています。
手作業は遅く、変更のたびには回せません。回せない試験は、しばらくすると誰も回さなくなります。
押さえておきたい限界があります。試験で分かるのは、試験に含めた範囲の挙動だけです。通ったからといって、含めていない場面が正しいとは言えません。
前の節で気づいたことがあります。仕込んだ不具合は4つだったのに、検出は5件でした。5件目は書きながら見落としていた漏れです。自分で書いた実装でもこうなるので、試験を回す価値は仕込んだ分を確かめる以上にあると考えています。
Prioritize volume over quality: More questions with slightly lower signal automated grading is better than fewer questions with high-quality human hand-graded evals.原文Claude Platform Docs「Define success criteria and build evaluations」 この内容の有効期限2027-02-17
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る