Japanese
English
植松です。最近流行りの意思決定モデルのjevを使って、Linux向けのツールを2つ開発しました。
ツールを作っている途中に、Cloudflareが判断モデルClef(27B)とClef-flash(9B)を発表しました。自由文を生成するチャットとは異なり、stateと型付き質問を渡して、Yes/Noの確率、選択肢、段階評価を返すAPIです。画像入力にも対応しています。Cloudflareの発表。
Linuxサーバーの障害調査で、どのログファイルから詳しく読むかを決める用途を想定し、3つの判断AIに同じ架空のログエントリー(個々の記録)と質問を渡しました。今回の評価単位は、ログ出力元ごとにまとめた抜粋です。検証したのは調べる価値の順位の妥当性であり、原因の確率や原因特定精度ではありません。
Crefは速いのか?
公式発表は43の評価ベンチマークでClef 209.3ms、Flash 38.8ms、Jev 524.1msという中央値を示しています。一方、AGIラボの実測では短い日本語入力1問はFlashが最速、40問一括ではJevが最速でした。公式値と実測値は呼び出し経路・入力・質問数が異なり、単純には比較できません。公式発表、AGIラボの測定。
発売日の実測では、画像リクエストに13〜30秒かかったという報告もあります。これは2026年10月1日の特定条件の観測で、現時点の全リクエストの速度を示すものではありません。Flavio Copesによる実測報告。
そこで今回確かめるのは、同じログ抜粋を同じ端末から送ったとき、各モデルの応答待ち時間と、抜粋の調査優先順位がどう変わるかです。公式値の追試でも、画像性能の試験でもありません。
測定条件
用語を区別します。ログファイルは記録を保存するファイル、ログエントリーは1件の記録です。今回のAPI入力 state.logs は実ファイルではなく、kernel や application などログ出力元ごとの架空の抜粋です。通常ケースは1抜粋につき1エントリー、長文ケースの kernel 抜粋は複数エントリーを含みます。採点・順位付けはエントリー単位ではなく、6つの抜粋単位で行いました。
- 測定開始(UTC):2026-10-06T23:53:55.506519+00:00。実行環境はLinux、Python 3.14.4です。実行端末の地域は未確認です。
- 入力は10種類の合成障害ケースと、同じOOM証拠を長文の先頭・中央・末尾へ移した3ケースです。合計13テストケースで、各ケースの6つのログ抜粋を6つのscore質問で評価しました。
- 各テストケースを3モデルそれぞれに送り、各組合せで27回の成功応答を得るまで実行しました。13ケース×3モデル×27回=1053件の成功応答です。実際には途中のHTTP429が1件あり、測定の呼び出し数は1054回でした。各モデル351件の成功応答になります。warmupなし、直列、毎回新しいTLS接続です。先頭モデルはケース・反復ごとに交替させました。
- TypeSafe System One APIとCloudflare Workers AIのAPIへ、同じstate/questionsを送りました。実サーバーログ・個人情報は使用せず、架空ログのみです。入力・質問順・採点ラベルは全モデルで固定しています。
- 採点用の正解ラベル(grade)は、各抜粋に事前に付けた無関係0・症状2・直接証拠3です。モデルへ渡す質問の4段階基準には間接情報1も含めています。正解ラベルはAPIへ送らず、返却スコアから作った調査優先順位の評価にだけ使いました。
- API往復と応答の契約検査までを測りました。ログ収集、mask、製品CLI全体、接続再利用、並列処理は測定していません。proxyやredirectは使わず、timeout20秒、最初のエラーで停止し、自動再送しない設定です。
- 返却モデル:jev=jev-1.13.0、clef=clef、clef-flash=clef-flashです。
実際の入力と質問(抜粋)
複数のログエントリーをまとめて送った実測ケースの例です。kernel の平常エントリーの間にOOMの記録があり、この内容を根拠に、kernelのログファイルを先に詳しく調べる判断を期待しました。
改行が見えるよう、入力をPythonの複数行文字列で示します。掲載用に kernel の全621エントリーからOOM前後の5件だけを抜粋しています。他の5出力元は実測でも各1エントリーです。時刻範囲などの項目と他の5問は省略しています。実測では省略前の入力を送りました。
state = {
"symptom": "API requests fail",
"logs": {
"routine-auth": "2026-10-01T10:00:00Z scheduled session closed normally",
"kernel": """2026-10-01T09:59:59Z routine health-check completed normally
2026-10-01T09:59:59Z routine health-check completed normally
2026-10-01T10:00:03Z Out of memory: Killed process 1234 (web-api), anon-rss:1048576kB
2026-10-01T09:59:59Z routine health-check completed normally
2026-10-01T09:59:59Z routine health-check completed normally""",
"routine-monitor": "2026-10-01T09:59:55Z collected standard metrics",
"routine-package": "2026-10-01T08:00:00Z package metadata check completed",
"routine-cron": "2026-10-01T10:00:02Z completed scheduled cleanup successfully",
"application": "2026-10-01T10:00:01Z Worker exited unexpectedly",
},
}
questions = {
"log2": {
"type": "score",
"instructions": "How valuable is it to examine kernel first to find the cause of the incident?",
"criteria": [
"Nothing related to the incident; can be skipped",
"Only indirect or routine information",
"Shows symptoms or effects of the incident",
"Shows the cause of the incident or its direct evidence; examine this first"
]
}
}
質問は log1 → routine-auth、log2 → kernel、log3 → routine-monitor、log4 → routine-package、log5 → routine-cron、log6 → application の順です。全6問は同じ評価基準で、質問文のログ出力元名だけを変えています。
比較用のラベルは、kernelを「直接証拠」、applicationを「症状」、残り4つを「無関係」としました。このラベルはAIには渡さず、回答の評価に使いました。3モデルには同じログエントリーと質問を送りました。
全体結果
測定として1054回呼び出し、1053件がHTTPと応答契約の検査に成功しました。途中のHTTP429は1件です。速度・順位の主集計には成功応答だけを使い、各モデル351件を揃えました。失敗は別に記録しています。
| モデル | 成功/試行 | p50秒 | p95秒 | 最短〜最長秒 | Top1 | Top3 | nDCG | 首位同点 | 入力tokens合計 |
|---|---|---|---|---|---|---|---|---|---|
| jev | 351/351 | 0.253 | 0.409 | 0.194〜0.696 | 351/351 | 351/351 | 1.0000 | 0/351 | 1698435 |
| clef | 351/351 | 0.740 | 3.553 | 0.315〜17.128 | 351/351 | 351/351 | 1.0000 | 0/351 | 1725219 |
| clef-flash | 351/352 | 0.258 | 1.161 | 0.178〜7.392 | 297/351 | 351/351 | 0.9745 | 0/351 | 1725219 |
p50は中央値です。p95は昇順351件の334番目(nearest-rank)です。Top1/Top3は最高gradeの抜粋が1位/上位3件に入った試行数、nDCGは全6抜粋の調査優先順位と設計時ラベルの一致(1が理想順位)を表します。同点順位は質問定義順に決め、首位同点も別に数えています。サービス全体のSLAを示す測定ではありません。
通常ケースと長文ケースを分ける
OOM関連が13入力のうち4入力を占めるため、通常10入力と長文3入力を分けて見ます。各モデルで、通常は270試行、長文は81試行です。
| 入力群 | モデル | 試行数 | p50秒 | p95秒 | Top1 | Top3 | nDCG |
|---|---|---|---|---|---|---|---|
| 通常10入力 | jev | 270 | 0.241 | 0.385 | 270/270 | 270/270 | 1.0000 |
| 通常10入力 | clef | 270 | 0.620 | 1.440 | 270/270 | 270/270 | 1.0000 |
| 通常10入力 | clef-flash | 270 | 0.243 | 0.624 | 270/270 | 270/270 | 1.0000 |
| 長文3入力 | jev | 81 | 0.350 | 0.464 | 81/81 | 81/81 | 1.0000 |
| 長文3入力 | clef | 81 | 3.206 | 3.875 | 81/81 | 81/81 | 1.0000 |
| 長文3入力 | clef-flash | 81 | 1.069 | 1.561 | 27/81 | 81/81 | 0.8893 |
ケース別の結果
各行は同じ入力の27反復です。時間の幅と最優先の抜粋の変化も載せています。
| ケース | モデル | p50秒 | 最短〜最長秒 | Top1 | nDCG | 最優先の抜粋ID | 入力tokens/回 |
|---|---|---|---|---|---|---|---|
| oom | jev | 0.237 | 0.200〜0.696 | 27/27 | 1.0000 | log2×27 | 1127 |
| oom | clef | 0.629 | 0.315〜2.285 | 27/27 | 1.0000 | log2×27 | 1202 |
| oom | clef-flash | 0.245 | 0.194〜0.816 | 27/27 | 1.0000 | log2×27 | 1202 |
| disk-full | jev | 0.245 | 0.215〜0.385 | 27/27 | 1.0000 | log2×27 | 1116 |
| disk-full | clef | 0.640 | 0.331〜1.773 | 27/27 | 1.0000 | log2×27 | 1193 |
| disk-full | clef-flash | 0.246 | 0.212〜0.872 | 27/27 | 1.0000 | log2×27 | 1193 |
| database | jev | 0.236 | 0.194〜0.395 | 27/27 | 1.0000 | log6×27 | 1110 |
| database | clef | 0.576 | 0.378〜1.300 | 27/27 | 1.0000 | log6×27 | 1187 |
| database | clef-flash | 0.237 | 0.206〜0.410 | 27/27 | 1.0000 | log6×27 | 1187 |
| dns | jev | 0.239 | 0.195〜0.304 | 27/27 | 1.0000 | log6×27 | 1119 |
| dns | clef | 0.706 | 0.357〜2.398 | 27/27 | 1.0000 | log6×27 | 1195 |
| dns | clef-flash | 0.252 | 0.197〜0.669 | 27/27 | 1.0000 | log6×27 | 1195 |
| tls-expired | jev | 0.239 | 0.201〜0.459 | 27/27 | 1.0000 | log1×27 | 1128 |
| tls-expired | clef | 0.535 | 0.339〜1.118 | 27/27 | 1.0000 | log1×27 | 1205 |
| tls-expired | clef-flash | 0.247 | 0.186〜0.605 | 27/27 | 1.0000 | log1×27 | 1205 |
| permissions | jev | 0.244 | 0.215〜0.611 | 27/27 | 1.0000 | log6×27 | 1113 |
| permissions | clef | 0.584 | 0.351〜1.472 | 27/27 | 1.0000 | log6×27 | 1190 |
| permissions | clef-flash | 0.238 | 0.178〜0.407 | 27/27 | 1.0000 | log6×27 | 1190 |
| database-lock | jev | 0.248 | 0.216〜0.421 | 27/27 | 1.0000 | log4×27 | 1114 |
| database-lock | clef | 0.726 | 0.443〜1.452 | 27/27 | 1.0000 | log4×27 | 1191 |
| database-lock | clef-flash | 0.242 | 0.194〜1.757 | 27/27 | 1.0000 | log4×27 | 1191 |
| service-start | jev | 0.244 | 0.218〜0.610 | 27/27 | 1.0000 | log3×27 | 1115 |
| service-start | clef | 0.586 | 0.406〜1.917 | 27/27 | 1.0000 | log3×27 | 1192 |
| service-start | clef-flash | 0.234 | 0.199〜0.918 | 27/27 | 1.0000 | log3×27 | 1192 |
| filesystem-readonly | jev | 0.233 | 0.201〜0.401 | 27/27 | 1.0000 | log5×27 | 1113 |
| filesystem-readonly | clef | 0.615 | 0.330〜1.476 | 27/27 | 1.0000 | log5×27 | 1190 |
| filesystem-readonly | clef-flash | 0.244 | 0.193〜1.116 | 27/27 | 1.0000 | log5×27 | 1190 |
| network-link | jev | 0.239 | 0.201〜0.446 | 27/27 | 1.0000 | log5×27 | 1106 |
| network-link | clef | 0.632 | 0.330〜1.939 | 27/27 | 1.0000 | log5×27 | 1183 |
| network-link | clef-flash | 0.252 | 0.208〜0.884 | 27/27 | 1.0000 | log5×27 | 1183 |
| long-oom-begin | jev | 0.340 | 0.306〜0.461 | 27/27 | 1.0000 | log2×27 | 17248 |
| long-oom-begin | clef | 3.177 | 2.855〜4.234 | 27/27 | 1.0000 | log2×27 | 17323 |
| long-oom-begin | clef-flash | 1.029 | 0.971〜1.902 | 27/27 | 1.0000 | log2×27 | 17323 |
| long-oom-middle | jev | 0.347 | 0.303〜0.572 | 27/27 | 1.0000 | log2×27 | 17248 |
| long-oom-middle | clef | 3.148 | 2.831〜3.875 | 27/27 | 1.0000 | log2×27 | 17323 |
| long-oom-middle | clef-flash | 1.106 | 1.004〜1.561 | 0/27 | 0.8340 | log6×27 | 17323 |
| long-oom-end | jev | 0.357 | 0.292〜0.467 | 27/27 | 1.0000 | log2×27 | 17248 |
| long-oom-end | clef | 3.274 | 2.805〜17.128 | 27/27 | 1.0000 | log2×27 | 17323 |
| long-oom-end | clef-flash | 1.069 | 0.993〜7.392 | 0/27 | 0.8340 | log6×27 | 17323 |
首位IDはケース内の抜粋を評価する質問ID(log1〜log6)です。番号はケースごとに変えており、log1を固定の正解にはしていません。長文3ケースは約41KBのJSON入力(kernelの抜粋本文約38KB)で、OOM証拠の位置だけを移しました。公称コンテキスト上限までの耐性試験ではありません。

