Fix: echo reasoning_content back for DeepSeek V4 multi-turn tool calls (fixed the Deepseek V4 thinking problem)#3058
Open
Psy-lzh wants to merge 1 commit into
Open
Fix: echo reasoning_content back for DeepSeek V4 multi-turn tool calls (fixed the Deepseek V4 thinking problem)#3058Psy-lzh wants to merge 1 commit into
Psy-lzh wants to merge 1 commit into
Conversation
Author
|
Thanks a lot for the sharing by the way |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix: echo reasoning_content back for DeepSeek V4 multi-turn tool calls
Two layers in the CLI silently dropped assistant thinking blocks before they could reach build_chat_completion_request, breaking multi-turn tool-using conversations with DeepSeek V4 (which mandates that prior reasoning_content be echoed back per its thinking-mode protocol).
AnthropicRuntimeClient::consume_stream did not accumulate
ThinkingDelta into pending state, and never emitted
AssistantEvent::Thinking on ContentBlockStop. As a result the
session never contained a ContentBlock::Thinking.
convert_messages mapped ContentBlock::Thinking -> None, dropping
thinking blocks even if they had been persisted.
build_chat_completion_request already serializes
InputContentBlock::Thinking to the reasoning_content field for
DeepSeek V4 (gated on model_requires_reasoning_content_in_history),
so no provider-side changes are needed.
Verified end-to-end with deepseek-v4-flash via a local SSE proxy:
multi-turn tool-using conversations now succeed where they
previously failed with "400 The reasoning_content in the thinking
mode must be passed back to the API."