Skip to content

fix: stop replaying empty assistant messages to the provider - #29169

Open
Classic298 wants to merge 1 commit into
open-webui:devfrom
Classic298:fix/empty-assistant-replay
Open

fix: stop replaying empty assistant messages to the provider#29169
Classic298 wants to merge 1 commit into
open-webui:devfrom
Classic298:fix/empty-assistant-replay

Conversation

@Classic298

Copy link
Copy Markdown
Member

A generation that fails or is aborted before its first token is stored as an assistant message with no content. Every later message in that chat replays it to the provider, and providers that reject empty assistant content refuse the whole request, so the chat stays broken until the row is removed from the database by hand.

Empty assistant turns are now dropped when the history is rebuilt for the provider. Messages carrying tool calls or output items are untouched, and empty user, system and tool messages are left alone so nothing else about the payload changes.

The filter sits at the point the normal completion path and the tool-approval resume path share, so it also covers payloads posted straight to the API rather than loaded from a saved chat. Chats already broken on disk recover on their next message, no migration needed.

Fixes #25083

Contributor License Agreement

Note

Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in.

A generation that fails or is aborted before its first token is stored as an assistant message with no content. Every later message in that chat replays it to the provider, and providers that reject empty assistant content refuse the whole request, so the chat stays broken until the row is removed from the database by hand.

Empty assistant turns are now dropped when the history is rebuilt for the provider. Messages carrying tool calls or output items are untouched, and empty user, system and tool messages are left alone so nothing else about the payload changes.

The filter sits at the point the normal completion path and the tool-approval resume path share, so it also covers payloads posted straight to the API rather than loaded from a saved chat. Chats already broken on disk recover on their next message, no migration needed.

Fixes open-webui#25083
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant