思考的账单:一句「Bug」花了 866 token 与 53 秒
一个思考模型花了 866 个 token 和 53 秒,只为说出 "Bug"。Ollama 里关掉思考的三个开关 —— 以及一张实测账单,告诉你什么时候该扳动它们。
小票 · 本地 LLM 实测 · lfm3:1.7b · 2026-10-29 · CPU 机器 · 17 tok/s 手动换算
用ollama run <model> --think=false(命令行),在会话里敲/set nothink,或者在/api/chat或/api/generate的请求体里带上"think": false。--hidethinking只在你想要"保留思考但不显示"的时候用 —— 计费器照转不误。提示词里的/no_think就别碰了;它只是减少思考,不是关掉。
01自己试试 —— 账单,当场打印
这是真实日志记录的一次运行,原样重放。我们实测里的两个一词提问:“Bug” 冷启动花了 866 个思考 token 和 53.5 秒;“Crash” 热启动花了 589 个 token 和 34.4 秒。然后是同一个提问、关掉思考的样子。盯着计费器。
──────── · ────────
真实日志运行的合成重放 —— lfm3:1.7b,2026-10-29 · “关思考”一行是除法换算,不是实测,并且如实标注了
用 ×1 速度看的意义在于:每秒 17 个 token,你可以一边被计费、一边读它的思考。CPU 机器上每一次“感觉好慢”的对话都在干这件事 —— 打印一张你从没想看的发票,每 59 毫秒一个 token。
02为什么我的 Ollama 模型要想那么久?
因为最新的小模型都是混合思考模型:同一份权重既做聊天也做思维链,而大多数前端默认把思考开着。你看着它滚过去的每一句“嗯,让我再想想”,都是一个真实的 token,按你真实的每秒 token 数计费 —— CPU 机器上是 17/s,不是 GPU 动辄几百的速度。算术不好看,但很清楚:866 个思考 token ÷ 17 tok/s ≈ 51 秒的计费,然后回答才开始。
03在 Ollama 里怎么关掉思考?
三个开关,全部是 ollama 官方文档里的一等公民。按你所在的位置挑一个:
$ ollama run lfm3:1.7b --think=false
>>> bug or not? one word.
Crash
验证:输出里没有思考块;回答只用一小把 token —— 按我们实测的算术,大约一秒的打字时间,而不是五十秒。
POST /api/chat
{ "model": "lfm3:1.7b",
"messages": [{"role":"user","content":"bug or not? one word."}],
"think": false }
验证:响应里没有 thinking 字段 —— 换成 "think": true 时,同一个接口会把独白和回答分开,独白单独占一个字段。
还有那个看着像开关、其实不是的陷阱:--hidethinking。它让模型照常思考 —— 全价 —— 只是不把明细打出来。把小票藏起来,不等于没付钱。
坑位抽屉 —— 五个会咬人的地方
Modelfile 锁不住它。PARAMETER think false 会报 “unknown parameter” 错 —— think 只是请求体字段。每个客户端都得自己记得带上;服务端没有任何可以设置的默认值。
OpenAI 兼容端点说的是另一门方言。/v1/chat/completions 不认 think —— 跑在它上面的工具用的是 reasoning_effort,直接写 think:false 在那里会被静默忽略。
提示词里的 /no_think 是个提醒,不是开关。它能减少独白,但混合模型照样可以思考。请求体里的标志才是真正的关。
有些模型收的是档位,不是布尔值。新的思考元数据接受命名档位(low、medium、high)—— 由模型自己定义,所以去查模型卡片,别靠愿望。
num_predict 是预算上限,不是开关。它限制的是 token 总数,连思考一起算 —— 思考还没结束,你的回答可能先被截肢。用错工具了。
04思考到底花多少钱?看小票。
实测日志里未删改的原始行 —— 名字带 _ms 的字段装的是纳秒(日志自己的单位在骗人;我们手动除的),速率字段返回的是 null,所以每秒 token 数是我们自己做的长除法:866 ÷ 50.9 ≈ 17。
{"model":"lfm3:1.7b","load_ms":2326837325,"eval_count":866,"total_ms":53533988331,"response":"Bug"}
{"model":"lfm3:1.7b","load_ms":530219,"eval_count":589,"total_ms":34362526621,"response":"Crash"}
↑ 红色下划线:计费行 —— 53.5s 和 34.4s 的生成时间,866 和 589 个 token,换来两个一词回答
来源:我们的实测日志,2026-10-29 · lfm3:1.7b · 纯 CPU 虚拟机 · context 4096
| 小票上的行 | 冷启动提问 | 热启动提问 | 思考关闭 |
|---|---|---|---|
| 生成 token 数 | 866 | 589 | ≈ 一小把 |
| 生成时间 @ 17 tok/s | ≈ 51s | ≈ 34s | ≈ 1s 或更少 |
| 总耗时(实测) | 53.5s | 34.4s | — 未实测* |
| 模型加载 | 2.33s | 0.53ms | 同一个模型,同一次加载 |
| 回答 | “Bug” | “Crash” | 同一类词 |
* 诚实线:思考那一侧是实测;“关思考”一列是按同样的 tok/s 做的除法,并标注为算术 —— 小票法则覆盖实测的那一半,这句话覆盖剩下的。
“Bug” 是我们这台机器产出过的最贵的词。为了决定它,花了五十秒的思考。
05什么时候该让思考开着?
当回答比等待更值钱的时候 —— 整个契约就这一句。下面这些场景,账单能买到真东西:
- 数学和多步推理 —— 独白就是工作本身;砍掉它,砍掉的是你冲着来的准确率。
- 代码审查和规划 —— 模型需要它的草稿纸;反正都要付钱,
--hidethinking在这里是名正言顺的好选择。 - 任何“50 秒好过答错”的场景 —— 每晚批量跑的分诊,而不是交互式的。
当提问是分类形状的时候,把它关掉:一个词的回答、路由、查询、抽取、“这行日志里有没有失败”。花 866 个 token 在两个词之间做决定,等于租了一间空房 —— 房子不错,但你不在里面。
06这笔诚实的交易
这是还没解决的那件事。关掉思考,模型在你买它来干的那些活上变得更快、也更笨;开着思考,每次随口一问都要坐等五十秒。本地 AI 真正的旋钮不是模型大小,而是计费器握在谁手里。云把这张账单藏进订阅费里;在你自己的机器上,每个 token 打出来你都看得见。
我真正想要但还没得到的:一行 Modelfile,按模型锁死 think,让 “Bug” 只花一秒,而不用每个客户端都记得带标志。Ollama 的 issue 里已经挂着这个请求。在它落地之前,计费器归你看着 —— 也归你去扳。
两问收尾,家规如此:1) 你在自己的机器上抓到过最长的思考账单是多少?2) 你有没有抓到它给一个根本不需要思考的问题计了费?
选题:“ollama turn off thinking” —— DDG 自动补全,引用于 2026-10-31(法则 3c)· 家族需求:“best ollama model for reasoning” 相邻
凭证:lfm3:1.7b 实测日志 2026-10-29 —— eval_count 866 / 589 · 总耗时 53.53s / 34.36s · 加载 2.33s / 0.53ms · 17 tok/s 手动换算(API 速率字段为 null)· 语法对照 ollama.com/blog/thinking + docs.ollama.com/capabilities/thinking 核实,就在今天
预测(预注册):“ollama turn off thinking” 的展示将在发布后 ≤7 天内出现在 GSC
站内形态:交互账单 = app 通道;静态孪生版绘制这张小票 · 翻译 ×5 同批 · dev.to 先讨论