diff --git a/litellm/responses/streaming_iterator.py b/litellm/responses/streaming_iterator.py index c4e72cb7dc5..a7eecf53dfe 100644 --- a/litellm/responses/streaming_iterator.py +++ b/litellm/responses/streaming_iterator.py @@ -1212,6 +1212,18 @@ def _build_synthetic_response_events( response=transformed, ) ) + + # Assign monotonic sequence_number to every event. The helpers above + # build events without consistently passing sequence_number, and several + # event types now declare `sequence_number: int = 0` (default), which + # would otherwise serialize as 0 for most events and break the strict + # monotonic ordering guarantee expected by some Responses API clients. + for idx, event in enumerate(events): + try: + event.sequence_number = idx + except (AttributeError, ValueError): + pass + return events