问题
/v1/chat/completions 的非流式响应会返回 usage,但流式响应在请求包含 stream_options: {"include_usage": true} 时没有发送最终 usage chunk。
这会导致部分兼容 OpenAI 的客户端无法显示上传 token、下载 token 和总 token 数量,尤其是在默认使用流式输出的客户端里更明显。
复现方式
请求示例:
{
"model": "auto",
"stream": true,
"stream_options": {"include_usage": true},
"messages": [{"role": "user", "content": "Hello"}]
}
当前现象:只返回内容 chunk 和 finish_reason: "stop" 的 chunk,没有 choices: [] 且包含 usage 的最终 chunk。
期望行为
当请求设置 stream_options.include_usage=true 时:
- 普通内容 chunk 保持原有 delta 输出,并带
usage: null。
- 结束前额外输出一个
choices: [] 的 chunk。
- 该最终 chunk 包含
prompt_tokens、completion_tokens 和 total_tokens。
- token 统计逻辑应复用现有非流式响应里的计数函数,保证普通文本、Grok Console 和 Grok app-chat 流式路径行为一致。
问题
/v1/chat/completions的非流式响应会返回usage,但流式响应在请求包含stream_options: {"include_usage": true}时没有发送最终 usage chunk。这会导致部分兼容 OpenAI 的客户端无法显示上传 token、下载 token 和总 token 数量,尤其是在默认使用流式输出的客户端里更明显。
复现方式
请求示例:
{ "model": "auto", "stream": true, "stream_options": {"include_usage": true}, "messages": [{"role": "user", "content": "Hello"}] }当前现象:只返回内容 chunk 和
finish_reason: "stop"的 chunk,没有choices: []且包含usage的最终 chunk。期望行为
当请求设置
stream_options.include_usage=true时:usage: null。choices: []的 chunk。prompt_tokens、completion_tokens和total_tokens。