mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-08-04 23:00:30 +08:00
Relate to #17284. ## Problem `novitaHandleStream` guarded usage recording with `if found && chatConfig != nil`. When a caller passes a nil `*ChatConfig` — common in the service layer (`model_chat.go`, `chat_pipeline.go`) — the streamed token usage is dropped entirely. The shared `HandleStreamingResponse` only uses `chatConfig` to expose `UsageResult` and records usage whenever the stream carries it. Novita's bespoke handler diverged from every other OpenAI-compatible streaming driver. ## Fix Record usage whenever the stream carries a usage event, mirroring `HandleStreamingResponse`. `applyStreamUsage` already handles a nil `chatConfig` internally (it only writes `chatConfig.UsageResult` when non-nil), so the extra guard was doing nothing but dropping usage. ## Test `TestNovitaStreamRecordsUsageWithoutChatConfig`: - nil `chatConfig` + usage event → stream completes without error (guard removed safely) - non-nil `chatConfig` + usage event → `UsageResult` populated with the streamed tokens Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>