Slide 1

Slide 1 text

Decision modelの Cloudflare「Clef-Flash」を ローカルで動かしてみた クラスメソッド株式会社 クラウド事業統括本部 プロフェッショナルサービス事業部 荒平 祐次 / arap

Slide 2

Slide 2 text

about me 荒平 祐次 (Arahira Yuji) @eiraces クラスメソッド株式会社 クラウド事業統括本部 プロフェッショナルサービス事業本部 シニアソリューションアーキテクト 2025 Japan AWS Top Engineer AWS Community Builder (Serverless) VMware vExpert 2021-2026 2

Slide 3

Slide 3 text

Clef-Flash について

Slide 4

Slide 4 text

そもそも Decision model とは? - 代表的なモデルが「Jev」 - TypeSafe AI が2026年9⽉に公開した判断専⽤モデル - ⽂章は⽣成せず、型付きの答えと確率だけを返す - 出⼒は Choice / Score / Noul の3形式 - ⾮常に軽量、そして安い - 回答の際はコンテキストを加味しないモデルが多い 4

Slide 5

Slide 5 text

Cloudflare社のDecision model「Clef」 登場 - 2026年10⽉1⽇、Cloudflare が Clef / Clef-flash を発表 - Jev と API 互換の「判断モデル(Decision Model)」 - Clef: 27B(Qwen3.8-27Bベース) - Clef-flash: 9B(Qwen3.5-9Bベース) - 重みは Apache 2.0 で Hugging Face に公開 → ローカルで動く! - 画像‧動画⼊⼒対応 - https://huggingface.co/Cloudflare/clef-flash 5

Slide 6

Slide 6 text

Jev と Clef をざっくり⽐較 6 項⽬ Jev Clef 提供元 TypeSafe AI Cloudflare 重み ⾮公開 オープン(Apache 2.0) 価格(⼊⼒100万トークン) $0.042 $0.24(ローカルなら0円) ⼊⼒ テキスト テキスト‧画像‧動画 実⾏場所 TypeSafe API / Vercel AI Gateway Workers AI / ローカル(Ollama)

Slide 7

Slide 7 text

Clef と Clef-flash の違い 7 項⽬ Clef Clef-flash パラメータ数 27B 9B ベースモデル Qwen3.8-27B Qwen3.5-9B 速度(Jev⽐‧公表値) 半分以下 1/10以下 精度(Cloudflare⾃⼰評価) 他のオープン判断モデルより⾼い 多くのモデルと同等 必要VRAM(64K‧同時実⾏1) 85GB 41GB Workers AI モデル名 @cf/cloudflare/clef @cf/cloudflare/clef-flash 向いている⽤途 精度重視の判定 ⾼頻度‧低レイテンシの判定

Slide 8

Slide 8 text

Decision model のユースケース

Slide 9

Slide 9 text

Decision model の使いどころ あくまで⼀例です: - モデルの振り分け - プロンプトを読み、複雑なものはOpusへ - 危険コマンドの監視 - 危険度をスコアリング、書き込み‧削除を禁⽌ - Teams通知の仕分け - 重要そうなものは特別に再通知 - 集中モード判定 - アクティブウインドウを監視し、作業中かどうか 9

Slide 10

Slide 10 text

ローカルで動かすには - Ollama v0.35.1 で Clef / Clef-flash に対応 - 必要なVRAM(64Kコンテキスト‧同時実⾏1の場合) - Clef-flash: 41GB以上 / Clef: 85GB以上 - 通常では動かない可能性が⾼く、量⼦化など必要 - 今回の検証環境 - Macbook Pro Late-2024 (Apple M4 Pro) - MacOS Tahoe 26.6.2, Unified Mem 48GB 10

Slide 11

Slide 11 text

セットアップ

Slide 12

Slide 12 text

以下のようにセットアップします 12 検証時点では、 ollama version is 0.40.11

Slide 13

Slide 13 text

⾃信なさげだな‧‧‧ 13

Slide 14

Slide 14 text

とりあえず花ではないことは分かった 14

Slide 15

Slide 15 text

やってみた① Claude Code の実⾏内容を分類

Slide 16

Slide 16 text

Claude Code の作業を可視化 やりたかったこと - Claude Code が何に時間を使っているか、実はよく分からない - プロンプトを1件ずつ Clef で分類して集計したい - implementation: 実装依頼(コード記述‧変更) - research: 調査依頼(調査‧確認‧⽐較) - documentation: ドキュメント作成(⽂書‧資料を執筆‧修正) - environment: 環境構築‧設定(インストール‧設定変更) - qa: Q&A(知識や仕様についての質問に答えてもらう) - chat: 雑談(作業と関係のない会話‧感想‧あいさつ) 16

