
文章を書かないAI「Jev」に開発判断を32件やらせた──94%正解、確信の低い12.5%を除くと残りは全問正解
文章を1文字も書かないAIに、開発中のiOSアプリの判断を32件やらせて、答え合わせをしました。30件正解(94%)。外した2件は、どちらも確信度0.4前後でした。
外れが「迷っている帯」に集まっているなら、そこだけ人が見れば済みます。実際に0.35〜0.65を人へ回す線を引いたら、AIが自分で答えた28件は28件とも正解でした。
ただ、そこへ至るまでに一度つまずいています。精度を動かしたのは、指示文の工夫ではなく渡す材料のほうでした。 その三段階と、移せなかった仕事まで書きます。
先に結論
数え終わったあとの結論を、3つだけ先に置きます。
正解を自分で付けた32件で30件正解(94%)。外した2件の確率は0.37と0.46で、どちらも0.5付近に集まっていました
確率0.35〜0.65を「判定不能」として人に回すと、自動で確定した28件は28件とも正解。かわりに12.5%は答えが出ません
精度を決めたのは指示ではなく渡した材料。失敗ログをそのまま渡すと3件とも沈黙し、「同じテストが他の実行で何回通ったか」を足した瞬間に確率0.94〜0.97で決まりました
判定専用のAIは、ふつうのAIと何が違うのか
まず、何を触ったのかを書きます。TypeSafe AI が9月15日に早期アクセスで開けた Jev というモデルで、同社はこれを System One モデルと呼んでいます。
ふだん使っているAIは、次に来る言葉を選び続けて文章を作ります。こちらは文章を作りません。状態を読んで、こちらが先に決めておいた候補の中から1つと、その確率を返すだけです。
公式ドキュメントの書き方がはっきりしていたので、そのまま引用します。
System One models do not write replies, produce code, or generate explanations of their reasoning.
返ってくる型は3つだけです。Choice(候補から1つ選ぶ)、Score(数値を返す)、Noul(そうである確率を返す)。呼び先は POST /v1/systemone で、既定のモデル名は jev-latest です。

値段と速さも公開されています。入力100万トークンあたり0.042ドル、出力は無料。応答は70ミリ秒から500ミリ秒。
そして、ここが今日のいちばん大事な但し書きです。公式は較正(言った確率と、実際に当たる頻度が合っていること)についてこう書いています。
Calibration is measured across groups of predictions; it does not guarantee that an individual answer is correct.
較正は「まとめて見たときの話」であって、1件ずつの正しさは保証しない。 売り込みたい側が自分で限界を書いているので、こちらも同じ粒度で確かめることにしました。

答え合わせのために、まず正解を32件つくった
「使ってみたら賢かった」で終わらせないために、先に正解を用意しました。ここが今日いちばん再現してほしい部分です。
自分の開発でくり返し出てくる判断を、4種類に分けて32件集めました。日本語です。
画面に出す文言が、表記の決まりに違反していないか
実装が、受け入れ条件を満たしているか
画面の構造が、決めた規則どおりか
テストが落ちた原因が、実装の不具合か、たまたまか
集め方は素朴です。過去に自分が判断して、結論が確定しているものだけを拾いました。まだ揉めている案件は入れません。正解が揺れている問題で答え合わせはできないからです。
件数は多いほどよいわけでもなく、20〜30件あれば傾向は見えます。私は32件で止めました。1件ずつ「入力」と「正しい答え」を並べたら、それがもう評価セットです。
走らせた結果はこうなりました。
正解は30件 / 32件(94%)、外れは2件
入力は合計13,892トークン、費用は0.00058ドル
1回あたりの応答は70〜500ミリ秒
数字だけ見れば94%は上出来ですが、ここで止めると使えません。残り6%がどこに出るかが分からないと、業務には入れられないからです。

外した2件は、はっきり「迷っている帯」にいた
外れた2件の確率を見ました。0.37と0.46です。
どちらも0.5の周りにいます。逆に、0.5から離れたところで返ってきた答えは1件も外していませんでした。間違いは、決めかねている場所に固まっていました。全体に散らばってはいません。
これは前回の記事で書いたこととちょうど裏返しです。文章を生成するAIに「自信は何%か」を申告させたときは、当てた回88.3%・外した回87.7%で、自信の数字が当たり外れを区別していませんでした。
同じ「自信」という言葉でも、あとから言わせた自信と、最初から確率を返すために作られたモデルの確率は別物でした。少なくとも私の32件では、後者は使える形をしていました。
0.35〜0.65は人に回す、という線を引いた
分布が分かったので、運用の線を引きます。
確率が0.35未満か0.65超のときだけ自動で確定し、あいだは判定不能として人に回す。 この設定で数え直しました。
自動で確定したのは28件。そのうち正解は28件、つまり100%
人に回ったのは4件。全体の12.5%です
外していた2件(0.37と0.46)は、どちらもこの帯の内側にいたので自動確定から外れている

