蓝耘 MaaS 的「思考成本」怎么样?我写了个剖析器,把 6 个模型扒了个底朝天
蓝耘 MaaS 的「思考成本」怎么样我写了个剖析器把 6 个模型扒了个底朝天你以为大模型的账单只按「输出字数」收错。很多模型在你看不见的地方疯狂烧着reasoning token——这笔「思考成本」可能占到总消耗的95% 以上。今天我用蓝耘 MaaS 的 OpenAI 兼容接口写了一个可复用的Token 成本剖析器maas_profiler.py把同一道题喂给 DeepSeek、Qwen、GLM、Kimi、MiniMax 五个家族的 6 个模型现场拆出延迟、思考税、有效信息密度和估算成本——结果有惊喜也有翻车。一句话结论先放这里模型思考税有效密度延迟估算单价(¥)一句话点评DeepSeek-V3.20%1.953.17s¥0.00039 性价比王零思考税、高密度、最便宜kimi-k2.50%1.842.21s¥0.00076快且省无思考税deepseek-v4-flash61%0.723.10s¥0.00168有思考但可控minimax-m3100%3.4811.14s¥0.00339密度最高但全靠想慢GLM-5.20%0.004.85s¥0.00492 翻车烧了 400 token 吐出 0 字符qwen3.6-flash95%0.075.16s¥0.00724 双重翻车最贵最水⚠️ 单价为测试日示例估算值见文末 PRICE 表以控制台实时单价为准。为什么需要这个工具之前三篇文章教了怎么用 OpenAI SDK 接蓝耘 MaaS半小时上手client.chat.completions.create()最小闭环 ✅404→402 排障models.list()查模型名、usage 读 Token ✅流式输出streamTruereasoning_contentmax_tokens陷阱 ✅但这些都只回答了「能不能用」。真正上生产前你必须回答一个更关键的问题同样一句话不同模型到底烧了多少 Token其中多少是「看不见的钱」因为reasoning_tokens思考 token不计入content但你照样要为它付费不同模型对同一道题的「思考深度」差异巨大——有的想 50 个 token 就够了有的想近千个 token 还答非所问cached_tokens能省钱但它真的命中了吗后文会给你一个反直觉的真实案例所以我写了这个maas_profiler.py。动手写一个「体检台」核心思路同一道题 ──→ 并行喂给 N 个模型流式调用 │ ├── 每个 model 记录 │ TTFT首字延迟 │ 总耗时 │ prompt / completion / reasoning / cached tokens │ 输出字数 │ 有效信息密度 字数 ÷ completion_token │ 思考税 reasoning_token ÷ completion_token │ 估算成本 (P×输入价 C×输出价 R×输出价) / 1M │ └── 输出 JSON 终端排列表完整代码可直接复制运行#!/usr/bin/env python3# -*- coding: utf-8 -*-蓝耘 MaaS 多模型「全身体检」剖析器importjson,os,timefromdataclassesimportdataclass,asdictfromopenaiimportOpenAI BASEhttps://maas-api.lanyun.net/v1DEFAULT_MODELS[deepseek-v4-flash,/maas/deepseek-ai/DeepSeek-V3.2,qwen3.6-flash,/maas/zhipuai/GLM-5.2,kimi-k2.5,minimax-m3,]DEFAULT_PROMPT用不超过80字解释 KV Cache 是什么并给一个生活类比。dataclassclassRow:model:str;ok:bool;err:strttft:float0.0;total_sec:float0.0prompt:int0;completion:int0reasoning:int0;cached:int0chars:int0;density:float0.0tax:float0.0;cost_yuan:float0.0head:strdefprofile(client,model,prompt,max_tokens):t0time.time();ttftNonecontent,reasoning[],[]streamclient.chat.completions.create(modelmodel,messages[{role:user,content:prompt}],max_tokensmax_tokens,temperature0.3,streamTrue,stream_options{include_usage:True},)usageNoneforchunkinstream:ifgetattr(chunk,usage,None):usagechunk.usageifnotchunk.choices:continuedchunk.choices[0].delta rgetattr(d,reasoning_content,None)cgetattr(d,content,None)if(rorc)andttftisNone:ttfttime.time()-t0ifr:reasoning.append(r)ifc:content.append(c)sectime.time()-t0 txt.join(content);reason.join(reasoning)ifusageisNone:returnRow(modelmodel,okFalse,errno usage)pgetattr(usage,prompt_tokens,0)or0compgetattr(usage,completion_tokens,0)or0ctdgetattr(usage,completion_tokens_details,None)rtgetattr(ctd,reasoning_tokens,None)or0ptdgetattr(usage,prompt_tokens_details,None)cachedgetattr(ptd,cached_tokens,None)or0returnRow(modelmodel,okTrue,ttftround(ttftorsec,3),total_secround(sec,3),promptp,completioncomp,reasoningrt,cachedcached,charslen(txt),densityround(len(txt)/comp,2)ifcompelse0,taxround(rt/comp,2)ifcompelse0,headtxt[:60].replace(\n, ),)defmain():keyos.getenv(LANYUN_API_KEY)ifnotkey:raiseSystemExit(请设置 LANYUN_API_KEY)clientOpenAI(api_keykey,base_urlBASE)rows[]forminDEFAULT_MODELS:try:rprofile(client,m,DEFAULT_PROMPT,400)exceptExceptionase:rRow(modelm,okFalse,errstr(e)[:80])rows.append(r)statusf[OK]{m:35s}税{r.tax:.2f}密度{r.density:.2f}¥{r.cost_yuan}\ifr.okelsef[ERR]{m:35s}{r.err}print(status)# 按「思考税」排序ok[rforrinrowsifr.ok]print(\n--- 思考税排行越低越省---)forrinsorted(ok,keylambdax:x.tax):print(f{r.model:35s}税{r.tax:.2f}密{r.density:.2f})withopen(profiler_results.json,w)asf:json.dump({rows:[asdict(r)forrinrows]},f,ensure_asciiFalse,indent2)if__name____main__:main()完整版含 PRICE 表和更多指标在 demo/maas_profiler.py本文展示的是核心逻辑精简版。运行方式exportLANYUN_API_KEY你的密钥 python3 maas_profiler.py它会自动用client.models.list()可选地列出所有可用模型完整版支持对每个模型发同一个 prompt流式同时捕获reasoning_content和content从usage.completion_tokens_details.reasoning_tokens提取隐藏思考量打印终端表格 写出profiler_results.json实战跑一遍数据说话我在 2026-07-31 下午实跑了一次题目是「用不超过 80 字解释 KV Cache 是什么并给一个生活类比。」这是一道需要「理解 类比 字数控制」的综合题能较好地区分出哪些模型在认真思考、哪些在空转。终端原始输出节选图python3 demo/maas_profiler.py实跑输出——6 个模型的 TTFT、Token 消耗、密度、思考税一目了然。注意 qwen3.6-flash 的R877近千 token 在「想」和 GLM-5.2 的CHARS0白花钱。三个「翻车现场」翻车一qwen3.6-flash 的「95% 思考税」看这行数据C 927 R 877 CHARS69 密度0.07 税0.95completion tokens 927看着不少reasoning tokens 877占 94.6%实际输出字数 69不到 80 字限制的一半有效信息密度 0.07每 14 个 token 才换来 1 个中文字翻译成人话qwen3.6-flash 花了近一千个 token 在「想」最后只挤出了 69 个字。而且它还花了 5 秒多才完成。这不是 bug是特性——Qwen 系列默认开启强推理模式对于简单题也会做大量内部推理。如果你用它做高频低复杂度的任务比如客服自动回复、文案润色这笔「思考税」会让你的账单膨胀好几倍。翻车二GLM-5.2 的「空转翻车」C 400 CHARS0 密度0.00 税0.00 ¥0.00492GLM-5.2 烧了400 个 completion token但输出了0 个可见字符。它既没有返回 reasoning_content税0也没有返回 contentchars0。最离谱的是——它的估算成本还是所有模型里第二高的¥0.00492。这说明 GLM-5.2 在这道题上出现了纯空转token 计费了但用户什么都没收到。可能是模型触发了某种内部格式化/工具调用流程但没有正常回退到文本输出。在生产环境中这种「白花钱」的情况比 404 错误更隐蔽也更危险——因为你连报错都没有只是账单悄悄涨了。翻车三minimax-m3 的「标签泄漏 无视字数限制」C 400 R 399 CHARS1391 密度3.48 税1.00 CACHE128 headThe user asks me to explain what KV Cache is in no mo...三个问题叠加思考税 100%399/400 个 token 都是 reasoning把Think标签漏进了正文输出的 head 以英文开头说明原始推理标签没有被正确剥离无视 80 字限制输出了 1391 字要求 ≤80唯一亮点它是唯一命中 prompt 缓存的模型cached128说明 MiniMax 的缓存机制确实在工作。但如果缓存命中的内容还是带着泄漏标签的超长回复……那缓存只是在加速错误而已。把数据画出来三张图看透真相图 1每个模型的 completion token 里「可见内容」vs「隐藏思考」各占多少这张堆叠柱状图一目了然DeepSeek-V3.2 / kimi-k2.5 / GLM-5.2蓝色柱子可见内容占满红色思考为零——它们不烧思考税deepseek-v4-flash约 40% 是思考合理范围qwen3.6-flash几乎全是红色927 个 token 里 877 个是思考——这是典型的「过度思考」minimax-m3100% 红色——它在用思考 token 来生成内容标签泄漏导致 content 被归入 reasoning图 2哪个模型「惜字如金」有效信息密度排行密度 输出中文字数 ÷ completion token 数。越高说明每个 token 越值钱。minimax-m33.48密度最高——如果不算标签泄漏的话它确实很能装信息DeepSeek-V3.21.95/ kimi-k2.51.84高密度 零思考税 性价比双冠deepseek-v4-flash0.72中等偏下被思考拖累qwen3.6-flash0.07灾难级——14 个 token 换 1 个字GLM-5.20.00零——白花钱图 3性价比散点地图——左下角又快又省X 轴 总延迟越左越快Y 轴 估算成本越下越省气泡大小 信息密度越大越值颜色红度 思考税越红越烧理想区域左下角绿色大气泡DeepSeek-V3.2 和 kimi-k2.5快~3s、便宜¥0.001、零思考税、高密度危险区域右上角红色qwen3.6-flash 和 minimax-m3一个贵且水一个慢且满脑子都是想法中间地带deepseek-v4-flash各项均衡适合通用场景深坑排查我以为开了缓存能省钱结果命中率 0%在写这篇文章的过程中我还做了一个 Prompt Cache 实验复用了_deep_lab.py的 LAB3结果让我大吃一惊实验设计构造一个超长 system prompt4229 字符然后连续发 3 次完全相同的请求观察cached_tokens是否增长rules(项目规范条目代码必须有类型注解禁止提交密钥API 错误要结构化。*120)system你是资深后端工程师。以下是超长项目规范用于缓存实验\nrules# system 长度 4229 字符forround_iin(1,2,3):respclient.chat.completions.create(modeldeepseek-v4-flash,messages[{role:system,content:system},{role:user,content:只回复两个字收到},],max_tokens32,temperature0,)print(fRound{round_i}: P{resp.usage.prompt_tokens}fCACHED{resp.usage.prompt_tokens_details.cached_tokens})结果图4229 字 system prompt 连发 3 次CACHED0——缓存命中率 0%。唯一例外是 minimax-m3见正文数据表命中 128 cached。为什么我排查了几个可能的原因平台层未开启 Prompt Caching蓝耘 MaaS 作为统一网关可能在某些模型/路由上没有启用或透传上游的缓存功能。虽然usage结构里有cached_tokens字段说明协议支持但实际缓存策略取决于上游模型实现。模型不支持不是所有模型都实现了 prompt caching。DeepSeek-V3.2/V4 系列在官方 API 中支持但通过网关转发时行为可能不同。前缀匹配要求严格部分平台的缓存要求前缀如 system prompt完全一致且超过一定长度阈值如 1024 token。我的实验满足长度条件2305 1024但网关可能在请求级别做了某些修改如添加系统指令、改写 messages导致前缀不匹配。冷启动效应第一次请求建立缓存条目后续请求才能命中。但我的实验连续发了 3 次间隔 1.5 秒理论上应该命中。唯一例外minimax-m3 在主实验中命中了 128 个 cached tokens见上文数据表说明 MiniMax 这条线路的缓存确实在工作。这进一步佐证了「缓存能力因模型/路由而异」的判断。教训不要假设缓存一定生效。在上线前必须用类似上面的实验验证你的目标模型 目标路由是否真的命中缓存。否则你以为自己在享受折扣价其实一直在付全价。选型建议不同场景该选谁基于以上实测数据给出场景化选型建议场景推荐模型理由高频简单任务客服、摘要、分类DeepSeek-V3.2或kimi-k2.5零思考税 高密度 最便宜需要推理能力代码生成、数学、分析deepseek-v4-flash有适度思考61%但不失控速度可接受追求极致信息密度长文档压缩、知识提取minimax-m3需后处理过滤标签密度 3.48 远超其他但有标签泄漏问题预算极度敏感DeepSeek-V3.2本次实测单价最低¥0.00039/次需要 Prompt Cache 省钱minimax-m3唯一命中的但要先验证你的具体路由是否也命中避坑清单❌ 不要用qwen3.6-flash做简单任务——95% 思考税会让你哭❌ 不要用GLM-5.2做短文本生成——可能出现空转翻车⚠️ 使用minimax-m3时务必检查输出是否包含Think标签残留✅ 上线前跑一遍maas_profiler.py用真实数据选模型别凭感觉附录A. 示例单价表仅作估算参考⚠️ 以下为测试日从控制台/文档获取的示例价格以控制台实时显示为准。不同时段可能有浮动。模型输入价 (¥/M token)输出价 (¥/M token)deepseek-v4-flash28/maas/deepseek-ai/DeepSeek-V3.228qwen3.6-flash14/maas/zhipuai/GLM-5.2412kimi-k2.5412minimax-m314B. 完整脚本 数据剖析器完整版demo/maas_profiler.py含 PRICE 表、JSON 输出、多轮排序画图脚本demo/maas_chart.py读取 JSON → 3 张 PNG本次实测原始数据profiler_results.json更早的一组 6 组实验含并发/TTFT/多轮上下文增长demo/_deep_lab_out.txtC. 环境Python 3.9 / openai 1.40 / matplotlib 3.7Base URLhttps://maas-api.lanyun.net/v1注册送额度蓝耘元生代 MaaS推广码a1acd000c1本文所有数据均为2026-07-31 实时调用蓝耘 MaaS API 采集图表由matplotlib直接从 API 返回的usage字段生成未经人工修饰。如需复现克隆仓库后pip install -r demo/requirements.txt export LANYUN_API_KEY你的key python3 demo/maas_profiler.py即可。

