Skip to content

Commit 187996e

Browse files
authored
Don't emit AG-UI text message content events with empty text part deltas (#2779)
1 parent e30c444 commit 187996e

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

pydantic_ai_slim/pydantic_ai/ag_ui.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -488,10 +488,11 @@ async def _handle_model_request_event( # noqa: C901
488488
elif isinstance(agent_event, PartDeltaEvent):
489489
delta = agent_event.delta
490490
if isinstance(delta, TextPartDelta):
491-
yield TextMessageContentEvent(
492-
message_id=stream_ctx.message_id,
493-
delta=delta.content_delta,
494-
)
491+
if delta.content_delta: # pragma: no branch
492+
yield TextMessageContentEvent(
493+
message_id=stream_ctx.message_id,
494+
delta=delta.content_delta,
495+
)
495496
elif isinstance(delta, ToolCallPartDelta): # pragma: no branch
496497
assert delta.tool_call_id, '`ToolCallPartDelta.tool_call_id` must be set'
497498
yield ToolCallArgsEvent(

tests/test_ag_ui.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,7 @@ async def stream_function(
864864
) -> AsyncIterator[DeltaThinkingCalls | str]:
865865
yield {0: DeltaThinkingPart(content='')}
866866
yield "Let's do some thinking"
867+
yield ''
867868
yield {1: DeltaThinkingPart(content='Thinking ')}
868869
yield {1: DeltaThinkingPart(content='about the weather')}
869870
yield {2: DeltaThinkingPart(content='')}

0 commit comments

Comments
 (0)