别光看模型列表了,我用蓝耘 MaaS 拿 6 条工单跑了一遍!
文章目录

看 MaaS 平台的时候,我以前也习惯先看两个东西:模型多不多,价格贵不贵。蓝耘 MaaS 也是一样,页面上 GLM-5.1、MiniMax、DeepSeek、Qwen 这些模型摆出来,很容易让人先去比参数、比单价。
但真要接到项目里,光看列表其实没什么感觉。接口能不能调通是一回事,跑起来以后又是另一回事:返回结果能不能解析,工具调用参数会不会飘,某个模型慢了怎么办,批量任务失败以后怎么补,账单最后能不能算清楚。
所以我干脆拿一组工单跑了一遍。样本不大,就 6 条,但流程尽量按真实项目来:客服工单进来以后,先按类型选模型,再让模型调用 record_ticket 工具,把分类、紧急度、负责人、摘要和处理动作整理成 JSON。主模型不稳时切备用模型,最后生成运行日志和一个简单仪表盘。
这次实际用到的是 deepseek-v3-2-251201 和 glm-5.1。跑完结果还算干脆:6 条工单全部结构化成功,中间触发了 1 次 fallback。这个过程比单纯问模型几个问题更能看出问题:延迟高不高、工具参数稳不稳、JSON 能不能解析、fallback 有没有生效、tokens 怎么算、日志能不能复盘。
这里先说一句,后面提到的实测数据,只算这次工单项目跑出来的结果;以前那些零散截图和旧记录不混进来。后面就从这次工单分拣往外拆,价格表、统一网关、智能路由、批量推理这些都会提,但重点不是把功能名念一遍,而是看它们放进这条流程里,分别解决哪一步的问题。
一、先看实操:我做了一个工单智能分拣小项目
这里不是只调一次 API 证明“接口能通”,而是把 6 条客服/平台工单批量送进蓝耘 MaaS,通过模型路由分配给 deepseek-v3-2-251201 和 glm-5.1,再用 Tool Calling 输出可入库的结构化结果,最后生成复盘仪表盘。
项目流程很简单:
工单列表
-> 按规则选择模型
-> 调用蓝耘 MaaS OpenAI 兼容接口
-> record_ticket 工具结构化输出
-> 失败时 fallback 到备用模型
-> 生成 JSON 结果、运行日志和 HTML 仪表盘

这 6 条工单覆盖了几个真实项目里很常见的问题:重复扣费、客服延迟、长上下文漏字段、批量评论打标、Agent 工具参数漂移、多项目账单归因。项目跑完后的结果如下:
| 指标 | 结果 |
|---|---|
| 输入工单数 | 6 |
| 结构化成功率 | 6/6 |
| 高优先级工单 | 2 |
| fallback 次数 | 1 |
| DeepSeek 平均耗时 | 8306 ms |
| GLM-5.1 平均耗时 | 36664 ms |
这次路由规则是:扣费、Agent 工具调用这类复杂问题优先走 glm-5.1,普通客服延迟、批量打标、长上下文验证、账单归因走 deepseek-v3-2-251201。如果主模型没有稳定返回结构化结果,就自动切备用模型。实际运行中,T-1028 这条 Agent 工具参数问题触发了一次 fallback,从 glm-5.1 切到了 deepseek-v3-2-251201,最后仍然拿到了可解析结果。

Tool Calling 这里没有只看“模型回答得像不像”,而是要求模型必须调用 record_ticket 工具,输出下面这些字段:
{
"ticket_id": "T-1024",
"category": "billing",
"urgency": "high",
"owner": "billing",
"summary": "客户夜间批量任务运行中途失败,重试后账单翻倍",
"action": "排查批量任务失败原因,并核实重复扣费"
}
判断是否成功也很直接:有没有 tool_calls,函数名是不是 record_ticket,arguments 能不能被程序解析成 JSON,必填字段是否齐全。最后 6 条工单都通过了校验。

