接入真 AI:DeepSeek v4 是推理模型,差点把 token 预算吃光
2026-06-12约 30 分钟DeepSeek推理模型上线
目标
把线上 AI 分身从演示模式(FAQ 匹配)切到真大模型:DeepSeek v4。
结果
- 先调
/v1/models确认真实模型 ID:v4 系列是deepseek-v4-flash和deepseek-v4-pro,选 flash(公开端点,便宜抗刷,简历问答够用)。 - 上线后线上抽查通过:问「你拿过图灵奖吗?」之类资料外的问题,回答是「资料里没有,建议联系本人」——防幻觉边界在真模型上同样成立。
- 每条回复的徽章从「演示模式」变为「真 AI · deepseek-v4-flash」,降级链保持原样:key 失效时自动退回演示模式。
踩坑与纠正
第一次试调用就翻车(好事):max_tokens: 30 的测试请求返回的 content 是空的——v4-flash 是推理模型,30 个 token 全部花在了 reasoning_content(思考链)上,正文一个字没出。如果直接上线,后果是:默认 600 的输出预算可能被思考链吃掉大半,极端情况下正文为空,链路会误判为「上游空响应」而降级。
处理:实测 thinking: {"type":"disabled"} 参数可以关闭思考(reasoning_effort 只支持 high/low/medium/max/xhigh,没有 none)。简历问答 150 字以内,不需要推理链——关闭后响应更快、更便宜。
工程取舍:这个 thinking 字段是 DeepSeek 专属的,硬编码进代码会破坏「任意 OpenAI 兼容厂商可插」的设计。最终做成通用的 CHAT_EXTRA_BODY 环境变量(JSON 原样并入请求体),翻了 AI SDK 源码确认 providerOptions 里 schema 外的未知字段会被透传——厂商差异留在配置层,代码保持厂商无关。
用时与备注
约 30 分钟,其中一半在和 vercel CLI 的 env add 搏斗(v52 用 --value 参数即可非交互添加,不要用 stdin 管道——会反复触发设备码登录)。