正直に言うと、この結果は気持ちよすぎるので警戒しています。母数は32件で、28件中28件は「たまたま」でも起こりえます。公式の但し書きは、ここでもそのまま効いています。
Calibration is measured across groups of predictions; it does not guarantee that an individual answer is correct.
それでも運用の設計として大事なのは、「0件」と「判定できない」を別物として扱えるようになったことでした。違反0件という報告と、判定できないので見てくださいという報告は、意味がまったく違います。
閾値の0.35と0.65は、公式の推奨値ではありません。自分で取った32件の分布を見て決めた数字です。ここは各自で引き直すところになります。
精度を決めたのは、指示ではなく渡す材料だった
いちばん書きたいのはここです。うまくいかなかったとき、私は最初、指示文を直そうとしました。それは外れでした。
テストが落ちた原因を分類させる課題で、三段階の実験になりました。
失敗ログをそのまま渡す。 3件とも確率0.33〜0.52で判定不能でした
失敗した行の周辺コードを足す。 まだ判定不能です(0.47〜0.59)。少し上がりましたが、決め手になっていません
「同じテストが、他の実行では何回通って何回落ちたか」を足す。 3件とも確率0.94〜0.97で決まりました

落ち着いて考えれば当たり前でした。たまたま落ちたのか、実装が壊れているのかを分ける証拠は、失敗ログ本文のどこにも書かれていないのです。書かれていない情報は、どんなに指示をこねても出てきません。
つまり判定不能は、正しい動作でした。材料が足りないあいだ、このモデルは0.5付近を返し続けて、間違った断定を一度もしませんでした。
導入を考えている人にとって、ここが最初の作業になると思います。プロンプトを磨く前に、「その判断を下すのに本当は何が要るのか」を紙に書き出す。 私の場合それは、過去の実行履歴でした。
指示の範囲が広すぎると、平気で誤検出する
もう1つ、やらかした話を書きます。画面の文言50件を規約チェックにかけたときです。
初版の指示では、すでに承認されているキャッチコピーを「違反」と判定してきました。確率0.82。自信を持って間違えています。
原因は指示の範囲でした。「規約に違反していないか」だけだと、宣伝の言い回しまで検査対象に入ってしまいます。そこで対象をこう絞りました。
その製品の事実について述べている文言に限る。キャッチコピー・見出し・操作ラベルは対象外。
これで誤検出は消えました。50件で違反0件、判定不能1件、費用は0.0016ドルです。
確率が高いことは、問いが正しいことを意味しません。 聞き方が雑なら、モデルは雑な問いに自信満々で答えます。
移せた仕事と、移せなかった仕事
「すごい」で終わらせないために、移らなかったほうも同じ粒度で書きます。
文章を生成しないので、当然ながら設計も実装もテストコードも書けません。移せたのは判断の層だけでした。

とくに効いたのは、人が見る量が減ったことです。32件のうち28件は目を通さなくてよくなりました。費用の0.00058ドルより、この12.5%まで絞り込めたという数字のほうが実感に近いです。
一方で、画面の崩れは最後まで人の目に残りました。画像を読めないモデルなので、レイアウトが壊れていても分かりません。ここは公式も「まだ」と書いています。
入れる前に知っておくこと
期待だけ持って触ると外すので、引っかかった順に並べます。
材料が足りないと、何も決まらない。 生ログのままでは3件とも判定不能でした。使う側が「決めるのに要る証拠」を先に洗い出さないと、導入しても沈黙するだけです
指示の範囲が広いと誤検出する。 承認済みのコピーを0.82で違反と判定されました。対象を絞る作業が必ず要ります
理由を説明できない。 確率は返しますが、なぜそう判断したかは書けません。人に説明が必要な判断に単独では使えません
判定不能にする線は自分で決めるしかない。 公式の推奨値はありません。私の0.35〜0.65も、自分の32件の分布から出した数字です
早期アクセスで、止まったときに文句を言う先がない。 落ちたら人に回す経路は残しておくべきです
画像を読めない。 画面の見た目に関わる検査は移せません
よくある質問
触る前に私が気になっていたことを、そのまま置いておきます。
費用はどれくらいかかりますか
私の実測では32件で0.00058ドル、50件のチェックで0.0016ドルでした。入力100万トークンで0.042ドル、出力は無料という公開価格どおりの水準です。ただし早期アクセス中の価格なので、この安さが続くかどうかは分かりません。
いま使っているAIと置き換えるのですか
置き換えというより、分担だと思っています。設計・実装・文章はこれまでどおり生成するAIの仕事で、答えの候補が決まっていて、何度もくり返す判断だけをこちらに寄せる形になりました。
判定不能にする線はどう決めればいいですか
先に評価セットを作って、外した件の確率がどこに出るかを見てから決めるのが早いです。私は外れが0.37と0.46に出たので、それを含む幅として0.35〜0.65を取りました。判定不能が増えすぎるなら、閾値ではなく渡す材料を疑うほうが当たります。
明日やるなら、これひとつ
閾値の話も型の話も、評価セットが無いと始まりません。
自分の仕事から、答えが確定している判断を20件ほど集めて、入力と正解を並べるところまでやる。 それだけで、どのAIを使うかに関係なく「当たっているか」を自分で言えるようになります。
私がやった手順をそのまま置いておきます。

これを作るのに1時間もかかっていません。測れるようになってから、ようやく閾値を触る意味が出てきました。
なぜ書いたか
前回、文章を生成するAIに自信を申告させたら、当てた回と外した回で0.6点しか違わないという結果になりました。あのとき「では、最初から確率を返すために作られたモデルならどうなのか」が宿題のまま残っていました。
答え合わせをしてみたら、少なくとも私の32件では、黙るべきところで黙るほうが当たりました。ただそれ以上に、精度の話だと思っていたものが材料の話だったのが意外だったので、そこを残しておきたくて書いています。