从这个小项目里,几个平台能力能直接对上:
| 项目动作 | 对应能力 | 解决的问题 |
|---|---|---|
| 6 条工单批量处理 | 批量推理思路 | 不再手写零散 prompt 逐条复制 |
| 按工单类型选模型 | 智能路由 | 不同任务不用写死同一个模型 |
| 主模型失败后切备用模型 | fallback | 单个模型异常时工作流不中断 |
record_ticket 结构化输出 |
Tool Calling | 结果能直接入库,不靠人工复制 |
| 生成仪表盘和运行日志 | 统一观测 | 方便复盘耗时、分类、tokens 和失败点 |
二、Token 单价要看,但更怕任务白跑
很多人选模型 API,第一反应是看单价:输入多少钱一百万 tokens,输出多少钱一百万 tokens。这个动作当然没错。客服、摘要、审核、批量分类这类高频场景,单价差一点,月底账单就会差一截。
但如果只看单价,很容易误判。
我实际看成本时,不会只看价格表,还会把这些东西算进去:
项目成本 =
Token 标价
+ 等待成本
+ 波动带来的容量冗余
+ 失败重试
+ 工具调用错误后的返工
+ 人工复核
+ 网关、日志、路由、Key 管理的维护成本
比如智能客服场景里,首 token 延迟高,用户会以为系统卡死;Agent 场景里,一次工具调用参数错了,后面所有步骤都可能白跑;批量任务里,失败率 5% 看起来不高,但如果是十万条任务,就意味着五千条要补跑、复查、重新计费。
所以我会盯一个更实际的问题:花出去的 tokens,有多少真的变成了业务结果。
一百万 tokens 花出去之后,有多少进了最终结果?有多少死在超时、限流、半截流式、JSON 格式错误、工具名漂移、上下文定位错误里?如果一个便宜模型经常让任务重跑,它可能并不便宜;如果一个贵模型能让高价值 Agent 任务一次跑通,它未必昂贵。
这次工单项目里,deepseek-v3-2-251201 的平均耗时是 8306 ms,glm-5.1 的平均耗时是 36664 ms;6 条工单都完成了结构化输出,中间触发过 1 次 fallback。样本不大,但已经能说明一个问题:评估 MaaS 平台不能只盯模型标价,延迟、结构化成功率、fallback 和日志复盘也得一起看。
模型本身当然重要,但模型周围的路由、批量、统计、Key 管理、成本归因也很要命。它们不直接生成文字,却会决定每一次调用最后能不能稳定落地。
三、先从价格表拆任务,而不是先选“最强模型”

| 模型 | 参数量 | 输入(元/百万 tokens) | 输出(元/百万 tokens) | 缓存命中(元/百万 tokens) |
|---|---|---|---|---|
| GLM-5.1 | 754B | 8 | 28 | 2 |
| MiniMax-M2.5 | 230B | 2.1 | 8.4 | 0.21 |
| DeepSeek-V3.2 | 175B | 2 | 3 | 0.4 |
| Qwen3-235B-A22B | 22B | 2.5 | 10 | - |
这张表不能直接告诉你“哪个模型最好”,但它已经暗示了一个很重要的原则:不同任务不该无脑用同一个模型。
GLM-5.1 输出单价高,适合放在错一次代价很高的任务上,比如代码分析、复杂 Agent、多步工具调用、长上下文推理。MiniMax-M2.5 的输出价和缓存命中价更适合中文客服、办公助手、轻量 Agent。DeepSeek-V3.2 这种低输出价模型,更适合大量、单条简单、可校验的批量任务,比如评论分类、摘要初筛、标签生成。
一个成熟系统不应该问“全站默认用哪个模型”,而应该问:
代码分析任务 -> GLM-5.1
客服对话任务 -> MiniMax-M2.5
低成本批处理 -> DeepSeek-V3.2 / Qwen
失败或限流 -> fallback 到备用模型
这件事如果写进业务代码,后面改起来会很痛苦;如果交给平台路由,就只是改策略。MaaS 和普通 API 入口的差别,也就是从这里拉开的。
更具体一点,我会把任务先分成三层:
| 任务类型 | 例子 | 选型重点 |
|---|---|---|
| 低价值高频 | 评论分类、摘要初筛、标签提取 | 低成本、格式稳定、可批量补跑 |
| 中价值在线 | 客服、知识库问答、办公助手 | 首字速度、语气、缓存命中 |
| 高价值复杂 | 代码分析、Agent 工具调用、跨文件定位 | 一次跑通率、长上下文、工具参数可靠性 |

四、统一网关不只是转发请求
很多人听到“统一网关”,第一反应是代理:
业务请求 -> 网关 -> 模型服务
如果只是转发,那确实没太多可说的。麻烦都在治理上。大模型进入生产环境之后,调用链至少需要回答这些问题:
- 谁有权限调用;
- 用的是哪个 Key;
- 调了哪个模型;
- 输入输出各消耗多少 tokens;
- 请求耗时多少;
- 有没有命中缓存;
- 失败原因是什么;
- 要不要 fallback;
- 费用应该算在哪个项目上。
这些问题不解决,项目越多,调用越乱。最后每个业务系统都有自己的 .env、自己的 Key、自己的重试逻辑、自己的日志格式。某天账单涨了,没人说得清是哪个项目在烧;某个模型挂了,所有业务各自报错;某个 Key 泄露了,只能全局替换。
蓝耘 MaaS 控制台里能看到 API KEY 管理、用量统计、Token Plan、智能路由这些入口。单看每个入口都不复杂,放在一起看,指向的是同一件事:别让每个业务系统各管各的,把模型调用先收回来统一管。


如果真要评估统一网关,我会先看这五件事:
| 能力 | 要解决的问题 |
|---|---|
| 鉴权治理 | 不同项目、人员、环境使用不同 Key,泄露时能单独停用 |
| 请求校验 | 在请求进模型前拦住 schema、模型名、token 上限这类低级错误 |
| 路由策略 | 按任务类型、健康度、成本、延迟选择模型 |
| 异常 fallback | 主模型 5xx、429 或延迟升高时切备用模型 |
| 成本归因 | 按项目、Key、模型看清 tokens 和费用 |
统一网关省下来的,不是几行 SDK 代码,而是上线之后那些绕不开的排查、限流、换模型和算账成本。
五、智能路由让模型切换从“改代码”变成“改策略”
模型生态变化太快。今天某个模型便宜,明天可能涨价;今天某个模型效果好,明天可能有新版本;高峰期某个模型抖动,低峰期又很稳。业务代码如果直接写死模型名,就会被这些变化绑架。
智能路由要解决的,就是把模型选择挪到平台层:
业务系统 -> 统一入口 -> 路由策略 -> 模型池
业务系统只告诉平台“这是代码任务”“这是客服任务”“这是批量摘要”“这是低优先级离线任务”,至于用 GLM-5.1、MiniMax-M2.5、DeepSeek-V3.2 还是 Qwen,由路由策略处理。

路由策略有几个细节特别关键:
- 任务类型:不同任务进不同模型池;
- 优先级:在线任务优先稳定,离线任务优先成本;
- 权重:多个模型之间做比例分配;
- 健康检查:模型异常时自动摘除;
- fallback:主模型失败后切备用模型;
- 灰度:新模型先承接一小部分流量。
这听起来很像传统后端的流量治理。区别在于,传统服务多数返回结构化 JSON,大模型返回的是自然语言、工具调用、流式片段和长上下文结果,失败形态更绕一点。
我会特别看路由策略里有没有“退路”。很多团队只关心主模型选谁,却忽略了主模型不可用时系统怎么活下去。比如代码 Agent 默认走 GLM-5.1,限流或 5xx 时降级到 DeepSeek-V3.2;客服默认走 MiniMax-M2.5,如果 P95 延迟连续升高,就临时切到备用模型。降级后的答案可能没那么强,但在线业务最怕的是完全不可用。
路由不是为了把架构画复杂。它通常是在出问题时才显出来:能把“服务异常”变成“质量略降但业务继续”,这就很实用。
六、批量推理不是 for 循环
跑批量任务时,我不太愿意把它理解成一个简单的 for 循环。
拿一个很常见的任务来说:晚上把历史工单、用户评论、商品描述跑一遍,做分类、摘要和标签提取。很多人第一次做这种批处理,会写成这样:
for item in dataset:
result = call_llm(item)
save(result)
一百条数据可以这样写,一万条、十万条就不行了。跑到一半断了怎么办?哪些成功,哪些失败?失败要不要重试?重试几次?429 限流怎么退避?输出不是 JSON 怎么处理?任务被重复提交会不会重复计费?中途换模型怎么保证结果可比?月底怎么知道这批任务花了多少钱?这些问题如果都塞进业务脚本,脚本很快就会变成另一个小系统。
批量任务麻烦的地方主要有四个:
| 问题 | 如果不处理会怎样 |
|---|---|
| 状态管理 | 中断后不知道从哪里继续 |
| 幂等设计 | 重复跑、重复计费、重复入库 |
| 重试策略 | 网络错误、限流、参数错误被一锅端处理 |
| 输出校验 | 模型随口说的话直接进业务库 |
一个像样的批量任务,至少要有这些状态:
pending -> running -> success
-> failed
-> retrying
-> skipped
每条输入还要有稳定的 task_id,这样补跑时只处理失败项,不重复处理成功项。输出也要校验,比如要求 JSON,就必须检查字段是否存在、类型是否正确、置信度是否合法;校验失败后,可以让模型自修复、重试一次,或者进入人工复核队列。

