OpenAI Realtime server events: typed classes and their wire rendering.
Every event is a frozen dataclass with explicit fields, and the Realtime wire JSON is derived from those fields by :meth:RealtimeEvent.to_realtime. That rendering is pure --- it never consults session state --- which is why it can live here, away from whoever owns the session. The stateful part (response and item ids, content-part bookkeeping) is consumed when the events are constructed, by the consumer.
This module holds the 30 events OpenAI's Realtime API defines. vLLM-Omni's own additions to the wire (listen/speak turn-taking, playback acknowledgement, session resume) are a separate vocabulary in vllm_omni.protocol.duplex.events, so a consumer that only speaks GA does not inherit them.
session_id / epoch are bound by the consumer when an event leaves it; producers build events with the defaults.
AudioDelta dataclass
Bases: ResponseScopedEvent
delta class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.output_audio.delta'
AudioDone dataclass
Bases: ResponseScopedEvent
wire_type class-attribute instance-attribute
wire_type = 'response.output_audio.done'
ContentPartAdded dataclass
Bases: ResponseScopedEvent
part class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.content_part.added'
ContentPartDone dataclass
Bases: ContentPartAdded
wire_type class-attribute instance-attribute
wire_type = 'response.content_part.done'
ErrorEvent dataclass
Bases: RealtimeEvent
code class-attribute instance-attribute
code: str = 'internal_error'
error_type property
OpenAI's error class for this error.
OpenAI standardises only the three classes, not the codes, so the base reports the default. A consumer with its own code vocabulary overrides this --- see vllm_omni.protocol.duplex.events.ErrorEvent.
message class-attribute instance-attribute
param class-attribute instance-attribute
related_event_id: str | None = None
wire_type class-attribute instance-attribute
FunctionCallArgumentsDelta dataclass
Bases: RealtimeEvent
call_id class-attribute instance-attribute
delta class-attribute instance-attribute
item_id class-attribute instance-attribute
item_id: str | None = None
output_index class-attribute instance-attribute
response_id class-attribute instance-attribute
response_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'response.function_call_arguments.delta'
FunctionCallArgumentsDone dataclass
Bases: RealtimeEvent
arguments class-attribute instance-attribute
call_id class-attribute instance-attribute
item_id class-attribute instance-attribute
item_id: str | None = None
output_index class-attribute instance-attribute
response_id class-attribute instance-attribute
response_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'response.function_call_arguments.done'
Bases: RealtimeEvent
item_id: str | None = None
previous_item_id: str | None = None
wire_type = 'input_audio_buffer.committed'
Bases: RealtimeEvent
content_index class-attribute instance-attribute
item_id: str | None = None
wire_type = (
"conversation.item.input_audio_transcription.completed"
)
ItemAdded dataclass
Bases: _ItemEvent
wire_type class-attribute instance-attribute
wire_type = 'conversation.item.added'
ItemCreated dataclass
Bases: _ItemEvent
wire_type class-attribute instance-attribute
wire_type = 'conversation.item.created'
ItemDeleted dataclass
Bases: RealtimeEvent
item_id class-attribute instance-attribute
item_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'conversation.item.deleted'
ItemDone dataclass
Bases: _ItemEvent
wire_type class-attribute instance-attribute
wire_type = 'conversation.item.done'
ItemRetrieved dataclass
Bases: RealtimeEvent
item class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'conversation.item.retrieved'
ItemTruncated dataclass
Bases: RealtimeEvent
audio_end_ms class-attribute instance-attribute
content_index class-attribute instance-attribute
item_id class-attribute instance-attribute
item_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'conversation.item.truncated'
OutputAudioCleared dataclass
Bases: RealtimeEvent
response_id class-attribute instance-attribute
response_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'output_audio_buffer.cleared'
OutputItemAdded dataclass
Bases: RealtimeEvent
item class-attribute instance-attribute
output_index class-attribute instance-attribute
response_id class-attribute instance-attribute
response_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'response.output_item.added'
OutputItemDone dataclass
Bases: OutputItemAdded
wire_type class-attribute instance-attribute
wire_type = 'response.output_item.done'
RateLimitsUpdated dataclass
Bases: RealtimeEvent
rate_limits class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'rate_limits.updated'
RealtimeEvent dataclass
Base of every public session event.
epoch class-attribute instance-attribute
event_id class-attribute instance-attribute
optional_wire_fields class-attribute
session_id class-attribute instance-attribute
wire_type class-attribute
to_realtime
The Realtime wire JSON object for this event (derived from the fields).
ResponseCreated dataclass
Bases: RealtimeEvent
response class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.created'
ResponseDone dataclass
Bases: RealtimeEvent
response class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.done'
ResponseScopedEvent dataclass
Bases: RealtimeEvent
Events addressed to one response (and usually one output item / content part).
content_index class-attribute instance-attribute
item_id class-attribute instance-attribute
item_id: str | None = None
output_index class-attribute instance-attribute
response_id class-attribute instance-attribute
response_id: str | None = None
SessionCreated dataclass
Bases: RealtimeEvent
session class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'session.created'
SessionUpdated dataclass
Bases: RealtimeEvent
session class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'session.updated'
SpeechStarted dataclass
Bases: RealtimeEvent
audio_start_ms class-attribute instance-attribute
item_id class-attribute instance-attribute
item_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'input_audio_buffer.speech_started'
SpeechStopped dataclass
Bases: RealtimeEvent
audio_end_ms class-attribute instance-attribute
item_id class-attribute instance-attribute
item_id: str | None = None
wire_type class-attribute instance-attribute
wire_type = 'input_audio_buffer.speech_stopped'
TextDelta dataclass
Bases: ResponseScopedEvent
delta class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.output_text.delta'
TextDone dataclass
Bases: ResponseScopedEvent
text class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.output_text.done'
TranscriptDelta dataclass
Bases: ResponseScopedEvent
delta class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.output_audio_transcript.delta'
TranscriptDone dataclass
Bases: ResponseScopedEvent
transcript class-attribute instance-attribute
wire_type class-attribute instance-attribute
wire_type = 'response.output_audio_transcript.done'