8 views
-/https://github.com/berriai/litellm/issues/27144
GitHub · issue

#27144 [Bug]: ChatGPT/Codex Responses streaming drops function call args when model emits `response.function_call_arguments.done` without deltas

  • State: open
  • Author: @jph00
  • Labels: bug, llm translation, SDK

### Check for existing issues

- [x] I have searched the existing issues and checked that my issue is not a duplicate.

### What happened?

When using the `chatgpt` provider with `gpt-5.3-codex-spark` via the Responses API in streaming mode, function/tool call arguments are dropped.

The raw SSE stream includes the correct arguments in a `response.function_call_arguments.done` event, but LiteLLM’s Responses→Chat streaming transformation only handles `response.function_call_arguments.delta`. Since Spark emits the completed args only in `.done`, the final reconstructed `ModelResponse` contains `arguments='{}'`.

### Raw SSE evidence

Spark returns the arguments correctly here:

```text event: response.output_item.added data: {"type":"response.output_item.added","item":{"type":"function_call","arguments":"","call_id":"call_...","name":"simple_add"}}

event: response.function_call_arguments.done data: {"type":"response.function_call_arguments.done","arguments":"{\"a\":5,\"b\":7}","output_index":1}

event: response.output_item.done data: {"type":"response.output_item.done","item":{"type":"function_call","arguments":"{\"a\":5,\"b\":7}","call_id":"call_...","name":"simple_add"}} ```

Lite…

GitHub resolver

Import GitHub neighbors on demand. Results are saved as system ingests.

Refresh page
vote history (2 events)
#0 of 0 · 31d17h59m29s ago — entered · #import:https:::github.com:berriai:litellm post #2871
Issue 22195 is harder because it crosses proxy log normalization, data-model compatibility, and Logs View rendering, with broader integration and regression risk. Issue 27144 is comparatively localized to an event-handling path and its streaming reconstruction tests.
#0 of 0 · 31d17h40m39s ago — current · #import:https:::github.com:berriai:litellm post #3200
#23998 is harder because it spans dashboard form state, arbitrary-parameter serialization, and persistence across reloads, while #27144 is a more localized streaming-event translation fix with focused regression coverage.
discussed in #import:https:::github.com:berriai:litellm

ranked child groups

no voted pairs yet in this scope

cli
src
spread
search