fix: migrate openai mllm to ga realtime api and add per-join greeting - #2278
fix: migrate openai mllm to ga realtime api and add per-join greeting#2278BenWeekes wants to merge 4 commits into
Conversation
OpenAI retired the realtime beta shape (beta_api_shape_disabled), which broke openai_mllm_python everywhere. Drop the OpenAI-Beta header, map the renamed ga server events onto the existing message classes, and send the ga session.update shape (type realtime, output_modalities, nested audio.input/output with transcription and turn_detection). Verified against the live service: session created and updated, event stream parsed.
greeting config field (default empty = off) spoken once per join after the session config is applied, as a user message item plus a response request — same semantics as the gemini mllm extension. intended to be supplied per join by the platform rather than hardcoded in graphs.
|
Review: migrate openai mllm to GA realtime API + per-join greeting Thanks for this — the GA migration is a genuine unblock (the extension cannot create a session at all today), and mirroring BLOCKING
README.md documents WORTH CHANGING
NITS
TESTING There is no
Nothing here is architectural — mostly the dead imports, the Azure path, and a test to hold the shape in place. The direction is right and this needs to land. |
|
Version bumped to 0.2.3 in both No guarder suite exists for MLLM extensions (only |
ReviewThanks for this — the GA migration is unblocking work, and the diff is small and readable. The alias-table approach for the renamed events is a pragmatic way to avoid rewriting the whole 1. Unused imports will fail CI (
|
ReviewThe GA migration is a real unblock — the extension cannot create a session at all against the current service, so this needs to land. The alias-table approach avoids rewriting I verified against the PR head ( Resolved since earlier review roundsThe five unused session imports ( Correction to an earlier claim: unmapped GA events do not tear down the sessionPrevious rounds flagged that def handle_server_message(self, message: str) -> ServerToClientMessage:
try:
return parse_server_message(message)
except Exception as e:
self.ten_env.log_info(f"Error handling message {e}")The bare 1. Azure is broken by this change
There is a second-order problem specific to Azure. The old payload carried if not self.vendor and "model=" not in self.url:
self.url += f"?model={model}"Azure previously received its model only via Either branch on 2. Greeting fires on every reconnect, and collides with
|
What
Two changes to
openai_mllm_python:1. Migrate to the GA Realtime API shape. OpenAI retired the beta protocol (
beta_api_shape_disabled), which currently breaks this extension for everyone — sessions cannot even be created. This drops theOpenAI-Betaheader, maps the renamed GA server events onto the existing message classes (response.output_audio.delta,response.output_audio_transcript.delta,conversation.item.added/done, …), and sends the GAsession.updateshape (type: realtime,output_modalities, nestedaudio.input/outputwith transcription andturn_detection).2. Per-join greeting param.
greetingconfig field (default""= off), spoken once per join after the session config is applied, as a user message item plus a response request — the same semantics asgemini_mllm_python's existinggreeting. This makes the extension compatible with platforms that supply a greeting per join instead of hardcoding it in graph properties.Verification