Cloudflare の Clef とは?Jev との違いをまとめてみた
こんにちは、けーまです。
2026年10月1日に、Cloudflare Workers AI で Clef という decision model が公開されました。
TypeSafe の Jev と同じ系統のモデルで、API も互換性があります。
この記事では、Clef の概要や Jev との違いを整理しつつ、同じ質問を両方に投げてレスポンスを比較した結果をまとめました。
1. Clef とは
Clef は、Cloudflare の Workers AI チームが初めて自社で学習させたモデルで、2026年10月1日に次の2つが公開されました。
| モデル | 位置づけ | ベースモデル | 料金(入力100万トークン) |
|---|---|---|---|
| Clef | 精度を重視する大きいモデル | Qwen3.8-27B | $0.24 |
| Clef-flash | 速度を重視する小さいモデル | Qwen3.5-9B | $0.09 |
料金は各モデルページ(Models: clef | Cloudflare Workers AI docs、Models: clef-flash | Cloudflare Workers AI docs)に記載されているものです。
どちらも重みが Apache 2.0 ライセンスで Hugging Face(Cloudflare/clef、Cloudflare/clef-flash)に公開されており、手元の GPU で動かすこともできます。
Clef は、TypeSafe社の Jev と同じく、文章を生成するのではなく、質問ごとに選択肢の確率を返す decision model です。
入力として状態(state)と型付きの質問を受け取り、例えば「この問い合わせは緊急か」「どのチームが担当すべきか」といった問いに確率で回答します。
質問の型は3種類あります。
-
noul:yes/no の質問。yes の確率を返す -
choice:決めた選択肢から1つ選ぶ。選んだ選択肢、選択肢ごとの確率、確信度を返す -
score:順序のある段階で評価する。確率で重み付けしたスコアと、段階ごとの確率を返す
2. Jev との違い
| 項目 | Clef | Jev |
|---|---|---|
| 提供元 | Cloudflare(Workers AI) | TypeSafe |
| 入力 | テキスト・JSON と画像(1リクエスト4枚まで) | テキスト・JSON のみ |
| 質問数(1リクエスト) | 64問まで | 上限の記載なし |
| コンテキスト | 64K トークン | 1リクエスト64K、state と最長の質問で32K |
| 料金(入力100万トークン) | $0.24(flash は $0.09) | $0.042 |
| 重み | 公開(Apache 2.0) | 非公開 |
| API | System One 互換 | System One |
モデルページの概要には動画にも対応していると書かれていますが、API のパラメーターにあるのは images だけで、動画の渡し方は書かれていません。
一番大きな違いは、画像を入力できる点です。
Jev は画像を受け取れないため、書類の画像を扱うなら先に OCR でテキスト化する必要がありますが、Clef は画像をそのまま判断材料として渡せます。
一方、料金は Jev のほうが安く、clef は Jev の約6倍です。
画像は URL ではなく、リクエストの images に埋め込んで渡します。
私の検証では、base64 にした画像を次のような data URL の形で並べて送り、PNG で通ることを確認しました。
"images": ["data:image/png;base64,iVBORw0KGgo..."]
モデルページには次の上限が書かれています。
| 項目 | 上限 |
|---|---|
| 枚数 | 1リクエスト4枚まで |
| 形式 | PNG、JPEG、WebP |
| 1枚のサイズ | 4MiB かつ 16メガピクセルまで |
| 画像の合計 | デコード後 8MiB まで |
| リクエスト全体 | 13MiB まで |
| URL での指定 | 不可 |
モデルページの原文では、画像は state の前に配置され、上記の上限があると説明されています。
Optional embedded PNG, JPEG, or WebP images placed before the state (max 4; 4 MiB and 16 megapixels each, 8 MiB total decoded; whole request body max 13 MiB). Remote URLs are not accepted.
引用元: Models: clef | Cloudflare Workers AI docs
API には互換性があり、Jev から切り替える際に変更するのは、エンドポイント、API キー、model の3点だけです。
同じ質問を Jev と Clef にそれぞれ送ってみます。
Jev に送る場合:
curl https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "Checkout has been failing for every customer for the last hour.",
"questions": { "urgent": { "type": "noul", "instructions": "Is this support request urgent?" } }
}'
{"model":"jev-1.13.0","answers":{"urgent":{"type":"noul","noul":0.97}},"usage":{"input_tokens":284,"output_tokens":20}}
Clef に送る場合($CLOUDFLARE_AUTH_TOKEN は Workers AI の権限を持つ Cloudflare の API トークン):
curl https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run/@cf/cloudflare/clef \
-H "Authorization: Bearer $CLOUDFLARE_AUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "clef",
"state": "Checkout has been failing for every customer for the last hour.",
"questions": { "urgent": { "type": "noul", "instructions": "Is this support request urgent?" } }
}'
{"result":{"model":"clef","answers":{"urgent":{"type":"noul","noul":0.9917}},"usage":{"input_tokens":154,"output_tokens":0}},"success":true,"errors":[],"messages":[]}
リクエストの内容は model の指定以外まったく同じですが、レスポンスの構造が異なります。
Jev はルート直下に answers を返すのに対し、REST API で呼んだ Clef は全体を result でラップし、同じ階層に success や errors を含めて返します。
REST API で Jev 用のコードを流用する場合は、answers を参照する前に result を取り出す処理を追加する必要があります。
3. 同じ質問を投げてみた
Clef のモデルページに載っているサンプルと同じ state と質問を、Jev(jev-1.13.0)、clef、clef-flash に5回ずつ投げました。
state は「1時間前から、すべての顧客で決済が失敗し続けている」というサポートへの問い合わせです。
これに対して、3つの型を1つずつ使った3問を、1回のリクエストでまとめて聞いています。
リクエストは次のとおりです(日本語のコメントは説明用で、実際に送る JSON には含めません)。
{
"model": "clef", // Jev なら "jev-latest"、clef-flash なら "clef-flash"
// 判断の材料(状態):1時間前から、すべての顧客で決済が失敗し続けている
"state": "Checkout has been failing for every customer for the last hour.",
"questions": {
"urgent": {
"type": "noul", // yes/no の質問。yes の確率を返す
"instructions": "Is this support request urgent?" // この問い合わせは緊急か
},
"team": {
"type": "choice", // 選択肢から1つ選ぶ
"instructions": "Which team should handle this request?", // どのチームが担当すべきか
"criteria": {
"billing": "Payments, invoices, and refunds", // 支払い・請求・返金
"technical": "Outages, errors, and configuration", // 障害・エラー・設定
"sales": "Plans and upgrades" // プラン・アップグレード
}
},
"severity": {
"type": "score", // 順序のある段階で評価する
"instructions": "How severe is the customer impact?", // 顧客への影響はどのくらい深刻か
// 0:影響なし、1:軽微、2:重大、3:致命的
"criteria": ["No impact", "Minor", "Major", "Critical"]
}
}
}
| 項目 | Jev | clef | clef-flash |
|---|---|---|---|
| 緊急か(yes の確率) | 0.96〜0.97 | 0.9906 | 0.9551 |
| 担当チーム(technical の確率) | technical(0.99〜1.0) | technical(0.8088) | technical(0.9355) |
| 深刻度(0〜3) | 2.99 | 2.9573 | 2.7182 |
| 5回の結果のばらつき | 小数第2位で揺れた | 5回とも同一 | 5回とも同一 |
| 入力トークン | 402 | 346 | 346 |
| 実行時間(中央値) | 0.238秒(238ms) | 0.478秒(478ms) | 0.294秒(294ms) |
| 料金(1リクエスト、1ドル150円で換算) | $0.0000169(約0.0025円) | $0.0000830(約0.0125円) | $0.0000311(約0.0047円) |
3つのモデルとも判定結果自体は一致しましたが、確率の値と桁数に違いが出ました。
Jev は確率を小数第2位まで返し、5回の試行の中で 0.96 と 0.97 が入れ替わりました。
clef と clef-flash は小数第4位まで返し、5回とも完全に同じ値でした。
実行時間は、私の検証環境では Jev が最も短くなりました。
ただし、実行タイミングやネットワーク状況、サーバーの負荷によって変動するため、今回の少ない試行回数で単純に比較することはできません。実行時間は、0.2〜0.5秒前後の範囲に収まっており、人間の体感としてはほとんど差がない水準と考えられます。
なお、Cloudflare が公表しているモデル側の処理時間(中央値)は clef 209.3ms、clef-flash 38.8ms、Jev 524.1ms です(Changelog | Cloudflare Docs)。
4. まとめ
Clef は Jev と同じ API で扱える decision model で、画像を入力できる点と重みが公開されている点が Jev との大きな違いです。
テキストだけの判断であれば料金の安い Jev、書類やスクリーンショットのような画像も判断材料に含めたいなら Clef が向いています。
Clef を使う際は、まず clef-flash で速度や精度を確かめ、不足があれば clef に引き上げる順で試すのが良さそうです。







