mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 13:16:24 +00:00
* fix(models): preserve Moonshot cache_write_tokens in usage metadata langchain-openai 1.2.1's _create_usage_metadata reads prompt_tokens_details.cached_tokens but not cache_write_tokens, so the PatchedChatDeepSeek conversion dropped the cache-creation count that Kimi K3.1 reports, and DeerFlow's usage journal never saw it (#7426). PatchedChatDeepSeek now overrides _create_chat_result to restore the raw SDK cache_write_tokens as input_token_details["cache_creation"]. Offline regression: a real OpenAI ChatCompletion carrying prompt_tokens_details {cached_tokens: 100, cache_write_tokens: 256} converts to input_token_details {cache_read: 100, cache_creation: 256} (red before, green after); the existing 14 patched_deepseek tests and the managed-provider suites stay green. * fix(models): restore cache_write_tokens on the streaming path too Streamed runs (web UI messages-tuple) build usage metadata in _convert_chunk_to_generation_chunk -> _create_usage_metadata, which ignores cache_write_tokens, so the non-streaming-only override still lost the count on the path streamed runs actually take (review follow-up on #7428). _convert_chunk_to_generation_chunk now mirrors _create_chat_result's restore for the final usage chunk. Note chunk["usage"] is JSON null on non-final chunks, so the lookup uses `or {}` instead of a .get default (a None usage would otherwise raise AttributeError inside every chunk and break test_model's connection probe).