Skip to content

deepseek: Fix empty text segments causing issues (#52199) (cherry-pick to stable)#52207

Merged
zed-zippy[bot] merged 1 commit intov0.228.xfrom
cherry-pick-v0.228.x-62cea4e6
Mar 23, 2026
Merged

deepseek: Fix empty text segments causing issues (#52199) (cherry-pick to stable)#52207
zed-zippy[bot] merged 1 commit intov0.228.xfrom
cherry-pick-v0.228.x-62cea4e6

Conversation

@zed-zippy
Copy link
Copy Markdown
Contributor

@zed-zippy zed-zippy bot commented Mar 23, 2026

Cherry-pick of #52199 to stable


Context

Deepseek seems to have started to return empty text deltas, which causes
issues cause their upstream API does not like empty text blocks to be
included in their request.

In practice this caused issues like `An assistant message with
'tool_calls' must be followed by tool messages responding to each
'tool_call_id'..., because the payload looked like this:

User {
    content: "Call the now tool a bunch of times",
},
Assistant {
    content: Some(
        "",
    ),
},
Tool {
    content: "The current datetime is 2026-03-23T13:21:24.084848+00:00.",
    tool_call_id: "call_00_iozCfHXJAPR13XwHiAwJ9OEw",
},

Now we filter out that empty text, which seems to fix the issue. This
matches our implementation for OpenAI

Closes #51854

How to Review

Self-Review Checklist

  • I've reviewed my own diff for quality, security, and reliability
  • Unsafe blocks (if any) have justifying comments
  • The content is consistent with the UI/UX
    checklist
  • Tests cover the new/changed behavior
  • Performance impact has been considered and is acceptable

Release Notes:

  • deepseek: Fixed issue with tool calling (An assistant message with 'tool_calls' must be followed by tool messages responding to each 'tool_call_id'...)

## Context

Deepseek seems to have started to return empty text deltas, which causes
issues cause their upstream API does not like empty text blocks to be
included in their request.

In practice this caused issues like `An assistant message with
'tool_calls' must be followed by tool messages responding to each
'tool_call_id'..., because the payload looked like this:

```
User {
    content: "Call the now tool a bunch of times",
},
Assistant {
    content: Some(
        "",
    ),
},
Tool {
    content: "The current datetime is 2026-03-23T13:21:24.084848+00:00.",
    tool_call_id: "call_00_iozCfHXJAPR13XwHiAwJ9OEw",
},
```

Now we filter out that empty text, which seems to fix the issue. This
matches our implementation for OpenAI

Closes #51854

<!-- What does this PR do, and why? How is it expected to impact users?
     Not just what changed, but what motivated it and why this approach.

Link to Linear issue (e.g., ENG-123) or GitHub issue (e.g., Closes #456)
     if one exists — helps with traceability. -->

## How to Review

<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour — numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
     - See the review process guidelines for comment conventions -->

## Self-Review Checklist

<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- deepseek: Fixed issue with tool calling (`An assistant message with
'tool_calls' must be followed by tool messages responding to each
'tool_call_id'...`)
@cla-bot cla-bot bot added the cla-signed The user has signed the Contributor License Agreement label Mar 23, 2026
@zed-community-bot zed-community-bot bot added the bot Pull requests authored by a bot label Mar 23, 2026
@zed-codeowner-coordinator zed-codeowner-coordinator bot requested review from a team, mikayla-maki and osyvokon and removed request for a team March 23, 2026 13:42
@zed-zippy zed-zippy bot merged commit 269378b into v0.228.x Mar 23, 2026
40 checks passed
@zed-zippy zed-zippy bot deleted the cherry-pick-v0.228.x-62cea4e6 branch March 23, 2026 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot Pull requests authored by a bot cla-signed The user has signed the Contributor License Agreement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants