Prhub

#16711 Add `--stream-response-default-include-usage` server flag

原始 PR 作者 syd520zy 合并时间 2026-04-04 12:36 文件变更 7 提交数 32 评论 17 代码增减 +47 / -19

执行摘要

添加服务器标志强制流式响应包含使用信息,便于服务器端监控。

根据PR body描述,当流式传输启用时,使用信息仅当客户端设置stream_options.include_usage = true时才返回,但服务器操作者需要token级别的监控指标,无法依赖客户端配置。因此添加服务器端标志来覆盖此行为,确保所有请求的使用信息可被统计。

建议工程师精读此PR,重点关注should_include_usage函数的设计决策,它统一了流式使用信息处理逻辑,避免了代码重复;同时,参数命名的演变体现了设计权衡,值得学习。对于涉及服务器配置或openai服务开发的人员,此PR提供了实用的监控功能。

讨论亮点

review中主要讨论了初始实现中的“force”命名问题:reviewer hnyls2002质疑“Why is force?”,作者syd520zy解释为服务器监控需求,并参考了VLLM框架类似参数。经过讨论,最终将参数重命名为stream_response_default_include_usage,并调整逻辑以避免混淆,强调使用默认值方式而非强制。结论是修改后获得批准,设计更清晰。

实现拆解

实现分为四个部分:

1) 在server_args.py中添加stream_response_default_include_usage字段及CLI参数定义;
2) 在utils.py中新增should_include_usage函数,统一处理流式使用信息逻辑;
3) 在serving_chat.py和serving_completions.py中修改流式生成函数,调用共享函数并调整条件检查;
4) 清理死代码,包括移除serving_responses.py中的enable_force_include_usage参数和ServerArgs中的未使用字段。

文件 模块 状态 重要度
python/sglang/srt/server_args.py server_args modified 8.0
python/sglang/srt/entrypoints/openai/utils.py openai_utils modified 7.0
python/sglang/srt/entrypoints/openai/serving_chat.py openai_serving modified 6.0
python/sglang/srt/entrypoints/openai/serving_completions.py openai_serving modified 6.0
python/sglang/srt/entrypoints/openai/serving_responses.py openai_serving modified 4.0

关键符号

should_include_usage _generate_chat_stream _generate_completion_stream _process_tool_call_stream

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

force 命名和逻辑设计 设计

reviewer hnyls2002 质疑初始实现中的 'force' 命名,作者 syd520zy 解释为服务器监控需求,并参考 VLLM 框架;最终将参数重命名为 stream_response_default_include_usage,调整逻辑以避免混淆。

结论:重命名参数并使用默认值逻辑,避免强制语义,设计更清晰。 · 已解决

风险与影响

技术风险包括:

1) 兼容性风险,新标志可能在不指定stream_options时覆盖客户端默认行为,但设计上仅作为服务器端补充,不影响现有显式设置;
2) 回归风险,流式逻辑变更可能引入错误,但测试已更新(test_serving_chat.py)且CI通过;
3) 性能风险,额外使用信息块可能轻微增加流式数据量,影响可忽略。整体风险较低。

影响范围:

1) 对用户:服务器操作者获得监控所有请求token使用的能力,无需客户端配合;
2) 对系统:流式响应可能增加额外使用信息块,对性能影响微小;
3) 对团队:代码重构提升了可维护性,共享函数减少重复逻辑。影响程度中等,主要限于流式处理模块。

新增服务器参数 流式逻辑变更 兼容性风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论