Slide 17

Slide 17 text

Claude Code の作業を可視化 - 考えられるメリット - 作業集計に使えそう - トークン節約のヒントになりそう - ローカル実⾏なので、コマンドやパスを外部に出さずに済む Open Telemetry は外部通信が発⽣する… 17

Slide 18

Slide 18 text

実際にやってみた ① Claude Code の UserPromptSubmit フックで⼊⼒を受け取る ② ローカルの Clef-flash(Ollama)に Choice で問い合わせ ③ 分類結果と確率を JSONL に追記 ④ セッション終了時に集計してサマリを表⽰ 18

Slide 19

Slide 19 text

① Claude Code の UserPromptSubmit フックで⼊⼒を受け取る - プロンプトを送信した瞬間に、フックがスクリプトを呼び出す - async: true でバックグラウンド実⾏するので、Claude Code は待たされない仕様 19

Slide 20

Slide 20 text

② ローカルの Clef-flash(Ollama)に Choice で問い合わせ - Ollama の /v1/systemone に POST する - 同点のときは先頭の選択肢が選ばれるので、並び順も意識する必要あり 20

Slide 21

Slide 21 text

③ 分類結果と確率を JSONL に追記 - セッションごとに ~/.claude/clef-logs/.jsonl に1⾏ずつ追記 - 選ばれた選択肢だけでなく、全選択肢の確率が残される - 判定時間(latency_ms)も記録して、あとで集計できるようにする 21

Slide 22

Slide 22 text

④ 応答ごとに⼀⾏サマリを出す - プロンプト毎に Clef による分類が実⾏される - 詳細が知りたい時はコマンドで知れるようにした 22

Slide 23

Slide 23 text

④ 応答ごとに⼀⾏サマリを出す 23

Slide 24

Slide 24 text

やってみた② ⾃分の「集中モード」判定

Slide 25

Slide 25 text

⾃分の集中時間を測る やりたかったこと - 1⽇のうち、本当に集中できている時間はどれくらいか取りたい - アクティブウィンドウを定期的に取得して Clef で判定 - 判定: 集中 / 雑務 / 休憩 - 判定ごとに時間を集計し、⽇次で振り返る - 考えられるメリット - ウィンドウは機密の塊なので、外部通信を含めたくない ローカル実⾏すれば内部で完結できる! 25

Slide 26

Slide 26 text

実際にやってみた ① ⼀定秒数ごとにアクティブウィンドウのタイトル名を取得 ② Clef-flash に「集中 / 雑務 / 休憩」を Choice で問い合わせ ③ 結果を CSV(または SQLite)に記録 ④ 1⽇の終わりに分類ごとの時間を集計 26

Slide 27

Slide 27 text

① ⼀定秒数ごとにアクティブウィンドウのタイトル名を取得 - osascript で System Events に前⾯のアプリ名とウィンドウ名を問い合わせる - 操作のない時間が5分以上なら、Clef に聞かずに休憩扱いにする 27

Slide 28

Slide 28 text

② Clef-flash に「集中 / 雑務 / 休憩」を Choice で問い合わせ - state にアプリ名‧ウィンドウタイトル‧無操作の秒数‧時刻を渡す - 「このアプリなら集中」という対応表は持たず、選択肢の説明⽂から Clef が判断 28

Slide 29

Slide 29 text

③ 結果を SQLite に記録 - 判定1回ごとに SQLite へ1⾏追加(~/.local/share/clef-focus/focus.db) - 判定の間隔も⼀緒に保存するので、10秒‧60秒が混ざっても時間を正しく集計できる 29

Slide 30

Slide 30 text

③ 結果を SQLite に記録 30

Slide 31

Slide 31 text

④ 1⽇の終わりに分類ごとの時間を集計 - ./report.py --today で、分類ごとの時間‧割合‧主なアプリを集計 31

Slide 32

Slide 32 text

④ 1⽇の終わりに分類ごとの時間を集計 - ./report.py --today で、分類ごとの時間‧割合‧主なアプリを集計 32

Slide 33

Slide 33 text

さいごに

Slide 34

Slide 34 text

まとめ ● 軽量モデルなので、ローカルでも動かせる ● 確実な分類をしたいものには向いていないが、データの前処理や 雑にデータ取得したい場合に使えそう ● ⾊々できそうで楽しい 34