openai 0.88.0 → 0.89.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +1 -1
- data/lib/openai/client.rb +4 -0
- data/lib/openai/models/beta/beta_response_input_item.rb +91 -1
- data/lib/openai/models/beta/beta_response_item.rb +93 -1
- data/lib/openai/models/beta/beta_response_output_item.rb +91 -1
- data/lib/openai/models/conversations/conversation_item.rb +91 -1
- data/lib/openai/models/live/audio_format.rb +109 -0
- data/lib/openai/models/live/built_in_voice.rb +38 -0
- data/lib/openai/models/live/client_config.rb +22 -0
- data/lib/openai/models/live/client_delegation.rb +22 -0
- data/lib/openai/models/live/client_event.rb +54 -0
- data/lib/openai/models/live/commentary_append_event.rb +59 -0
- data/lib/openai/models/live/commentary_appended_event.rb +65 -0
- data/lib/openai/models/live/custom_voice.rb +17 -0
- data/lib/openai/models/live/data_channel_config.rb +81 -0
- data/lib/openai/models/live/delegation_created_event.rb +140 -0
- data/lib/openai/models/live/error.rb +60 -0
- data/lib/openai/models/live/error_event.rb +52 -0
- data/lib/openai/models/live/fork_client_event.rb +53 -0
- data/lib/openai/models/live/fork_server_event.rb +295 -0
- data/lib/openai/models/live/fork_session_config.rb +107 -0
- data/lib/openai/models/live/fork_session_start_event.rb +48 -0
- data/lib/openai/models/live/function_tool.rb +60 -0
- data/lib/openai/models/live/info_event.rb +60 -0
- data/lib/openai/models/live/initial_item.rb +419 -0
- data/lib/openai/models/live/input_audio_append_event.rb +50 -0
- data/lib/openai/models/live/input_audio_mute_event.rb +33 -0
- data/lib/openai/models/live/input_audio_muted_event.rb +42 -0
- data/lib/openai/models/live/input_audio_unmute_event.rb +33 -0
- data/lib/openai/models/live/input_audio_unmuted_event.rb +42 -0
- data/lib/openai/models/live/input_transcript_delta_event.rb +76 -0
- data/lib/openai/models/live/instructions_append_event.rb +57 -0
- data/lib/openai/models/live/instructions_appended_event.rb +65 -0
- data/lib/openai/models/live/live_create_params.rb +57 -0
- data/lib/openai/models/live/live_create_response.rb +77 -0
- data/lib/openai/models/live/media_session_config.rb +227 -0
- data/lib/openai/models/live/media_session_fork_config.rb +75 -0
- data/lib/openai/models/live/output_audio_delta_event.rb +58 -0
- data/lib/openai/models/live/output_transcript_delta_event.rb +76 -0
- data/lib/openai/models/live/response_create_event.rb +33 -0
- data/lib/openai/models/live/response_event.rb +67 -0
- data/lib/openai/models/live/response_item_create_event.rb +44 -0
- data/lib/openai/models/live/responses_delegation_config.rb +332 -0
- data/lib/openai/models/live/responses_delegation_update_config.rb +332 -0
- data/lib/openai/models/live/server_event.rb +295 -0
- data/lib/openai/models/live/server_event_selector.rb +32 -0
- data/lib/openai/models/live/session_accept_params.rb +257 -0
- data/lib/openai/models/live/session_close_event.rb +33 -0
- data/lib/openai/models/live/session_closed_event.rb +113 -0
- data/lib/openai/models/live/session_config.rb +236 -0
- data/lib/openai/models/live/session_download_recording_params.rb +27 -0
- data/lib/openai/models/live/session_fork_params.rb +66 -0
- data/lib/openai/models/live/session_fork_response.rb +77 -0
- data/lib/openai/models/live/session_hangup_params.rb +22 -0
- data/lib/openai/models/live/session_refer_params.rb +34 -0
- data/lib/openai/models/live/session_reject_params.rb +32 -0
- data/lib/openai/models/live/session_resource.rb +268 -0
- data/lib/openai/models/live/session_start_event.rb +46 -0
- data/lib/openai/models/live/session_started_event.rb +51 -0
- data/lib/openai/models/live/session_update_config.rb +69 -0
- data/lib/openai/models/live/session_update_event.rb +46 -0
- data/lib/openai/models/live/session_updated_event.rb +51 -0
- data/lib/openai/models/live/session_usage.rb +24 -0
- data/lib/openai/models/live/session_usage_updated_event.rb +81 -0
- data/lib/openai/models/live/thinking_append_event.rb +59 -0
- data/lib/openai/models/live/thinking_appended_event.rb +65 -0
- data/lib/openai/models/responses/response_input_item.rb +91 -1
- data/lib/openai/models/responses/response_item.rb +93 -1
- data/lib/openai/models/responses/response_output_item.rb +91 -1
- data/lib/openai/models/webhooks/live_call_incoming_webhook_event.rb +12 -7
- data/lib/openai/models/webhooks/live_transport_incoming_webhook_event.rb +137 -0
- data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +4 -4
- data/lib/openai/models/webhooks/unwrap_webhook_event.rb +9 -2
- data/lib/openai/models.rb +2 -0
- data/lib/openai/resources/live/forks.rb +16 -0
- data/lib/openai/resources/live/sessions.rb +180 -0
- data/lib/openai/resources/live/sideband.rb +16 -0
- data/lib/openai/resources/live.rb +54 -0
- data/lib/openai/resources/webhooks.rb +1 -1
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +65 -0
- data/rbi/openai/client.rbi +3 -0
- data/rbi/openai/models/beta/beta_response_input_item.rbi +109 -0
- data/rbi/openai/models/beta/beta_response_item.rbi +105 -0
- data/rbi/openai/models/beta/beta_response_output_item.rbi +119 -0
- data/rbi/openai/models/conversations/conversation_item.rbi +133 -0
- data/rbi/openai/models/live/audio_format.rbi +185 -0
- data/rbi/openai/models/live/built_in_voice.rbi +46 -0
- data/rbi/openai/models/live/client_config.rbi +54 -0
- data/rbi/openai/models/live/client_delegation.rbi +51 -0
- data/rbi/openai/models/live/client_event.rbi +41 -0
- data/rbi/openai/models/live/commentary_append_event.rbi +88 -0
- data/rbi/openai/models/live/commentary_appended_event.rbi +97 -0
- data/rbi/openai/models/live/custom_voice.rbi +46 -0
- data/rbi/openai/models/live/data_channel_config.rbi +119 -0
- data/rbi/openai/models/live/delegation_created_event.rbi +207 -0
- data/rbi/openai/models/live/error.rbi +95 -0
- data/rbi/openai/models/live/error_event.rbi +87 -0
- data/rbi/openai/models/live/fork_client_event.rbi +40 -0
- data/rbi/openai/models/live/fork_server_event.rbi +436 -0
- data/rbi/openai/models/live/fork_session_config.rbi +234 -0
- data/rbi/openai/models/live/fork_session_start_event.rbi +80 -0
- data/rbi/openai/models/live/function_tool.rbi +95 -0
- data/rbi/openai/models/live/info_event.rbi +92 -0
- data/rbi/openai/models/live/initial_item.rbi +661 -0
- data/rbi/openai/models/live/input_audio_append_event.rbi +79 -0
- data/rbi/openai/models/live/input_audio_mute_event.rbi +62 -0
- data/rbi/openai/models/live/input_audio_muted_event.rbi +74 -0
- data/rbi/openai/models/live/input_audio_unmute_event.rbi +62 -0
- data/rbi/openai/models/live/input_audio_unmuted_event.rbi +74 -0
- data/rbi/openai/models/live/input_transcript_delta_event.rbi +115 -0
- data/rbi/openai/models/live/instructions_append_event.rbi +86 -0
- data/rbi/openai/models/live/instructions_appended_event.rbi +97 -0
- data/rbi/openai/models/live/live_create_params.rbi +121 -0
- data/rbi/openai/models/live/live_create_response.rbi +160 -0
- data/rbi/openai/models/live/media_session_config.rbi +390 -0
- data/rbi/openai/models/live/media_session_fork_config.rbi +143 -0
- data/rbi/openai/models/live/output_audio_delta_event.rbi +93 -0
- data/rbi/openai/models/live/output_transcript_delta_event.rbi +115 -0
- data/rbi/openai/models/live/response_create_event.rbi +62 -0
- data/rbi/openai/models/live/response_event.rbi +105 -0
- data/rbi/openai/models/live/response_item_create_event.rbi +183 -0
- data/rbi/openai/models/live/responses_delegation_config.rbi +562 -0
- data/rbi/openai/models/live/responses_delegation_update_config.rbi +585 -0
- data/rbi/openai/models/live/server_event.rbi +436 -0
- data/rbi/openai/models/live/server_event_selector.rbi +64 -0
- data/rbi/openai/models/live/session_accept_params.rbi +451 -0
- data/rbi/openai/models/live/session_close_event.rbi +62 -0
- data/rbi/openai/models/live/session_closed_event.rbi +148 -0
- data/rbi/openai/models/live/session_config.rbi +427 -0
- data/rbi/openai/models/live/session_download_recording_params.rbi +57 -0
- data/rbi/openai/models/live/session_fork_params.rbi +131 -0
- data/rbi/openai/models/live/session_fork_response.rbi +160 -0
- data/rbi/openai/models/live/session_hangup_params.rbi +53 -0
- data/rbi/openai/models/live/session_refer_params.rbi +64 -0
- data/rbi/openai/models/live/session_reject_params.rbi +62 -0
- data/rbi/openai/models/live/session_resource.rbi +461 -0
- data/rbi/openai/models/live/session_start_event.rbi +78 -0
- data/rbi/openai/models/live/session_started_event.rbi +86 -0
- data/rbi/openai/models/live/session_update_config.rbi +134 -0
- data/rbi/openai/models/live/session_update_event.rbi +78 -0
- data/rbi/openai/models/live/session_updated_event.rbi +86 -0
- data/rbi/openai/models/live/session_usage.rbi +53 -0
- data/rbi/openai/models/live/session_usage_updated_event.rbi +148 -0
- data/rbi/openai/models/live/thinking_append_event.rbi +88 -0
- data/rbi/openai/models/live/thinking_appended_event.rbi +97 -0
- data/rbi/openai/models/responses/response_input_item.rbi +113 -0
- data/rbi/openai/models/responses/response_item.rbi +105 -0
- data/rbi/openai/models/responses/response_output_item.rbi +125 -0
- data/rbi/openai/models/webhooks/live_call_incoming_webhook_event.rbi +11 -7
- data/rbi/openai/models/webhooks/live_transport_incoming_webhook_event.rbi +226 -0
- data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +4 -4
- data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
- data/rbi/openai/models.rbi +2 -0
- data/rbi/openai/resources/live/forks.rbi +19 -0
- data/rbi/openai/resources/live/sessions.rbi +110 -0
- data/rbi/openai/resources/live/sideband.rbi +19 -0
- data/rbi/openai/resources/live.rbi +43 -0
- data/rbi/openai/resources/responses.rbi +75 -38
- data/rbi/openai/resources/webhooks.rbi +1 -0
- data/sig/openai/client.rbs +2 -0
- data/sig/openai/models/beta/beta_response_input_item.rbs +56 -0
- data/sig/openai/models/beta/beta_response_item.rbs +56 -0
- data/sig/openai/models/beta/beta_response_output_item.rbs +56 -0
- data/sig/openai/models/conversations/conversation_item.rbs +56 -0
- data/sig/openai/models/live/audio_format.rbs +73 -0
- data/sig/openai/models/live/built_in_voice.rbs +58 -0
- data/sig/openai/models/live/client_config.rbs +15 -0
- data/sig/openai/models/live/client_delegation.rbs +15 -0
- data/sig/openai/models/live/client_event.rbs +24 -0
- data/sig/openai/models/live/commentary_append_event.rbs +37 -0
- data/sig/openai/models/live/commentary_appended_event.rbs +44 -0
- data/sig/openai/models/live/custom_voice.rbs +15 -0
- data/sig/openai/models/live/data_channel_config.rbs +56 -0
- data/sig/openai/models/live/delegation_created_event.rbs +89 -0
- data/sig/openai/models/live/error.rbs +46 -0
- data/sig/openai/models/live/error_event.rbs +39 -0
- data/sig/openai/models/live/fork_client_event.rbs +24 -0
- data/sig/openai/models/live/fork_server_event.rbs +212 -0
- data/sig/openai/models/live/fork_session_config.rbs +89 -0
- data/sig/openai/models/live/fork_session_start_event.rbs +32 -0
- data/sig/openai/models/live/function_tool.rbs +42 -0
- data/sig/openai/models/live/info_event.rbs +44 -0
- data/sig/openai/models/live/initial_item.rbs +332 -0
- data/sig/openai/models/live/input_audio_append_event.rbs +32 -0
- data/sig/openai/models/live/input_audio_mute_event.rbs +24 -0
- data/sig/openai/models/live/input_audio_muted_event.rbs +34 -0
- data/sig/openai/models/live/input_audio_unmute_event.rbs +24 -0
- data/sig/openai/models/live/input_audio_unmuted_event.rbs +34 -0
- data/sig/openai/models/live/input_transcript_delta_event.rbs +49 -0
- data/sig/openai/models/live/instructions_append_event.rbs +37 -0
- data/sig/openai/models/live/instructions_appended_event.rbs +44 -0
- data/sig/openai/models/live/live_create_params.rbs +45 -0
- data/sig/openai/models/live/live_create_response.rbs +49 -0
- data/sig/openai/models/live/media_session_config.rbs +157 -0
- data/sig/openai/models/live/media_session_fork_config.rbs +66 -0
- data/sig/openai/models/live/output_audio_delta_event.rbs +41 -0
- data/sig/openai/models/live/output_transcript_delta_event.rbs +49 -0
- data/sig/openai/models/live/response_create_event.rbs +18 -0
- data/sig/openai/models/live/response_event.rbs +44 -0
- data/sig/openai/models/live/response_item_create_event.rbs +32 -0
- data/sig/openai/models/live/responses_delegation_config.rbs +244 -0
- data/sig/openai/models/live/responses_delegation_update_config.rbs +246 -0
- data/sig/openai/models/live/server_event.rbs +212 -0
- data/sig/openai/models/live/server_event_selector.rbs +19 -0
- data/sig/openai/models/live/session_accept_params.rbs +185 -0
- data/sig/openai/models/live/session_close_event.rbs +17 -0
- data/sig/openai/models/live/session_closed_event.rbs +68 -0
- data/sig/openai/models/live/session_config.rbs +168 -0
- data/sig/openai/models/live/session_download_recording_params.rbs +25 -0
- data/sig/openai/models/live/session_fork_params.rbs +54 -0
- data/sig/openai/models/live/session_fork_response.rbs +49 -0
- data/sig/openai/models/live/session_hangup_params.rbs +25 -0
- data/sig/openai/models/live/session_refer_params.rbs +33 -0
- data/sig/openai/models/live/session_reject_params.rbs +33 -0
- data/sig/openai/models/live/session_resource.rbs +183 -0
- data/sig/openai/models/live/session_start_event.rbs +32 -0
- data/sig/openai/models/live/session_started_event.rbs +39 -0
- data/sig/openai/models/live/session_update_config.rbs +56 -0
- data/sig/openai/models/live/session_update_event.rbs +32 -0
- data/sig/openai/models/live/session_updated_event.rbs +39 -0
- data/sig/openai/models/live/session_usage.rbs +15 -0
- data/sig/openai/models/live/session_usage_updated_event.rbs +58 -0
- data/sig/openai/models/live/thinking_append_event.rbs +37 -0
- data/sig/openai/models/live/thinking_appended_event.rbs +44 -0
- data/sig/openai/models/responses/response_input_item.rbs +56 -0
- data/sig/openai/models/responses/response_item.rbs +56 -0
- data/sig/openai/models/responses/response_output_item.rbs +56 -0
- data/sig/openai/models/webhooks/live_transport_incoming_webhook_event.rbs +95 -0
- data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
- data/sig/openai/models.rbs +2 -0
- data/sig/openai/resources/live/forks.rbs +9 -0
- data/sig/openai/resources/live/sessions.rbs +44 -0
- data/sig/openai/resources/live/sideband.rbs +9 -0
- data/sig/openai/resources/live.rbs +19 -0
- data/sig/openai/resources/webhooks.rbs +1 -0
- metadata +196 -1
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Live
|
|
7
|
+
|
|
8
|
+
class SessionResource < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
OrHash = T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
OpenAI::Live::SessionResource,
|
|
13
|
+
OpenAI::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The unique ID of the Live session. Use this ID for sideband connections,
|
|
18
|
+
# forking, and recording download.
|
|
19
|
+
sig { returns(String) }
|
|
20
|
+
attr_accessor :id
|
|
21
|
+
|
|
22
|
+
# The Unix timestamp, in seconds, at which the Live session expires.
|
|
23
|
+
sig { returns(Integer) }
|
|
24
|
+
attr_accessor :expires_at
|
|
25
|
+
|
|
26
|
+
# The Live model. Required in the session configuration for every transport; do
|
|
27
|
+
# not pass it as a URL query parameter.
|
|
28
|
+
sig { returns(OpenAI::Live::SessionResource::Model::Variants) }
|
|
29
|
+
attr_accessor :model
|
|
30
|
+
|
|
31
|
+
# The status of the session snapshot. Always `active`, including the final
|
|
32
|
+
# snapshot in session.closed; use the event type to determine that the session has
|
|
33
|
+
# closed.
|
|
34
|
+
sig { returns(Symbol) }
|
|
35
|
+
attr_accessor :status
|
|
36
|
+
|
|
37
|
+
# Startup audio configuration. Only primary WebSockets accept audio.format; WebRTC
|
|
38
|
+
# and SIP negotiate their media format. Voice and format are immutable after
|
|
39
|
+
# startup.
|
|
40
|
+
sig { returns(T.nilable(OpenAI::Live::SessionResource::Audio)) }
|
|
41
|
+
attr_reader :audio
|
|
42
|
+
|
|
43
|
+
sig { params(audio: OpenAI::Live::SessionResource::Audio::OrHash).void }
|
|
44
|
+
attr_writer :audio
|
|
45
|
+
|
|
46
|
+
# Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
|
|
47
|
+
# session. Trusted sideband connections are unaffected.
|
|
48
|
+
sig { returns(T.nilable(OpenAI::Live::ClientConfig)) }
|
|
49
|
+
attr_reader :client
|
|
50
|
+
|
|
51
|
+
sig { params(client: OpenAI::Live::ClientConfig::OrHash).void }
|
|
52
|
+
attr_writer :client
|
|
53
|
+
|
|
54
|
+
# Who handles tasks delegated by the Live model. Omitted or null selects your
|
|
55
|
+
# application; use `responses` to let the API manage a Responses backend.
|
|
56
|
+
sig { returns(T.nilable(OpenAI::Live::SessionResource::Delegation::Variants)) }
|
|
57
|
+
attr_accessor :delegation
|
|
58
|
+
|
|
59
|
+
# Ordered text-only history supplied before startup. Supports developer, user, and
|
|
60
|
+
# assistant messages with one text part each; at most 128 messages and 8,192
|
|
61
|
+
# rendered tokens in total.
|
|
62
|
+
sig {
|
|
63
|
+
returns(
|
|
64
|
+
T.nilable(
|
|
65
|
+
T::Array[
|
|
66
|
+
T.any(
|
|
67
|
+
OpenAI::Live::InitialItem::Developer,
|
|
68
|
+
OpenAI::Live::InitialItem::User,
|
|
69
|
+
OpenAI::Live::InitialItem::Assistant
|
|
70
|
+
)
|
|
71
|
+
]
|
|
72
|
+
)
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
attr_reader :input
|
|
76
|
+
|
|
77
|
+
sig {
|
|
78
|
+
params(
|
|
79
|
+
input: T::Array[
|
|
80
|
+
T.any(
|
|
81
|
+
OpenAI::Live::InitialItem::Developer::OrHash,
|
|
82
|
+
OpenAI::Live::InitialItem::User::OrHash,
|
|
83
|
+
OpenAI::Live::InitialItem::Assistant::OrHash
|
|
84
|
+
)
|
|
85
|
+
]
|
|
86
|
+
)
|
|
87
|
+
.void
|
|
88
|
+
}
|
|
89
|
+
attr_writer :input
|
|
90
|
+
|
|
91
|
+
# Frontend instructions for voice, conversation, interruptions, and when to
|
|
92
|
+
# delegate. Start with the
|
|
93
|
+
# [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting);
|
|
94
|
+
# put business rules and tool workflows in a separate
|
|
95
|
+
# [backend prompt](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
|
|
96
|
+
# Limited to 16,384 client-supplied tokens. Omitted or blank instructions use
|
|
97
|
+
# server defaults. Immutable after startup.
|
|
98
|
+
sig { returns(T.nilable(String)) }
|
|
99
|
+
attr_accessor :instructions
|
|
100
|
+
|
|
101
|
+
# Whether to store the session for later forking and recording download. Defaults
|
|
102
|
+
# to false for new sessions.
|
|
103
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
104
|
+
attr_reader :store
|
|
105
|
+
|
|
106
|
+
sig { params(store: T::Boolean).void }
|
|
107
|
+
attr_writer :store
|
|
108
|
+
|
|
109
|
+
# The resolved Live session configuration and server-assigned session metadata.
|
|
110
|
+
sig do
|
|
111
|
+
params(
|
|
112
|
+
|
|
113
|
+
id: String,
|
|
114
|
+
|
|
115
|
+
expires_at: Integer,
|
|
116
|
+
|
|
117
|
+
model: T.any(String, OpenAI::Live::SessionResource::Model::OrSymbol),
|
|
118
|
+
|
|
119
|
+
audio: OpenAI::Live::SessionResource::Audio::OrHash,
|
|
120
|
+
|
|
121
|
+
client: OpenAI::Live::ClientConfig::OrHash,
|
|
122
|
+
|
|
123
|
+
delegation: T.nilable(
|
|
124
|
+
T.any(
|
|
125
|
+
OpenAI::Live::ClientDelegation::OrHash,
|
|
126
|
+
OpenAI::Live::SessionResource::Delegation::Responses::OrHash
|
|
127
|
+
)
|
|
128
|
+
),
|
|
129
|
+
|
|
130
|
+
input: T::Array[
|
|
131
|
+
T.any(
|
|
132
|
+
OpenAI::Live::InitialItem::Developer::OrHash,
|
|
133
|
+
OpenAI::Live::InitialItem::User::OrHash,
|
|
134
|
+
OpenAI::Live::InitialItem::Assistant::OrHash
|
|
135
|
+
)
|
|
136
|
+
],
|
|
137
|
+
|
|
138
|
+
instructions: T.nilable(String),
|
|
139
|
+
|
|
140
|
+
store: T::Boolean,
|
|
141
|
+
|
|
142
|
+
status: Symbol
|
|
143
|
+
)
|
|
144
|
+
.returns(T.attached_class)
|
|
145
|
+
end
|
|
146
|
+
def self.new(
|
|
147
|
+
|
|
148
|
+
# The unique ID of the Live session. Use this ID for sideband connections,
|
|
149
|
+
# forking, and recording download.
|
|
150
|
+
id:,
|
|
151
|
+
|
|
152
|
+
# The Unix timestamp, in seconds, at which the Live session expires.
|
|
153
|
+
expires_at:,
|
|
154
|
+
|
|
155
|
+
# The Live model. Required in the session configuration for every transport; do
|
|
156
|
+
# not pass it as a URL query parameter.
|
|
157
|
+
model:,
|
|
158
|
+
|
|
159
|
+
# Startup audio configuration. Only primary WebSockets accept audio.format; WebRTC
|
|
160
|
+
# and SIP negotiate their media format. Voice and format are immutable after
|
|
161
|
+
# startup.
|
|
162
|
+
audio: nil,
|
|
163
|
+
|
|
164
|
+
# Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
|
|
165
|
+
# session. Trusted sideband connections are unaffected.
|
|
166
|
+
client: nil,
|
|
167
|
+
|
|
168
|
+
# Who handles tasks delegated by the Live model. Omitted or null selects your
|
|
169
|
+
# application; use `responses` to let the API manage a Responses backend.
|
|
170
|
+
delegation: nil,
|
|
171
|
+
|
|
172
|
+
# Ordered text-only history supplied before startup. Supports developer, user, and
|
|
173
|
+
# assistant messages with one text part each; at most 128 messages and 8,192
|
|
174
|
+
# rendered tokens in total.
|
|
175
|
+
input: nil,
|
|
176
|
+
|
|
177
|
+
# Frontend instructions for voice, conversation, interruptions, and when to
|
|
178
|
+
# delegate. Start with the
|
|
179
|
+
# [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting);
|
|
180
|
+
# put business rules and tool workflows in a separate
|
|
181
|
+
# [backend prompt](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
|
|
182
|
+
# Limited to 16,384 client-supplied tokens. Omitted or blank instructions use
|
|
183
|
+
# server defaults. Immutable after startup.
|
|
184
|
+
instructions: nil,
|
|
185
|
+
|
|
186
|
+
# Whether to store the session for later forking and recording download. Defaults
|
|
187
|
+
# to false for new sessions.
|
|
188
|
+
store: nil,
|
|
189
|
+
|
|
190
|
+
# The status of the session snapshot. Always `active`, including the final
|
|
191
|
+
# snapshot in session.closed; use the event type to determine that the session has
|
|
192
|
+
# closed.
|
|
193
|
+
|
|
194
|
+
status: :active
|
|
195
|
+
)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
sig do
|
|
199
|
+
override.returns(
|
|
200
|
+
{
|
|
201
|
+
id: String,
|
|
202
|
+
expires_at: Integer,
|
|
203
|
+
model: OpenAI::Live::SessionResource::Model::Variants,
|
|
204
|
+
status: Symbol,
|
|
205
|
+
audio: OpenAI::Live::SessionResource::Audio,
|
|
206
|
+
client: OpenAI::Live::ClientConfig,
|
|
207
|
+
delegation: T.nilable(OpenAI::Live::SessionResource::Delegation::Variants),
|
|
208
|
+
input: T::Array[
|
|
209
|
+
T.any(
|
|
210
|
+
OpenAI::Live::InitialItem::Developer,
|
|
211
|
+
OpenAI::Live::InitialItem::User,
|
|
212
|
+
OpenAI::Live::InitialItem::Assistant
|
|
213
|
+
)
|
|
214
|
+
],
|
|
215
|
+
instructions: T.nilable(String),
|
|
216
|
+
store: T::Boolean
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
end
|
|
220
|
+
def to_hash
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# The Live model. Required in the session configuration for every transport; do
|
|
224
|
+
# not pass it as a URL query parameter.
|
|
225
|
+
module Model
|
|
226
|
+
extend OpenAI::Internal::Type::Union
|
|
227
|
+
|
|
228
|
+
Variants = T.type_alias { T.any(String, OpenAI::Live::SessionResource::Model::TaggedSymbol) }
|
|
229
|
+
|
|
230
|
+
sig { override.returns(T::Array[OpenAI::Live::SessionResource::Model::Variants]) }
|
|
231
|
+
def self.variants
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
TaggedSymbol = T.type_alias do
|
|
235
|
+
T.all(Symbol, OpenAI::Live::SessionResource::Model)
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
239
|
+
|
|
240
|
+
GPT_LIVE_1 = T.let(:"gpt-live-1", OpenAI::Live::SessionResource::Model::TaggedSymbol)
|
|
241
|
+
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
class Audio < OpenAI::Internal::Type::BaseModel
|
|
245
|
+
OrHash = T.type_alias do
|
|
246
|
+
T.any(
|
|
247
|
+
OpenAI::Live::SessionResource::Audio,
|
|
248
|
+
OpenAI::Internal::AnyHash
|
|
249
|
+
)
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
# Audio encoding and sample rate for audio sent and received over a Live WebSocket
|
|
253
|
+
# connection. WebRTC and SIP negotiate their media format separately.
|
|
254
|
+
sig {
|
|
255
|
+
returns(
|
|
256
|
+
T.nilable(
|
|
257
|
+
T.any(
|
|
258
|
+
OpenAI::Live::AudioFormat::AudioPCM,
|
|
259
|
+
OpenAI::Live::AudioFormat::AudioPCMU,
|
|
260
|
+
OpenAI::Live::AudioFormat::AudioPCMA
|
|
261
|
+
)
|
|
262
|
+
)
|
|
263
|
+
)
|
|
264
|
+
}
|
|
265
|
+
attr_reader :format_
|
|
266
|
+
|
|
267
|
+
sig {
|
|
268
|
+
params(
|
|
269
|
+
format_: T.any(
|
|
270
|
+
OpenAI::Live::AudioFormat::AudioPCM::OrHash,
|
|
271
|
+
OpenAI::Live::AudioFormat::AudioPCMU::OrHash,
|
|
272
|
+
OpenAI::Live::AudioFormat::AudioPCMA::OrHash
|
|
273
|
+
)
|
|
274
|
+
)
|
|
275
|
+
.void
|
|
276
|
+
}
|
|
277
|
+
attr_writer :format_
|
|
278
|
+
|
|
279
|
+
# The voice used for speech generated by the Live model.
|
|
280
|
+
sig { returns(T.nilable(OpenAI::Live::SessionResource::Audio::Output)) }
|
|
281
|
+
attr_reader :output
|
|
282
|
+
|
|
283
|
+
sig { params(output: OpenAI::Live::SessionResource::Audio::Output::OrHash).void }
|
|
284
|
+
attr_writer :output
|
|
285
|
+
|
|
286
|
+
# Startup audio configuration. Only primary WebSockets accept audio.format; WebRTC
|
|
287
|
+
# and SIP negotiate their media format. Voice and format are immutable after
|
|
288
|
+
# startup.
|
|
289
|
+
sig do
|
|
290
|
+
params(
|
|
291
|
+
|
|
292
|
+
format_: T.any(
|
|
293
|
+
OpenAI::Live::AudioFormat::AudioPCM::OrHash,
|
|
294
|
+
OpenAI::Live::AudioFormat::AudioPCMU::OrHash,
|
|
295
|
+
OpenAI::Live::AudioFormat::AudioPCMA::OrHash
|
|
296
|
+
),
|
|
297
|
+
|
|
298
|
+
output: OpenAI::Live::SessionResource::Audio::Output::OrHash
|
|
299
|
+
)
|
|
300
|
+
.returns(T.attached_class)
|
|
301
|
+
end
|
|
302
|
+
def self.new(
|
|
303
|
+
|
|
304
|
+
# Audio encoding and sample rate for audio sent and received over a Live WebSocket
|
|
305
|
+
# connection. WebRTC and SIP negotiate their media format separately.
|
|
306
|
+
format_: nil,
|
|
307
|
+
|
|
308
|
+
# The voice used for speech generated by the Live model.
|
|
309
|
+
|
|
310
|
+
output: nil
|
|
311
|
+
)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
sig do
|
|
315
|
+
override.returns(
|
|
316
|
+
{
|
|
317
|
+
format_: T.any(
|
|
318
|
+
OpenAI::Live::AudioFormat::AudioPCM,
|
|
319
|
+
OpenAI::Live::AudioFormat::AudioPCMU,
|
|
320
|
+
OpenAI::Live::AudioFormat::AudioPCMA
|
|
321
|
+
),
|
|
322
|
+
output: OpenAI::Live::SessionResource::Audio::Output
|
|
323
|
+
}
|
|
324
|
+
)
|
|
325
|
+
end
|
|
326
|
+
def to_hash
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
class Output < OpenAI::Internal::Type::BaseModel
|
|
330
|
+
OrHash = T.type_alias do
|
|
331
|
+
T.any(
|
|
332
|
+
OpenAI::Live::SessionResource::Audio::Output,
|
|
333
|
+
OpenAI::Internal::AnyHash
|
|
334
|
+
)
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
# The voice used for Live speech, as a built-in voice name or a custom voice
|
|
338
|
+
# object containing its ID. Defaults to `marin` and cannot change after startup.
|
|
339
|
+
sig { returns(T.nilable(T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice))) }
|
|
340
|
+
attr_reader :voice
|
|
341
|
+
|
|
342
|
+
sig {
|
|
343
|
+
params(voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice::OrHash)).void
|
|
344
|
+
}
|
|
345
|
+
attr_writer :voice
|
|
346
|
+
|
|
347
|
+
# The voice used for speech generated by the Live model.
|
|
348
|
+
sig do
|
|
349
|
+
params(
|
|
350
|
+
|
|
351
|
+
voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice::OrHash)
|
|
352
|
+
)
|
|
353
|
+
.returns(T.attached_class)
|
|
354
|
+
end
|
|
355
|
+
def self.new(
|
|
356
|
+
|
|
357
|
+
# The voice used for Live speech, as a built-in voice name or a custom voice
|
|
358
|
+
# object containing its ID. Defaults to `marin` and cannot change after startup.
|
|
359
|
+
|
|
360
|
+
voice: nil
|
|
361
|
+
)
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
sig do
|
|
365
|
+
override.returns(
|
|
366
|
+
{voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice)}
|
|
367
|
+
)
|
|
368
|
+
end
|
|
369
|
+
def to_hash
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
# The voice used for Live speech, as a built-in voice name or a custom voice
|
|
373
|
+
# object containing its ID. Defaults to `marin` and cannot change after startup.
|
|
374
|
+
module Voice
|
|
375
|
+
extend OpenAI::Internal::Type::Union
|
|
376
|
+
|
|
377
|
+
Variants = T.type_alias {
|
|
378
|
+
T.any(String, OpenAI::Live::BuiltInVoice::TaggedSymbol, OpenAI::Live::CustomVoice)
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
sig { override.returns(T::Array[OpenAI::Live::SessionResource::Audio::Output::Voice::Variants]) }
|
|
382
|
+
def self.variants
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
# Who handles tasks delegated by the Live model. Omitted or null selects your
|
|
390
|
+
# application; use `responses` to let the API manage a Responses backend.
|
|
391
|
+
module Delegation
|
|
392
|
+
extend OpenAI::Internal::Type::Union
|
|
393
|
+
|
|
394
|
+
Variants = T.type_alias {
|
|
395
|
+
T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionResource::Delegation::Responses)
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
class Responses < OpenAI::Internal::Type::BaseModel
|
|
399
|
+
OrHash = T.type_alias do
|
|
400
|
+
T.any(
|
|
401
|
+
OpenAI::Live::SessionResource::Delegation::Responses,
|
|
402
|
+
OpenAI::Internal::AnyHash
|
|
403
|
+
)
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
# Backend model, prompt, and tools used when the Live session delegates a task to
|
|
407
|
+
# Responses.
|
|
408
|
+
sig { returns(OpenAI::Live::ResponsesDelegationConfig) }
|
|
409
|
+
attr_reader :responses
|
|
410
|
+
|
|
411
|
+
sig { params(responses: OpenAI::Live::ResponsesDelegationConfig::OrHash).void }
|
|
412
|
+
attr_writer :responses
|
|
413
|
+
|
|
414
|
+
# The delegation owner. Always `responses` for tasks handled by the Responses API.
|
|
415
|
+
sig { returns(Symbol) }
|
|
416
|
+
attr_accessor :type
|
|
417
|
+
|
|
418
|
+
# Delegate tasks to a Responses model managed by the Live session.
|
|
419
|
+
sig do
|
|
420
|
+
params(
|
|
421
|
+
|
|
422
|
+
responses: OpenAI::Live::ResponsesDelegationConfig::OrHash,
|
|
423
|
+
|
|
424
|
+
type: Symbol
|
|
425
|
+
)
|
|
426
|
+
.returns(T.attached_class)
|
|
427
|
+
end
|
|
428
|
+
def self.new(
|
|
429
|
+
|
|
430
|
+
# Backend model, prompt, and tools used when the Live session delegates a task to
|
|
431
|
+
# Responses.
|
|
432
|
+
responses:,
|
|
433
|
+
|
|
434
|
+
# The delegation owner. Always `responses` for tasks handled by the Responses API.
|
|
435
|
+
|
|
436
|
+
type: :responses
|
|
437
|
+
)
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
sig do
|
|
441
|
+
override.returns(
|
|
442
|
+
{responses: OpenAI::Live::ResponsesDelegationConfig, type: Symbol}
|
|
443
|
+
)
|
|
444
|
+
end
|
|
445
|
+
def to_hash
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
sig { override.returns(T::Array[OpenAI::Live::SessionResource::Delegation::Variants]) }
|
|
451
|
+
def self.variants
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
end
|
|
461
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Live
|
|
7
|
+
|
|
8
|
+
class SessionStartEvent < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
OrHash = T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
OpenAI::Live::SessionStartEvent,
|
|
13
|
+
OpenAI::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Initial configuration for a primary WebSocket. Send session.start first and wait
|
|
18
|
+
# for session.started before application commands. WebRTC creation already starts
|
|
19
|
+
# the session; do not send this event again on its data channel.
|
|
20
|
+
sig { returns(OpenAI::Live::SessionConfig) }
|
|
21
|
+
attr_reader :session
|
|
22
|
+
|
|
23
|
+
sig { params(session: OpenAI::Live::SessionConfig::OrHash).void }
|
|
24
|
+
attr_writer :session
|
|
25
|
+
|
|
26
|
+
# The Live client event type. Always `session.start`.
|
|
27
|
+
sig { returns(Symbol) }
|
|
28
|
+
attr_accessor :type
|
|
29
|
+
|
|
30
|
+
# Optional client identifier for correlating this command with a server event's
|
|
31
|
+
# client_event_id or error.client_event_id.
|
|
32
|
+
sig { returns(T.nilable(String)) }
|
|
33
|
+
attr_accessor :event_id
|
|
34
|
+
|
|
35
|
+
# Start a Live session on a primary WebSocket. Send this event before other
|
|
36
|
+
# commands and wait for `session.started`.
|
|
37
|
+
sig do
|
|
38
|
+
params(
|
|
39
|
+
|
|
40
|
+
session: OpenAI::Live::SessionConfig::OrHash,
|
|
41
|
+
|
|
42
|
+
event_id: T.nilable(String),
|
|
43
|
+
|
|
44
|
+
type: Symbol
|
|
45
|
+
)
|
|
46
|
+
.returns(T.attached_class)
|
|
47
|
+
end
|
|
48
|
+
def self.new(
|
|
49
|
+
|
|
50
|
+
# Initial configuration for a primary WebSocket. Send session.start first and wait
|
|
51
|
+
# for session.started before application commands. WebRTC creation already starts
|
|
52
|
+
# the session; do not send this event again on its data channel.
|
|
53
|
+
session:,
|
|
54
|
+
|
|
55
|
+
# Optional client identifier for correlating this command with a server event's
|
|
56
|
+
# client_event_id or error.client_event_id.
|
|
57
|
+
event_id: nil,
|
|
58
|
+
|
|
59
|
+
# The Live client event type. Always `session.start`.
|
|
60
|
+
|
|
61
|
+
type: :"session.start"
|
|
62
|
+
)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
sig do
|
|
66
|
+
override.returns(
|
|
67
|
+
{session: OpenAI::Live::SessionConfig, type: Symbol, event_id: T.nilable(String)}
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
def to_hash
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Live
|
|
7
|
+
|
|
8
|
+
class SessionStartedEvent < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
OrHash = T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
OpenAI::Live::SessionStartedEvent,
|
|
13
|
+
OpenAI::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The unique ID of the Live server event.
|
|
18
|
+
sig { returns(String) }
|
|
19
|
+
attr_accessor :event_id
|
|
20
|
+
|
|
21
|
+
# The resolved Live session configuration and server-assigned session metadata.
|
|
22
|
+
sig { returns(OpenAI::Live::SessionResource) }
|
|
23
|
+
attr_reader :session
|
|
24
|
+
|
|
25
|
+
sig { params(session: OpenAI::Live::SessionResource::OrHash).void }
|
|
26
|
+
attr_writer :session
|
|
27
|
+
|
|
28
|
+
# The event type, always `session.started`.
|
|
29
|
+
sig { returns(Symbol) }
|
|
30
|
+
attr_accessor :type
|
|
31
|
+
|
|
32
|
+
# The event_id of the client command associated with this server event, when
|
|
33
|
+
# supplied.
|
|
34
|
+
sig { returns(T.nilable(String)) }
|
|
35
|
+
attr_reader :client_event_id
|
|
36
|
+
|
|
37
|
+
sig { params(client_event_id: String).void }
|
|
38
|
+
attr_writer :client_event_id
|
|
39
|
+
|
|
40
|
+
# Returned when a Live session has started. Contains the resolved session
|
|
41
|
+
# configuration, including server defaults.
|
|
42
|
+
sig do
|
|
43
|
+
params(
|
|
44
|
+
|
|
45
|
+
event_id: String,
|
|
46
|
+
|
|
47
|
+
session: OpenAI::Live::SessionResource::OrHash,
|
|
48
|
+
|
|
49
|
+
client_event_id: String,
|
|
50
|
+
|
|
51
|
+
type: Symbol
|
|
52
|
+
)
|
|
53
|
+
.returns(T.attached_class)
|
|
54
|
+
end
|
|
55
|
+
def self.new(
|
|
56
|
+
|
|
57
|
+
# The unique ID of the Live server event.
|
|
58
|
+
event_id:,
|
|
59
|
+
|
|
60
|
+
# The resolved Live session configuration and server-assigned session metadata.
|
|
61
|
+
session:,
|
|
62
|
+
|
|
63
|
+
# The event_id of the client command associated with this server event, when
|
|
64
|
+
# supplied.
|
|
65
|
+
client_event_id: nil,
|
|
66
|
+
|
|
67
|
+
# The event type, always `session.started`.
|
|
68
|
+
|
|
69
|
+
type: :"session.started"
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
sig do
|
|
74
|
+
override.returns(
|
|
75
|
+
{event_id: String, session: OpenAI::Live::SessionResource, type: Symbol, client_event_id: T.nilable(String)}
|
|
76
|
+
)
|
|
77
|
+
end
|
|
78
|
+
def to_hash
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
end
|