本文首发于个人技术博客,转载请保留出处。适用平台:盈算智服(OpenAI 兼容 LLM 网关)。
一、你遇到的现象
请求返回了 HTTP 200,没有报错,但 choices[0].message.content 是空的:
{
"choices": [
{
"message": { "role": "assistant", "content": "" },
"finish_reason": "stop"
}
],
"usage": { "completion_tokens": 100, "reasoning_tokens": 95 }
}
一眼看过去像是 API 坏了。其实不是——是思考模型把你的输出额度吃光了。
二、根因:默认开「深度思考」,max_tokens 被推理过程吃掉
新一代模型(DeepSeek V4 系列、智谱 GLM-5.2)默认开启深度思考(reasoning)。一次回复由两部分组成:
- 推理 token(reasoning_tokens):模型在「内心思考」时消耗的 token
- 内容 token(content):真正返回给你的文字
如果你在请求里传了较小的 max_tokens(比如 100、200),而思考过程本身就用了 95 个 token,留给真正内容的就只剩 5 个甚至 0 个 → 于是你拿到空 content。
我们在真实调用中复现过:max_tokens:100 时 reasoning_tokens:95,content 为空;调到 1024 后正常返回内容。
三、哪些模型有这个坑
| deepseek-v4-flash | 默认开 | max_tokens ≥ 1024;或显式关闭思考 |
| deepseek-v4-pro | 默认开 | max_tokens ≥ 1024;或显式关闭思考 |
| glm-5.2 | 默认开 | max_tokens ≥ 1024 |
| Kimi K3 | 关,但有最低门槛 | max_tokens 必须 ≥ 16000,否则返回空 |
| glm-4-flash / Qwen 等轻量模型 | 默认关 | 一般无需特别处理 |
四、修复方法(三选一)
方案 A:给 max_tokens 一个安全值(最简单,推荐)
把 max_tokens 调大到 1024 以上即可。下面以 deepseek-v4-flash 为例:
curl 版:
curl https://yingsuan.top/v1/chat/completions \\
-H "Authorization: Bearer 你的KEY" \\
-H "Content-Type: application/json" \\
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "用一句话解释量子纠缠"}],
"max_tokens": 2000
}'
Python(OpenAI SDK)版:
from openai import OpenAI
# 把下行的 base_url 换成你的网关地址(即盈算智服分配给你的接口地址)
client = OpenAI(api_key="你的KEY", base_url="你的网关地址/v1")
resp = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "用一句话解释量子纠缠"}],
max_tokens=2000
)
print(resp.choices[0].message.content)
Node.js 版:
import OpenAI from "openai";
// 把下行的 baseURL 换成你的网关地址(即盈算智服分配给你的接口地址)
const client = new OpenAI({ apiKey: "你的KEY", baseURL: "你的网关地址/v1" });
const resp = await client.chat.completions.create({
model: "deepseek-v4-flash",
messages: [{ role: "user", content: "用一句话解释量子纠缠" }],
max_tokens: 2000,
});
console.log(resp.choices[0].message.content);
方案 B:直接关掉思考(要速度 / 省钱时用)
如果你做的是简单分类、抽取、翻译,不需要推理,关掉思考既快又省:
DeepSeek V4 系列:
{ "model": "deepseek-v4-flash", "messages": […], "reasoning_effort": "none" }
或(Anthropic 风格字段):
{ "model": "deepseek-v4-flash", "messages": […], "thinking": { "type": "disabled" } }
智谱 GLM-5.2:
{ "model": "glm-5.2", "messages": […], "thinking": { "type": "disabled" } }
注意:传 “thinking”: false 会报 400,正确值是 “type”: “disabled”。
方案 C:Kimi K3 专用
K3 不吃小 max_tokens,必须 ≥ 16000,否则直接空:
{ "model": "kimi-k3", "messages": […], "max_tokens": 16000 }
五、网关层已经帮你做的防护
为防止你踩坑,盈算智服在网关层加了自动护栏:
- 对思考模型(deepseek-v4-flash / v4-pro / glm-5.2),如果你传的 max_tokens 小于 1024,网关会自动提到 1024(只上调、绝不下调你的显式大值)。
- 对其他模型,如果你没传 max_tokens,网关默认给 2048。
但你如果显式传了很小的 max_tokens(比如抄了别人的 100),网关尊重你的选择、不会覆盖——所以请按上面的方案 A 调大。
六、开始免费试用
- 免费套餐:100 次请求,含 DeepSeek V4-Flash(1M 上下文)、GLM-4-Flash、Qwen2.5-7B
- 限时推广:V4-Flash 额外 20 次免费(Promo)
- 获取 Key 与文档入口见盈算智服官网(Wise 银行转账,无需信用卡)
遇到任何返回异常,把请求体和报错发给官方邮箱,24 小时内回复。
网硕互联帮助中心




评论前必须登录!
注册