← 全部日志

接入真 AI:DeepSeek v4 是推理模型,差点把 token 预算吃光

2026-06-12约 30 分钟DeepSeek推理模型上线

目标

把线上 AI 分身从演示模式(FAQ 匹配)切到真大模型:DeepSeek v4。

结果

  • 先调 /v1/models 确认真实模型 ID:v4 系列是 deepseek-v4-flashdeepseek-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 管道——会反复触发设备码登录)。