採点ラベルの判断余地
測定条件で定義した採点ラベルには判断の余地があります。独立確認ではtls-expiredのapplicationのエントリーにも期限切れの原因が明記されていることが分かりました。元の採点に加えてapplicationをgrade3とする感度分析を別に行いました。元データ・主集計は変更していません。
| モデル | 元のTLS Top1 | applicationも直接証拠としたTop1 | 別ラベルのTLS nDCG |
|---|---|---|---|
| jev | 27/27 | 27/27 | 1.0000 |
| clef | 27/27 | 27/27 | 1.0000 |
| clef-flash | 27/27 | 27/27 | 1.0000 |
合理的な抜粋の選択が複数あるケースの順位差を、そのまま判断能力の劣化とは扱いません。入力の時刻は09:55〜10:05(中心の±5分、10分幅)です。stateのwindow_minutes=5は意味が曖昧ですが、全モデルで同じ入力を使っています。
費用の推計
| モデル | 入力100万tokensの公開単価USD | 今回351成功の推計USD |
|---|---|---|
| jev | 0.042 | 0.07133427 |
| clef | 0.24 | 0.41405256 |
| clef-flash | 0.09 | 0.15526971 |
合計は約0.6407ドルです。成功1053件の入力tokens×公開単価からの推計で、実際の請求額ではありません。無料枠、基本料、個別契約の割引は反映していません。Workers Paidを利用する場合は、基本料5ドル/月がこの利用料とは別にかかります。Workers基本料。1ドル150円と置くと約96円になります(為替相場の引用ではなく換算例です)。
Jevの単価は、今回TypeSafeの公式資料で確認した標準料金です。Clef系も含め、確認日は2026-10-07です。TypeSafe公式、Clef公式、Clef-flash公式。
結果から何が分かったか
今回の通常10入力の中央値は、jev 0.241秒、clef 0.620秒、clef-flash 0.243秒でした。
今回の長文3入力の中央値は、jev 0.350秒、clef 3.206秒、clef-flash 1.069秒でした。
最大待ち時間は、jev 0.696秒、clef 17.128秒、clef-flash 7.392秒でした。通信、キュー、前処理、推論の内訳は測っておらず、遅延の原因を無料枠・地域・モデル内部のいずれかに断定できません。
通常入力でのTop1一致は、jev 270/270、clef 270/270、clef-flash 270/270でした。長文入力では、jev 81/81、clef 81/81、clef-flash 27/81でした。
jevの長文は、先頭 27/27、中央 27/27、末尾 27/27で直接証拠を首位に選びました。直接証拠がTop3に残ったのは81/81でした。
clefの長文は、先頭 27/27、中央 27/27、末尾 27/27で直接証拠を首位に選びました。直接証拠がTop3に残ったのは81/81でした。
clef-flashの長文は、先頭 27/27、中央 0/27、末尾 0/27で直接証拠を首位に選びました。直接証拠がTop3に残ったのは81/81でした。
今回の結果からは、jevが現状最も信頼できてかつ高速で、clef-flashが単文限定ならあり(長文で精度低下)、clefが高精度だけど重い(費用&レイテンシ)とと言えるのではないかと思います。
- 351試行/モデルは13固定入力×27反復です。反復を増やして待ち時間のばらつきを観測しましたが、独立した障害題材が増えたわけではありません。長文3入力は同じOOMの派生です。
- 全ケースに直接証拠があります。正常時の誤警報、原因を示すエントリーの欠落、実運用の曖昧な障害、64質問やコンテキスト限界は評価していません。
- 暫定ラベルへの一致は原因特定精度の保証ではありません。実用性と機械的な契約・順位採点は別に評価する必要があります。
- 1053回でも、サービス全体のSLAや一般的な速度差の有意性を確定したとは言えません。
- 製品の提供元選択機能や本番設定は変更していません。
次は画像の判断を試したい
Clef系は画像を判断材料にできる点も興味深いところです。例えば画面の状態確認や画像の仕分けでは、自由文の説明ではなく決めた質問への判断を返せます。画像のあり/なしや誤判断例を見せるには別の記事が適しているため、今回のログ抜粋の比較とは分けて扱います。画像入力の公式仕様。
再現条件
今回の計測では比較ツールを作りました。 decisionbench.py 公開版の使い方はこちらです。Python 3.10以上で動き、合成ログとテストも同梱しています。
最初は上限1053回で開始し、停止後は成功済み400件を送らない開発用の続行runnerで残り653件だけ実行しました。各入力・モデル・反復番号・入力hashを照合しています。合成入力とモデルを変えず、保存済みの成功分から続けています。公開版にはこの続行runnerは含まれていません。
- 使用ツールSHA256:
bc8a418848996dc48212c475f47630b330165d5c609d8824162405093e4c01d0 - suiteファイルSHA256:
ff1b3c4da6cd03830ccc1c7df6b77f3a498b4c2f742c991272f7f61ce27c68d6 - 27反復を最初から実行する場合:
python3 tools/decisionbench.py --live --repeats 27 --max-requests 1053 --jev-price 0.042 --region unknown --plan <確認したプラン> --output <新規ディレクトリ>。これは同じ入力セットを一度に実行するコマンドで、今回の653件だけの続行を再現するものではありません。認証情報は実行プロセスへ供給し、コマンドや記事には記載していません。 - 集計対象は同じ13入力を各モデル27反復した1053件の成功応答です。測定外の接続確認などは含めていません。生のレスポンス、秘密値、実ログは保存していません。