ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Spring AI 流式模式 Token 用量为 0 怎么办?streamUsage 一行修复指南

Spring AI 流式模式 Token 用量为 0 怎么办?streamUsage 一行修复指南 Spring AI 流式模式 Token 用量为 0 怎么办streamUsage 一行修复指南【免费下载链接】spring-aiAn Application Framework for AI Engineering项目地址: https://gitcode.com/GitHub_Trending/spr/spring-ai代码跑通了回复也在逐字吐出来可元数据里的 Token 用量全是 0。这是 Spring AI 流式模式 Token 用量上最常见的坑。**根子是流式响应默认不携带用量。**把 streamUsage 打开完整的 Token 数就回来了。流式与非流式用量对比同一个请求两条链路的表现差很多维度.call() 非流式.stream() 流式默认返回值promptTokens / completionTokens / totalTokens 齐全三项全部读到 0额外配置不需要必须打开 streamUsage响应形态一个完整 ChatResponseSSEServer-Sent Events分块推送流非流式链路一次性返回完整响应服务器在回复前就能算好 Token 数。流式链路把输出切成小块默认约定里根本不包含用量0 就是这么来的。这正是 Spring AI 流式模式与非流式模式在用量上的核心差异。 streamUsage 怎么配在选项构建器里加一行就行ChatClient client ChatClient.builder(chatModel) .defaultOptions(OpenAiChatOptions.builder() .streamUsage(true) // 关键开启流式 Token 用量统计 .build()) .build();ChatClient 是帮你发请求的高级客户端。OpenAiChatOptions 是 OpenAI 专用选项类ChatOptions 的具体实现见 models/spring-ai-openai/。各提供方的选项类不同但开关指向同一件事。也可以按请求用.options(...)单独设置。改完马上验证// 流结束后从最后一个响应的元数据读用量 ChatResponse last client.prompt(介绍 Spring AI) .stream() .chatResponse() .blockLast(); System.out.println(last.getMetadata().getUsage());能打印出三个数字就说明修复生效。收尾前过一遍排查清单选项要设在真正发请求的那个客户端上选项类与提供方匹配别拿 A 家的类配 B 家的模型⚠️ 用量在流结束的最后一个分块才完整中途读可能还是 0为什么流式 Token 为 0分块与统计时机为什么默认是 0流式响应按 SSE 一块一块回来每块只装当前几个字。服务器要等生成结束才知道最终 Token 总数默认自然不会在流里发用量。SSE 流式统计压根没发生客户端读到的当然是 0。这就是 Spring AI 流式模式 Token 用量默认全 0 的原因。开启 streamUsage 后框架做了什么streamUsage 置为 true 后模型侧会在流的最后一个分块报出完整用量。Spring AI 解析该字段并写入最后一个 ChatResponse 的元数据。你读 promptTokens、completionTokens、totalTokens数字都齐了。底层转换链路可参考 spring-ai-docs/按场景选模式场景建议成本核算、对账用 .call()。一次请求一份完整用量零额外配置最省事实时对话、打字机效果用 .stream() 并打开 streamUsage。体验和数字一个都不能少拿不准先跑几十次 .call() 小流量摸清真实消耗再定流式方案与计费口径常见追问会影响 .call() 吗不会。streamUsage 配置只作用于流式请求非流式用量本来就齐全。开了之后 ChatClient stream token 为 0先核对选项类是否和提供方匹配再确认该模型流式模式是否支持回传用量OpenAI 系是支持的。流中途能读吗不建议。等 blockLast() 落定再读那时才是终值。现象.stream() 的 Token 用量为 0 是默认行为不是缺陷。根因SSE 分块不带用量服务器只在收尾时上报。修复选项里打开 streamUsageSpring AI 流式模式 Token 用量即完整可用。【免费下载链接】spring-aiAn Application Framework for AI Engineering项目地址: https://gitcode.com/GitHub_Trending/spr/spring-ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进