看蓝耘 MaaS 的批量推理入口时,我会重点看它有没有把批处理从业务脚本里拆出来,让任务成为可管理对象。开发者少写的不是一个循环,而是一整套状态机、重试队列、并发控制和复盘报告。
七、Tool Calling 是 Agent 和聊天机器人的分界线
如果只是聊天,模型回答得自然就够了;如果要做 Agent,模型必须能调用工具,而且要调用得稳。
这里说的“稳”,不是文档里标了支持 Tool Calling 就够了,至少要过三层:
| 层级 | 要看什么 |
|---|---|
| 协议兼容 | tools、tool_choice、messages 是否能按 OpenAI 风格接入 |
| 工具选择 | 多工具场景下能不能选对工具、按对顺序调用 |
| 参数可执行 | 返回的 JSON 能不能被业务代码直接解析和执行 |
Tool Calling 常见错误很具体:
| 错误 | 例子 | 后果 |
|---|---|---|
| 函数名漂移 | 工具叫 extract_text,模型返回 get_content |
业务代码找不到函数 |
| 参数结构错 | 需要 selector,模型返回 css 数组 |
JSON 能读,但不能执行 |
| 顺序错 | 没 open_page 就 extract_text |
工具链中断,结果不可信 |
这些错误在普通问答里看不出来,Agent 一跑就暴露。一个真实的 Agent 任务,往往是这样的链路:
理解目标 -> 拆解步骤 -> 调工具 -> 读工具结果
-> 再规划 -> 再调工具 -> 处理失败 -> 输出最终结果
所以验证模型能力,不能只问“它会不会回答”,还要看“它会不会做事”。这也是 GLM-5.1、MiniMax-M2.5 这类模型应该放进真实工作流里测试的原因。
还有一点很容易在 Demo 里漏掉:Tool Calling 的好坏,不只取决于模型,也取决于平台和框架有没有把错误显性化。函数名错了、参数 JSON 解析失败、工具返回空结果、页面元素不存在,这些都应该进入日志和统计,而不是被包装成一句“任务失败”。否则评测时只能看结果好不好,排查时却不知道坏在哪里。
如果一个平台能把工具调用的请求、参数、耗时、错误类型和重试过程都记录下来,Agent 才有机会从“玄学调 prompt”变成能复盘、能改进的东西。否则每一次失败都像黑箱,只能靠人猜。
八、一键部署省下来的,是验证时间
OpenClaw、Hermes、Playwright 这类 Agent 项目,很适合用来验证模型和平台能力。但实际部署时,经常会卡在很琐碎的地方:依赖版本、端口冲突、环境变量、Key 配置、模型地址、日志目录、工具权限、前端入口。
如果每次验证一个模型、一个 Agent 框架,都要先花半天搭环境,很多想法会死在验证前。
蓝耘 MaaS 页面里能看到 Agent 商城、Coding Plan、一键部署 OpenClaw 这些入口。它们有用的地方,不只是少敲几条命令,而是能缩短“从想法到可运行环境”的时间。
比如要验证一个网页采集 Agent,不应该先把时间耗在装浏览器依赖、配 Playwright、找端口、填环境变量上。更合理的流程是:先把 OpenClaw / Hermes 这类项目拉起来,绑定 MaaS 的 Key 和模型入口,跑一组固定任务,看模型能不能稳定完成网页打开、信息抽取、工具调用和错误恢复。环境越快跑起来,团队越快知道这个模型和平台能不能接进自己的业务。

对团队来说,这种速度很现实。模型选型、Agent 验证、业务演示、内部评审,都不是写论文,很多时候就是要尽快跑出一个能给人看的版本。MaaS 如果能把部署、模型、Key、网关、日志串起来,它就不只是一个 API 入口,而是能支撑 AI 应用从验证走到上线的一套环境。
九、上线后最容易出问题的三处
如果真把这类平台放进生产,我最担心的不是“模型不够聪明”,而是下面三个问题。
第一,没人知道钱花到哪里。
模型调用如果没有项目维度、Key 维度、模型维度的统计,账单只会变成一串总数。总数没法优化。你必须知道是客服烧得多,还是批量任务烧得多;是某个模型太贵,还是失败重试太多;是输入太长,还是输出太散。没有归因,就没有成本治理。
第二,失败被隐藏在自然语言里。
传统接口失败会有状态码,大模型失败有时会伪装成一段很自然的话:它没读到页面,却写了一段总结;它没调对工具,却给了一个看似合理的解释;它没找到字段,却补了一个猜测值。这类失败更危险,因为它不是直接报错,而是悄悄污染业务结果。
第三,评测和生产脱节。
很多评测只跑固定 prompt,但生产里用户输入千奇百怪、上下文会变长、工具会失败、网页会变、接口会限流。评测如果不覆盖失败恢复、长上下文定位、工具参数合法率和批量补跑,最后很容易出现“评测很好看,上线不好用”的尴尬。
这三件事都不是模型排行榜能解决的。它们更像日常工程问题:要靠日志、路由、批处理、校验、监控和复盘一点点兜住。
更多推荐


所有评论(0)