From 328549d87a9497be0c1e1fa70b61f33ed106f2b0 Mon Sep 17 00:00:00 2001 From: qazz92 Date: Mon, 1 Jun 2026 03:54:56 +0900 Subject: [PATCH] address greptile sse recovery feedback --- litellm/responses/sse_output_recovery.py | 5 ++++ .../responses/test_sse_output_recovery.py | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/litellm/responses/sse_output_recovery.py b/litellm/responses/sse_output_recovery.py index 7a78e5ce8bb..c31b6ee84c2 100644 --- a/litellm/responses/sse_output_recovery.py +++ b/litellm/responses/sse_output_recovery.py @@ -69,6 +69,11 @@ def record_output_text_delta_chunk( output_items: Dict[int, Dict[str, Any]], text_only_items: Dict[int, Dict[str, Any]], ) -> None: + """Accumulate an OUTPUT_TEXT_DELTA chunk into ``text_only_items``. + + Real OUTPUT_ITEM_DONE events already captured in ``output_items`` take + precedence at the same ``output_index``. + """ text_delta = parsed_chunk.get("delta") if not isinstance(text_delta, str): return diff --git a/tests/test_litellm/responses/test_sse_output_recovery.py b/tests/test_litellm/responses/test_sse_output_recovery.py index f6f2b1e1b11..8cce7db06a4 100644 --- a/tests/test_litellm/responses/test_sse_output_recovery.py +++ b/tests/test_litellm/responses/test_sse_output_recovery.py @@ -86,6 +86,34 @@ def test_text_delta_chunks_are_accumulated(): assert text_only_items[0]["content"][0]["text"] == "Hello" +def test_text_done_replaces_accumulated_delta_with_final_text(): + output_items: dict = {} + text_only_items: dict = {} + + record_output_text_delta_chunk( + parsed_chunk={ + "type": "response.output_text.delta", + "output_index": 0, + "content_index": 0, + "delta": "partial", + }, + output_items=output_items, + text_only_items=text_only_items, + ) + record_output_text_chunk( + parsed_chunk={ + "type": "response.output_text.done", + "output_index": 0, + "content_index": 0, + "text": "final", + }, + output_items=output_items, + text_only_items=text_only_items, + ) + + assert text_only_items[0]["content"][0]["text"] == "final" + + def test_text_delta_with_invalid_delta_is_ignored(): output_items: dict = {} text_only_items: dict = {}