Hi everyone,
I’m implementing function calling using the OpenAI Realtime API (model: gpt-4o-realtime-preview-2025-06-03
) following the official documentation. However, I’m experiencing a blocking issue: After a tool/function is called and the function_call_output
is returned, the model does NOT send a response to the user unless the user speaks/interacts again. Even after sending a dummy user message (as a workaround), the assistant still doesn’t respond automatically.
What I’m doing:
- I listen for the
"response.function_call"
event. - I reply with a
"conversation.item.create"
containing a"function_call_output"
(with a validcall_id
, output as JSON string). - I immediately send a
"response.create"
event as the docs specify. - (Workaround): I also send a “dummy”
"conversation.item.create"
message and another"response.create"
, to try and force a response.
What actually happens:
- I see the following sequence in the event log:
response.function_call_arguments.done
- (send function_call_output & response.create)
- (send dummy message & response.create)
- No
response.audio.delta
orresponse.text.delta
- No actual assistant response is emitted
- The dialogue is “stuck” — only after a new, real user input does the assistant finally reply.
Sample log:
EVENT response.function_call: ...
(Sent function_call_output)
(Sent response.create)
EVENT response.done: ...
(Sent dummy user message)
(Sent response.create)
# NO assistant response at all until real user input!
(Happy to provide the full logs, code, or event objects if needed.)
What I’ve tried:
- Following the OpenAI docs step by step
- Waiting for events after output
- Sending extra response.create
- Sending artificial/dummy user turns
- Changing output format, role, session settings, etc.
Expected Behavior:
After sending function_call_output
(and response.create), the model should naturally respond to the user without them having to provide another input.
Actual Behavior:
The model only responds after a real (manual) user input, not after function_call_output, even if a dummy message is sent.
Is this a known limitation or a bug?
Is there a recommended workaround that works right now, or can OpenAI confirm this as a limitation that will be fixed in a future release? Would appreciate any advice or insights from those who got tools working “seamlessly” with real-time turns!
Thank you in advance!
Tech:
- Model:
gpt-4o-realtime-preview-2025-06-03
- Python SDK:
openai.AsyncOpenAI
- Endpoint: Realtime API, using function calling as described in docs
(Feel free to ping me for code snippets or deeper debug info.)