Skip to content

[feature request] OpenAI 协议 provider 需要提供选项开启流式返回 token usage #93

@hitsmaxft

Description

@hitsmaxft

代码库当前的情况:

已有的基础设施:

  • streaming.rs 已经定义了 Usage 结构体来解析 OpenAI chunk 中的 usage 字段
  • 解析到的 usage 会被转换为 Anthropic 格式并传递给下游日志系统
  • 日志系统能正确记录 token 用量

缺失的关键点:
出站的 OpenAI 流式请求没有注入 stream_options: { include_usage: true },导致大多数 OpenAI 兼容提供商不会在 SSE chunk 中返回 usage 数据,token 用量全部为零。

修改逻辑很简单: 在构建 OpenAI chat completion 请求体时,检测到 stream: true,就追加:

{
  "stream": true,
//新增
  "stream_options": { "include_usage": true }
}

响应端(streaming.rs)已经能解析 usage 字段,但是由于 openai 使用两个 event 输出最后的 token usage,需要适配一下,合并成一个并延迟输出

部分 provider 可能不支持这个选项, 需要支持 provider 差异化配置//目前没看到不支持, bailian 和 azure 上测试成功

个人倾向于针对流式默认加上, 不支持的再通过选项关闭

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions