MacのローカルLLMに、実務を任せて比べた。
請求と着金を取り違えないか。ファイルを実際に読めるか。コードはテストを通るか。8モデルを、Senteで使う仕事の条件で比べました。
今回まず試すならQwen3.8 27B。直接API 6/6、Sente 2/2、コード94/94。Muse Glimmer 30Bも全課題を通過しました。各課題1試行の限定比較であり、汎用性能の順位や長期安定性の保証ではありません。
Sente開発者による実測です。独立第三者評価ではありません。Ollamaモデル名は導入したローカルタグに基づき、上流との同一性を独立監査した比較ではありません。
使える答えが、最後まで届いたか。
| ローカルモデル | 直接API・6課題 | Sente・2課題 | コードテスト |
|---|---|---|---|
| Qwen3.8 27B | 6/6 | 2/2 | 94/94 |
| Muse Glimmer 30B | 6/6 | 2/2 | 94/94 |
| Nemotron 3.5 Lightning | 5/6 | 1/2 | 47/94 |
| Qwen3 Coder 30B | 4/6 | 0/2 | 76/94 |
| Laguna S 2.1 nvfp4 | 3/6 | 0/2 | 47/94 |
| Laguna XS 2.1 Q4_K_M | 1/6 | 0/2 | 47/94 |
| Qwen3.5 122B Q4_K_M | 2/6 | 1/2 | 0/94 * |
| Bonsai 2 27B PQ2_0 | 5/6 | 1/2 | 47/94 |
* 122Bはコード2題とも未回答。コードの未回答・形式不正は、その課題のテストを満たさなかったものとして数えます。全ケースを実行して誤答したという意味ではありません。
6課題すべて合格した2モデルの課題時間中央値は、Qwen3.8が16.57秒、Museが88.62秒でした。これは単発の課題群での値です。一般的な速度倍率にはせず、失敗を含むモデルの短い時間も「仕事が速く終わる」とは扱いません。
比較した仕事と条件
- 取引集計:重複、pending、failedを除き、通貨別に集計。
- 状態判定:返金処理通知と実明細の減額、ローカル修正と本番反映を区別。
- 区間結合コード:逆向き・接する区間・ゼロ長区間に対応し、入力を変更しない。
- 最新イベントのコード:同時刻なら後のイベントを採用し、削除後に古い値へ戻さない。
- ファイル読取:資料中の偽の指示に従わず、記録値を返す。
- 請求・着金照合:参照番号の完全一致とsettledだけを使い、未着金額を計算。
資料はすべて架空データです。コード2題には各47ケース、計94ケースの固定・seed付きテストを使用。採点器は正常解だけでなく、空実装や同時刻処理のバグを落とす自己検証も通過しました。状態判定のnext_action_jaは型・文字数のみを自動検査し、意味の妥当性全体は採点していません。
- 機材:Apple M5 Max、128GiB。7モデルはOllama 0.35.0、BonsaiはPrism ML専用llama.cppフォーク。
- 直接API:OpenAI互換エンドポイント、temperature=0、seed=42、1ターン上限4096トークン。ウォームアップ後に逐次実行。推論モードはOllama既定、Bonsaiはmedium。
- Sente:ファイル読取と着金照合の2課題。Sente既定サンプリング、各210秒の期限。厳密JSONの型・書式と実ファイル読取を確認。直接APIの時間とは混ぜません。
同じ出力予算内で仕事を終えられるかを見る試験です。モデルごとに最大能力まで調整した試験ではなく、ランタイムや推論設定まで同一でもありません。
不合格にも、違う種類がある。
- Qwen3 CoderのSente読取:内容は正しくても真偽値が文字列で不合格。着金照合では金額の誤りもありました。
- Laguna SのSente読取:正しい値をコードフェンスで囲み、厳密JSONとして不合格。NemotronとLaguna Sの照合は推論中に正しい金額があっても最終JSONを届けられませんでした。
- LagunaのHTTP 500「empty Laguna tool call name」は実行環境との統合失敗です。知識問題の誤答とは区別します。
- NemotronとLaguna Sはコード課題の各1つで4096トークンを使い切り、最終回答が出ませんでした。
人が読むなら軽い書式違反でも、JSONを次の処理へそのまま渡す仕事では止まる原因になります。一方、この点数だけからモデルに答える能力がないとは言えません。上限やテンプレートを変えるなら別条件の試験として扱います。
Qwen3.5 122Bは、大きさだけでは決められない
Q4_K_M、約81.4GBの導入済みモデルを追加評価しました。取引集計と状態判定は合格。コード2題は4096トークンで未回答。直接APIのツール2題とSente読取は値が正しくてもコードフェンスで不合格、Sente照合は合格でした。中央値69.62秒は失敗込みなので速度順位には使いません。出力予算を増やした場合の能力は未確認です。
Bonsai 2 27B:7.21GBの専用モデルを動かす
公式資料によると、Qwen3.8-27Bを基にしたternaryモデルです。GGUFはPTQ1_0が約5.95GB、今回のPQ2_0が7,206,168,928 bytes、約7.21GB。これはモデルファイルの容量で、実測した実行時メモリではありません。
標準llama.cppではなくPrism ML専用フォークが必要です。macOS arm64版prism-b10743-adfffbeを使用し、GGUFのSHA-256は公式掲載値と一致しました。サーバーはcontext=65536、生成上限16384、reasoning_effort=medium。ただし比較リクエストは4096上限のままです。Sente評価の設定上のcontext=16384/output=4096も共通です。
直接APIは5/6。区間結合だけ4096トークンで最終回答が空になり、コードは47/94でした。中央値24.63秒は失敗込み。Senteは1/2で、照合時にbank.jsonのディレクトリ名を1文字誤り、権限拒否を繰り返してループ防止の終了コード4になりました。金額の計算間違いとは区別します。
初回Sente照合の終盤はQwen3.8の操作例収録と重なったため、BonsaiのSente処理時間は独立した速度比較には使いません。事前試行には空回答、ツール形式崩れ、highでHTTP 500もありました。公式の公称速度・精度は実測表に含めていません。
10月1日追記:失敗2課題を、同じ条件でもう一度
プロンプト・採点器・出力予算を維持し、各1回追試しました。Senteは同じ作業ディレクトリと設定で、新しいセッションを使用しています。
- 区間結合:109.395秒、不合格。4096トークン消尽、最終回答は空。
- Sente照合:210.016秒、不合格。パスのzz→cz誤りが再現し、読取成功0件で時間切れ。
初回はループ防止、追試は時間切れと終了方法は異なります。今回も金額計算まで到達していません。結果表は初回のままです。失敗だけの追試を成功分とつなぎ合わせた新スコアは作りません。出力予算増加や短いパスの効果も未確認です。
実際の操作画面


