ツールを呼ぶかを Jev に判定させてみた

判定そのものは速くて安い。精度は判断の種類しだいだった。

分かれ道に立つチャットのロボットと、ストップウォッチを持った小さな審判。片方の道はコードを調べる道具箱、もう片方はすぐ返す吹き出しにつながっている
速さ

1 回の判定は約 0.3 秒。claude -p で Claude に聞くと、起動を含めて約 4 秒かかった

費用

1 回約 0.00006 ドル (定価からの計算。多い回で 0.00013 ドル)

精度

haiku と同じくらいで、sonnet・Opus よりはっきり低い。前の調べで足りるかを推し量る判断が苦手

何を試したか

以前、ツールを呼ぶかどうかを Jev に判断させる記事を読み、「ツールなどを Jev に判断させるには、ある程度文脈を渡さないと精度が出ないのでは」と投稿しました。

今回、社内で使っている要望ヒアリング AI で、ちょうど試せる場面がありました。この AI はお客様の話を聞き取って、要望をまとめます。返事を書く前に、システムのコードを調べるツールを呼ぶかを自分で決めています。この判断を Jev に任せたらどうなるかを、評価用の会話で擬似的に試しました。本番の会話には入れていません。題材は工場向けの業務システムですが、話の筋は、ほかの業務システムの問い合わせ窓口でも同じだと考えています。

確かめたかったのは、ツールを呼ぶ必要があるかを、Jev がどれだけ見分けられるかです。あわせて、その判定で要らない調べを省いたときに、返事が速く安くなり、質も保てるかを見ました。

ざいこのいちらんに品名もだしてほしいです
AI サーバーで 在庫一覧の画面のコードを調べる (claude -p・14 秒) → 答え方と選択肢を決める
AI
ご要望ありがとうございます☺️
在庫一覧の表に、「品名」を表示する列を追加したい、というご要望ですね。

「品名」の列は、「品番」の列のどちら側に置くのがよいですか?
21 秒後
✅ 品番の右隣📍 品番の左隣🔄 どれも違う
✅ 品番の右隣
AI サーバーで コードをもう一度調べる (claude -p・34 秒) → 要望を整理するここで調べ直す必要があるかを、今回 Jev に判定させた
AI
在庫一覧の表の「品番」列のすぐ右隣に、「品名」の列を追加します。内容を整理しました。
  • 表示するのは、各行の品番に対応する品名です。
  • (略)
この内容で記録してよいですか?
44 秒後
✅ この内容で記録する✏️ 少し違う🛑 やめる
✅ この内容で記録する
AI サーバーで 直す場所をコードで確かめてから、要望を記録する
AI
📝 要件を記録しました。
記録した内容は「カンバン」ページから確認・編集できます。
ご協力ありがとうございました☺️
図 1. 要望ヒアリング AI の会話の例。「AI サーバーで」の枠は返事の前に AI がしていることで、青い枠が今回 Jev に判定させた所。お客様役は評価で AI が演じたもので、秒はこの会話での実測。

図 1 のように、返事の待ち時間の大半はコードを調べる時間です。評価の会話では、返事の時間の約 4 分の 3 を占めていました。要らない調べを省ければ、返事が速く安くなります。そこで、調べる前に「このターンで調べる必要があるか」を Jev に判定させました (図 2)。

図 2. 判定役に決めさせたこと。外すと、要る調べを省いて返事が推測になるか、要らない調べで待たせることになる。

やり方

判定役に渡したもの

ターンごとに、次の 3 つを JSON で渡しました。

問いは次の 1 文です。判定役は「はい」の確率を 0 から 1 の値で返します。

社内システムの問い合わせ窓口の AI が、利用者の最新の発言 (latest_user_message) に答えようとしている。答えるために、システムのコード・設定・データの持ち方・過去の票を、これまでのコード調査 (previous_code_research) に書かれていない所まで新しく調べる必要があるか。これまでの調査と会話だけで答えられるなら no。

システムの画面の一覧や作りの説明は渡していません。システムの中身で判定役に届くのは、前の調べの結果に書かれていた分だけです。

