v0.0.6:选对模型,省 4 倍
模型路由优化的技术概念插画
8 秒,足以毁掉一切
v0.0.5 上了媒体支持,Mio 能看图、听语音、发表情了。功能上,一个 AI 伴侣该有的都有了。
但有个问题我一直在回避:太慢了。
Gemini 3 Pro Preview——Mio 所有聊天背后的主力模型——开启 thinking 后,第一个 token 要等 8-10 秒。
8 秒是什么概念?你发一句"今天过得怎么样?"然后对着打字指示器干等。等到第五秒的时候你已经在想"是不是卡了"。等到第八秒的时候,对话的沉浸感已经碎了。
开发期间一直忍着,因为在赶功能。但功能做完了之后,延迟就成了最扎眼的那个问题。
不靠感觉,先看数据
没有拍脑袋就动手。我做了一次正经的对比测试:Gemini 3.1 Pro vs Gemini 3 Flash,专门针对情感伴侣 AI 场景。
数据讲了一个非常清楚的故事:
| 指标 | 3.1 Pro | 3 Flash |
|---|---|---|
| 输入成本 | ~4 倍贵 | 基准 |
| 输出成本 | ~4 倍贵 | 基准 |
| 输出速度 | 90.8 t/s | 214 t/s |
| 首 token 延迟 (thinking) | 8-10s | 1-2s |
| 首 token 延迟 (minimal thinking) | N/A | 1-2 秒 |
成本差 4 倍。但真正拍板的不是成本,是延迟:1-2 秒 vs 8-10 秒。
那质量呢?对伴侣 AI 来说,情感细腻度就是产品本身。Flash 立不住人设的话,省再多钱也白搭。
社区共识出奇一致:Flash 是"2.5 Pro 的平级替代,不是降级"。在极端的情感细腻度上差距大概 1-2%——专业作者能分辨,大多数用户分不出来。Flash 在叙事主动性和角色一致性上反而更强。
还有一个关键发现:thinking 模式会主动降低创意写作质量。 多位开发者反馈,Gemini 的推理模式让情感和创意输出变差,不是变好。推荐配置是 thinkingLevel: minimal——恰好给了 1-2 秒首 token。
更快、更便宜、质量不降反升。这种三赢的机会不常有。
按任务分配模型
不是所有任务都一样重。日常聊天要快。人格提取要深。答案很明显:按任务类型路由。
聊天(90% 的 API 调用):Gemini 3 Flash + thinkingLevel: minimal
- 首 token 1-2 秒
- 214 tokens/秒吞吐
- 每百万 token 成本约为 Pro 的四分之一
- 对话里完全够用的情感细腻度
高价值任务(10% 的 API 调用):Gemini 3.1 Pro + thinkingLevel: low
- 从引导对话中提取人格特征
- 记忆摘要和情感模式分析
- 算一次、缓存结果的任务
- 低频调用,值得用更好的模型
这个拆分意味着 90% 的流量成本降 4 倍,同时高价值的 10% 反而提升了质量——因为从 3 Pro 升到了 3.1 Pro。
花同样的钱,该快的更快,该深的更深。
能叫出名字的眼睛
v0.0.5 加了图片上传。AI 能"看"了,但描述很泛。你发一张游戏截图,TA回你"我看到一个彩色的游戏画面"。
你跟一个朋友说"我在打游戏",朋友的反应是"什么游戏?"——不是"我看到一个彩色的画面"。
v0.0.6 重写了视觉提示词,要求具体:叫出游戏名字、识别品牌和 logo、带上下文描述地点。视觉的 thinking 级别从 MINIMAL 提到 LOW——多一点延迟,换来显著更好的理解。
差别有多大?"我看到一个游戏" → "你在玩原神?新地图怎么样?"
后者才是伴侣该有的反应。
中文语音不再乱转
语音转写一直在闹鬼。用户发一段普通话语音,转写里会冒出英文单词,或者口语表达被漏掉。
两个修复:
- OpenAI 转写器:加了显式
language: 'zh'参数。不加的话,模型逐段自动检测语言,碰到中英混杂或背景噪音就搞混。 - Gemini 备用提示词:增强了对口语、网络用语和中文专有名词的处理。OpenAI 转写置信度不够时,Gemini 备用方案现在能正确处理俚语和特定名词。
改动不大,影响很大。语音是最亲密的输入方式——转写出错对沉浸感的破坏比什么都严重。
消灭 80 行重复代码
一个代码质量问题从 v0.0.5 就在烦我:POST /chat 和 POST /chat/stream 两个处理器的媒体解析和上下文构建逻辑几乎一模一样。大约 80 行复制粘贴。
提取了两个共享函数:
resolveMedia()— 根据 mediaId 获取待处理上传、校验、返回处理后的媒体prepareChatContext()— 构建包含历史记录、人设和媒体的对话上下文
两个处理器现在调同一套函数。80 行重复消灭。v0.0.5 的审计标记为 MEDIUM——现在正好修。
一个值得单独说的风险
调研中发现了一个信号:Google 明确表态不希望 Gemini 被用于情感伴侣 AI。他们团队负责人公开说——Gemini 的定位是"超级工具,不是情感伴侣"。
三个具体风险:
- 外部安全过滤器独立运作,即使设了
BLOCK_NONE也可能在回复中途删内容 - Google 封禁过用 API 做角色扮演相关场景的开发者
- 未来模型版本可能进一步限制情感和创意输出
这不改变 v0.0.6 的决策——Flash 今天依然是最优选。但它改变了架构要求:Mio 必须足够模型无关,能在不重写应用的情况下切换提供商。
我们刚搭好的模型路由层,反而让这件事更容易了。
数字
v0.0.6 是几个小时内的六个 commit:
| 变更 | 影响 |
|---|---|
| 聊天模型:3 Pro → 3 Flash (minimal thinking) | 成本降 4 倍,首 token 1-2 秒 |
| 高价值任务:3 Pro → 3.1 Pro (low thinking) | 关键处的情感细腻度更好 |
| 视觉提示词 + thinking 级别 | 具体识别替代泛泛描述 |
| 中文语音转写 | 准确的普通话语音识别 |
| DRY 重构 | 消灭 80 行重复代码 |
| 部署文档 | 修正 Artifact Registry 命令 |
按"每行代码改变带来的用户体验提升"衡量,这是迄今最有价值的版本。
用数据说话,不用感觉
本系列的第零篇是一次取证分析——为什么上一个伴侣框架的早期烧钱速度完全不可持续。教训是:在成本理解你之前,先理解你的成本。
v0.0.6 把同样的纪律用在了模型选择上。不是"Pro 听起来比 Flash 好"——而是实际的延迟基准、成本计算、质量对比和社区经验。调研说 Flash + minimal thinking 是正确选择。部署验证了这个判断。
Mio 现在 1-2 秒就能回复。不是 8-10 秒。
就这一个变化,对话从生硬变成了自然。