この操作例は値が正しくてもJSONの後ろに補足文が付き、厳密JSONでは不合格です。固定ベンチマークとは別プロンプトで、表の2/2をこの画面で再現したわけではありません。画像の形式・画面テキストは機械確認済みですが、画像自体の目視は未確認です。
短いコマンドで切り替える
このMacには4つの個人ショートカットを追加しました。一般配布版に最初から含まれるコマンドではありません。Senteを終了・再起動すると読み込まれます。
/local このファイルを読んで、未完了の項目をまとめて
/local-muse この設計で見落としている点を確認して
/local-122b この条件を整理して
/local-bonsai このファイルの状態を整理して
- Ollamaを起動します。このMacでは ~/.local/share/ollama-0.35.0/ollama serve を使用。稼働中なら二重起動は不要です。
- Sente再起動後、/localに依頼を続けます。Qwen3.8でその依頼を実行します。別モデルなら/local-museなどを使います。
- 画面ではCtrl+Pからモデル選択を開き、「このMac / On-device」を選択。回答欄のモデル名、Read表示、回答内容を確認します。
モデルを指定して新しいセッションを始めることもできます(対応するprovider設定が必要です)。
sente -m ollama/qwen3.8:27b
sente -m ollama/muse-glimmer:30b
sente -m ollama/qwen3.5:122b
sente -m bonsai/bonsai-2-27b
自分の環境に追加する設定例
対応モデルをOllamaへ導入し、~/.config/sente/sente.jsoncの既存providerへ以下をマージします。既存設定全体を置き換えないでください。タグやランタイム対応は導入時点で確認します。
{
"provider": {
"ollama": {
"name": "On-device",
"npm": "@ai-sdk/openai-compatible",
"options": { "baseURL": "http://127.0.0.1:11434/v1", "apiKey": "ollama" },
"models": {
"qwen3.8:27b": {
"name": "Qwen3.8 27B",
"tool_call": true,
"cost": { "input": 0, "output": 0 },
"limit": { "context": 16384, "output": 4096 }
}
}
}
}
}
~/.config/sente/command/local.mdに保存して再起動します。
---
description: On-device Qwen3.8
model: ollama/qwen3.8:27b
---
$ARGUMENTS
Bonsaiは専用サーバーが必要
このMacでは補助スクリプトを作成しました。次のパスは今回の個人設定で、配布済みインストーラーではありません。別環境では公式ガイドに従い、専用ランタイムとモデルを導入してください。
sh ~/.local/share/bonsai-2-27b/start.sh
# In another terminal:
curl http://127.0.0.1:18081/health
起動ターミナルは開いたままにします。Senteの接続先はhttp://127.0.0.1:18081/v1で、設定済みの/local-bonsaiを使用。このMacではOllama・BonsaiともOS起動時の自動起動は登録していません。
API料金0円と、完全ローカルは分けて考える
今回の推論はこのMacのOllamaとPrism MLランタイムを使い、外部モデルAPI料金は0円でした。機材代や電気代までゼロという意味ではありません。待受はどちらも127.0.0.1です。
通常のSenteには外部MCP、プラグイン、クラウドモデルを指定したエージェントがあります。主モデルを替えるだけで全処理がオフラインになるとは保証できません。今回は個人設定から分離した、読取だけを許可する評価環境です。
まずQwen3.8で自分の仕事を試す。別回答が欲しければMuse。小さいモデルファイルを試すなら、専用ランタイムと未回答の制約を踏まえてBonsai。速さや容量だけでなく、検証できる答えが最後まで届くかで選びます。