実際に渡した材料の例 (「登録に失敗しました」のターン)
{
 "conversation_so_far": [
  {"role": "user", "content": "出荷のとこでとうろくおしたらエラーでます"},
  {"role": "assistant", "content": "ご報告ありがとうございます☺️ 「出荷」のところで登録を押すとエラーが出る、というご報告ですね。エラーが出たのは、どの画面での登録ですか?"},
  {"role": "user", "content": "📋 ダッシュボードの「事前登録」"},
  {"role": "assistant", "content": "「事前登録」の登録でエラーが出る、というご報告ですね。エラーが出たとき、画面にはどんなメッセージが表示されましたか?"}
 ],
 "previous_code_research": [
  "(1 回目の調べ) 登録のボタンがある画面の一覧と、それぞれの URL",
  "(2 回目の調べ・1,500 字で打ち切り) 事前登録のボタンと入力欄の場所、保存の処理、必須の項目、エラーになる条件 (必須の項目が空・数や日付の形が違う・対象が見つからない・すでに使われた登録を直そうとした)"
 ],
 "latest_user_message": "赤い字で登録に失敗しましたってでます"
}

前の調べの結果には社内のコードの場所が書かれているので、中身を伏せて要約しています。会話の改行は省いています。

Jev の値と時間・費用は、要望ヒアリング AI に組み込んだ判定と同じ問いの文と、同じ字数の上限で測りました。組み込んだ判定の文には「正しく答えようとしている」と「正しく」の 1 語が入っています。Jev に上の文で聞き直しても、精度はほぼ同じ (0.625) でした。前の調べの結果は評価の記録から取り出したため、道具の記録の文字 (先頭の content=' など) と、改行を表す \n が付いたまま渡しました。組み込んだ判定は、答えの文だけを渡します。1,500 字の枠に入った中身の字数は、答えの文だけを渡した場合の 99.7% でした。

結果

要る・要らないを見分ける精度は、AUC という物差しで比べました。0.5 が当てずっぽう、1.0 が完璧です。

図 3. 見分ける精度。Jev は haiku と同じくらい。上位のモデルの Opus でも 0.78 で、1.0 には遠い。
判定役精度 (AUC)1 回の時間1 回の費用
Jev 1.13.00.62約 0.3 秒約 0.00006 ドル
Claude Haiku 5.50.65約 3.9 秒約 0.0008 ドル
Claude Sonnet 5.50.76約 3.7 秒約 0.011 ドル
Claude Opus 5.50.78約 3.6 秒約 0.018 ドル

Claude の時間は、手元から CLI (claude -p) を起動する時間を含みます。API を直に呼べばもっと短くなる見込みです (測っていません)。Claude の費用は、haiku と sonnet は公開の料金表から出した目安、Opus は CLI が返した値で、CLI の起動の分も含みます。Jev の費用は、記録した 277 回の入力のトークン数に定価 (入力 100 万トークンで 0.042 ドル、出力は無料) を掛けた中央の値です。会話が長いほど上がり、多い回は 0.00013 ドルでした。

どの発言で当たり、どの発言で外れたか

Jev は発言ごとに「新しく調べる必要がある」確率を 0 から 1 の値で返します。0 に近いほど、調べなくても答えられるという見立てです。値がしきい値より低ければ調べを省く、という使い方をします。

評価の会話から 3 つの場面を選び、お客様の発言ごとに Jev の見立てと実際を並べました。その発言に返事を書くときに本当にコードを調べ直す必要があったかを、「実際」の欄に書きました。「やり方」で書いたとおり、AI が後から会話を読み直して付けたものです。

相談: 在庫の一覧に、品物の名前の列も出してほしい
AI
品物の番号の右に名前の列を足し、検索や並べ替えもできる形にします。この内容で記録してよいですか?
✅ この内容で記録する
Jev の見立て
0.23 = 調べなくてよさそう
ほかのモデル
haiku 0.04・sonnet 0.03・Opus 0.04
実際
調べは要らなかったまとめた内容を認めただけで、返事は記録した知らせだけだった
結果
当たり (どのモデルも当たり)
相談: 注文の一覧から、先月の注文が消えた。バグではないか
AI
この一覧は、最初は終わっていない注文だけを出す設定です。画面左上の「表示」を「全て」に切り替えても、出てきませんか?
❓ まだ切り替えていない
Jev の見立て
0.16 = 調べなくてよさそう
ほかのモデル
haiku 0.05・sonnet 0.03・Opus 0.05
実際
調べが要った前の返事は切り替えの場所を「画面左上」と大まかに書いていた。コードを調べて正しい場所が分かり、案内し直した
結果
外れ (どのモデルも外れ)
相談: 登録の画面で、登録を押すとエラーが出る
AI
エラーが出たとき、画面にはどんなメッセージが出ましたか?
赤い字で登録に失敗しましたってでます
Jev の見立て
0.44 = どちらとも言えない
ほかのモデル
haiku 0.30・sonnet 0.65・Opus 0.80
実際
調べが要った渡した前の調べには、入力の誤りで出るエラーは書いてあったが、この文が出る場合は書いていなかった。コードでは、権限が足りないときや想定外のエラーのときに出る文だった
結果
迷った (sonnet と Opus は見分けた)

お客様の発言は評価で AI が演じたものです。吹き出しの文は、分かりやすい言葉に直して短くまとめています。判定役が見たのは元の会話です。会話の最初の発言はどれも、Jev の値が 0.69 以上でした。最初はまだ何も調べていないので、高く出るのが自然です。

「この内容で記録する」のような確かめるだけの発言は、4 つの判定役がどれも低い値を出して当たりました。

「まだ切り替えていない」は、Opus も含めてどれも外しました。前の返事の案内が大まかだったと気づくには、本当の画面の作りを知っている必要があります。渡した材料には、それが入っていませんでした。

建物の外で首をかしげる小さな審判と、建物の中で画面の設計図を見ながら話す社員たち
図 4. 判定役 (左の審判) に見えるのは、渡された会話と前の調べだけ。ボタンが画面のどこにあるかは、システムの中 (コード) にしか書かれていない。

差が出たのは「登録に失敗しました」です。sonnet と Opus は高い値を出し、Jev と haiku は迷いました。この文が出る場合は、渡した前の調べに書かれていません。よくあるエラーの文の形から、調べないと原因が分からないと推し量れたかどうかの差だと見ています。Jev の 0.44 は、しきい値を 0.3 にすれば調べに回りますが、0.5 にすると省いてしまいます。

同じ材料を渡した Opus でも、精度 (AUC) は 0.78 でした。sonnet との差は揺れの幅の中です。渡した材料に無いことは、賢いモデルに替えても埋まりません。一方で、Jev と sonnet・Opus の差は、揺れの幅を超えていました。Jev は haiku と同じくらいで、渡した材料から一般の知識で推し量る判断が弱いと考えています。

実際に会話に入れてみた

「Jev の値がしきい値より低いターンだけ、調べを省く」形で、評価用の会話を流しました。

しきい値 0.3

省けたターン (2 ターン目以降)
11% (Jev が判定した 122 回のうち 14 回)
回答の質: 確かめきれていない
Jev だけを足した 16 会話では、Jev が省いたのは 30 回の判定のうち 1 回だけだった。48 会話の方はほかの変更と一緒に入れたので、Jev の分だけを取り出せない

しきい値 0.5

省けたターン (2 ターン目以降)
58% (16 会話・1 回)
回答の質: 事実の正しさと、要望のまとめの正しさが下がる傾向が出た

正解と突き合わせると、要った調べをあまり落とさずに省けるのは、2 ターン目以降の 1〜2 割まででした。評価で返事を大きく速くできたのは、Jev ではなく、前のターンで調べた結果を短い答えのまま次のターンへ渡す案でした (返事 1 回 38 秒 → 28 秒)。ただ、会話を 128 件ずつに増やして品質を測ると、拾えた事実の割合が 3.3 ポイント下がる傾向が出ました。コードを調べる役を軽いモデル (haiku) に替える案は、調べの費用が約 13 分の 1 になったものの、返事の速さはほとんど変わらず、コードを深く読む場面で結論の正しさが落ちる傾向が出ました。品質を先にしたいので、2 つとも本番には入れていません。

まとめ

現状の検証結果

← 一覧へ
つくったものの一覧 ・ 岸井厚郎 ・ 最終更新 2026-10-21