From d560e4c009b6da2afa0ee9bbb1414cde51a62cd4 Mon Sep 17 00:00:00 2001 From: Lei Nie Date: Mon, 23 Mar 2026 21:02:15 +0000 Subject: [PATCH] fix(responses): emit content_part.added event for non-OpenAI models LiteLLMCompletionStreamingIterator defined create_content_part_added_event() but never called it, so non-OpenAI providers (Claude, Gemini, etc.) skipped this spec-required event. Downstream parsers that process content_part.added to initialize the text part structure would fail when output_text.delta arrived before the text part existed. --- .../streaming_iterator.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/litellm/responses/litellm_completion_transformation/streaming_iterator.py b/litellm/responses/litellm_completion_transformation/streaming_iterator.py index 0672b03bcd..9acc8f41c2 100644 --- a/litellm/responses/litellm_completion_transformation/streaming_iterator.py +++ b/litellm/responses/litellm_completion_transformation/streaming_iterator.py @@ -845,6 +845,14 @@ class LiteLLMCompletionStreamingIterator(ResponsesAPIStreamingIterator): ) event.__dict__["sequence_number"] = self._sequence_number self._pending_response_events.append(event) + + # Emit content_part.added immediately after output_item.added for message + # items. The OpenAI Responses spec requires this event before any + # output_text.delta events so downstream parsers can initialize the + # text part structure. + self.sent_content_part_added_event = True + content_part_event = self.create_content_part_added_event() + self._pending_response_events.append(content_part_event) return async def __anext__(