相关新闻

别只打印 content:蓝耘元生代 MaaS 流式输出、思维链与 Token 陷阱实战

别只打印 content:蓝耘元生代 MaaS 流式输出、思维链与 Token 陷阱实战

别只打印 content:蓝耘元生代 MaaS 流式输出、思维链与 Token 陷阱实战主测模型:deepseek-v4-flash Base URL:https://maas-api.lanyun.net/v10. 先说结论 很多人接完蓝耘 MaaS,代码长这样: print(resp.choices[0].me…

2026/10/13 7:43:40 阅读更多 →
如何用 AI 自动为你的漫画故事匹配最合适的音效和转场提示词?

如何用 AI 自动为你的漫画故事匹配最合适的音效和转场提示词?

制作漫剧或视频化漫画时,很多新人创作者会把 80% 的精力花在原画生成上,却忽略了“音效(SFX)”与“分镜转场(Transition)”的铺设。缺少了环境音的烘托和合理的镜头过渡,画面就会显得干瘪、缺乏…

2026/10/13 9:41:23 阅读更多 →
5个秘诀完全掌握Mermaid实时图表编辑器:让复杂想法瞬间可视化

5个秘诀完全掌握Mermaid实时图表编辑器:让复杂想法瞬间可视化

5个秘诀完全掌握Mermaid实时图表编辑器:让复杂想法瞬间可视化 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live…

2026/10/13 7:14:59 阅读更多 →

最新新闻

tidyr数据整理:从宽表长表转换到语义建模的实战指南

tidyr数据整理:从宽表长表转换到语义建模的实战指南

1. 项目概述:为什么“数据整理”不是清洗,而是重建认知的起点在R语言生态里,很多人一听到“数据整理”,下意识就想到“删空行、去重、改列名”——这其实是把tidy data的概念窄化成了Excel式的手工修图。真正用过tidyr包超过三个月…

2026/10/13 22:22:59 阅读更多 →
配置绑定不生效?认识@EnableConfigurationProperties

配置绑定不生效?认识@EnableConfigurationProperties

1. 从一次配置失效开始,认识 EnableConfigurationProperties 1.1 那个让人抓狂的“接了配置却不生效”场景 我最初接触 EnableConfigurationProperties 这个注解,是因为一次线上问题的排查。当时某模块在本地测试一切正常,一部署到预发环境&…

2026/10/13 22:22:59 阅读更多 →
Python炼金术:从环境搭建到第一个完整项目的实战路径

Python炼金术:从环境搭建到第一个完整项目的实战路径

凌晨一点,我在开发者社群里看到一个再熟悉不过的问题:"入门教程都学完了,每个代码片段都能跑,可一到真要自己做个东西,脑子里就一片空白。"这个问题表面上是"下一步该学什么",底下还藏…

2026/10/13 22:22:59 阅读更多 →
U盘物理触发嵌入式设备老化模式的UEFI实现

U盘物理触发嵌入式设备老化模式的UEFI实现

简介:本资源是一套面向Android设备制造商与嵌入式开发工程师的RK平台老化测试解决方案,聚焦于通过U盘引导快速进入老化模式,解决量产前硬件稳定性验证与批量压力测试的实际需求。压缩包共167个文件,含77个Java源码(实现…

2026/10/13 22:22:59 阅读更多 →
数据库课程设计图书管理系统:从ER图到实验报告完整指南

数据库课程设计图书管理系统:从ER图到实验报告完整指南

简介:《数据库课程设计(图书管理系统)实验报告》是面向大学本科数据库原理课程设计及SQL大作业的完整参考资料,以图书管理系统为案例,覆盖从项目背景、需求分析、概念结构设计到逻辑结构设计、数据库建表与主要模块代码实现的全过程。报告详细…

2026/10/13 22:22:59 阅读更多 →
双层AI安全治理框架:红队能力原子化与业务风险翻译

双层AI安全治理框架:红队能力原子化与业务风险翻译

1. 这不是“红队”培训手册,而是一套可落地的安全治理操作系统“红队”这个词最近在安全圈被用得有点滥了——有人把它等同于渗透测试,有人当成高级漏洞挖掘的代名词,还有人直接拿它当招聘JD里的流量关键词。但真正做过大型系统攻防对抗的人都…

2026/10/13 22:21:58 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →