You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Spring AI流式调用时如何获取OpenAI剩余Tokens?

Spring AI流式调用中获取OpenAI剩余Tokens元数据

流式调用下依然可以获取OpenAI剩余Tokens的HTTP Header元数据,只是默认的聚合方式会丢失原始响应头,需要调整代码处理逻辑:

  • 不要仅依赖collectList().block()聚合结果,而是在流式处理过程中,从每个ChatResponse对象中提取关联的ClientResponse,进而获取HTTP头信息。
  • OpenAI的剩余Tokens对应HTTP头字段为x-ratelimit-remaining-tokens,可通过ClientResponse的headers方法提取。

调整后的Kotlin代码示例

chatClient.prompt()
    .stream()
    .chatResponse()
    .doOnNext { chatResponse ->
        // 获取原始客户端响应
        val clientResponse = chatResponse.clientResponse
        // 提取剩余Tokens头信息
        val remainingTokens = clientResponse.headers().firstHeader("x-ratelimit-remaining-tokens")
        // 按需处理该值,比如日志记录、业务存储等
        println("当前剩余Tokens: $remainingTokens")
    }
    .collectList()
    .block()

额外说明

OpenAI流式响应的每个数据块携带的响应头是一致的,因此只需提取一次即可,无需重复处理所有响应块。如果后续OpenAI调整头字段名称,需要对应修改提取的字段名。

内容的提问来源于stack exchange,提问作者Fabio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:10:54