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,121 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Live
|
|
7
|
+
|
|
8
|
+
class LiveCreateParams < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
extend OpenAI::Internal::Type::RequestParameters::Converter
|
|
11
|
+
include OpenAI::Internal::Type::RequestParameters
|
|
12
|
+
|
|
13
|
+
OrHash = T.type_alias do
|
|
14
|
+
T.any(
|
|
15
|
+
OpenAI::Live::LiveCreateParams,
|
|
16
|
+
OpenAI::Internal::AnyHash
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Startup configuration for the Live session.
|
|
21
|
+
sig { returns(OpenAI::Live::MediaSessionConfig) }
|
|
22
|
+
attr_reader :session
|
|
23
|
+
|
|
24
|
+
sig { params(session: OpenAI::Live::MediaSessionConfig::OrHash).void }
|
|
25
|
+
attr_writer :session
|
|
26
|
+
|
|
27
|
+
# WebRTC transport with the browser's SDP offer.
|
|
28
|
+
sig { returns(OpenAI::Live::LiveCreateParams::Transport) }
|
|
29
|
+
attr_reader :transport
|
|
30
|
+
|
|
31
|
+
sig { params(transport: OpenAI::Live::LiveCreateParams::Transport::OrHash).void }
|
|
32
|
+
attr_writer :transport
|
|
33
|
+
|
|
34
|
+
sig do
|
|
35
|
+
params(
|
|
36
|
+
|
|
37
|
+
session: OpenAI::Live::MediaSessionConfig::OrHash,
|
|
38
|
+
|
|
39
|
+
transport: OpenAI::Live::LiveCreateParams::Transport::OrHash,
|
|
40
|
+
|
|
41
|
+
request_options: OpenAI::RequestOptions::OrHash
|
|
42
|
+
)
|
|
43
|
+
.returns(T.attached_class)
|
|
44
|
+
end
|
|
45
|
+
def self.new(
|
|
46
|
+
|
|
47
|
+
# Startup configuration for the Live session.
|
|
48
|
+
session:,
|
|
49
|
+
|
|
50
|
+
# WebRTC transport with the browser's SDP offer.
|
|
51
|
+
transport:,
|
|
52
|
+
|
|
53
|
+
request_options: {}
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
sig do
|
|
58
|
+
override.returns(
|
|
59
|
+
{
|
|
60
|
+
session: OpenAI::Live::MediaSessionConfig,
|
|
61
|
+
transport: OpenAI::Live::LiveCreateParams::Transport,
|
|
62
|
+
request_options: OpenAI::RequestOptions
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
def to_hash
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
class Transport < OpenAI::Internal::Type::BaseModel
|
|
70
|
+
OrHash = T.type_alias do
|
|
71
|
+
T.any(
|
|
72
|
+
OpenAI::Live::LiveCreateParams::Transport,
|
|
73
|
+
OpenAI::Internal::AnyHash
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Session Description Protocol message for the WebRTC connection.
|
|
78
|
+
sig { returns(String) }
|
|
79
|
+
attr_accessor :sdp
|
|
80
|
+
|
|
81
|
+
# The transport used for the Live session. Always `webrtc`.
|
|
82
|
+
sig { returns(Symbol) }
|
|
83
|
+
attr_accessor :type
|
|
84
|
+
|
|
85
|
+
# WebRTC transport with the browser's SDP offer.
|
|
86
|
+
sig do
|
|
87
|
+
params(
|
|
88
|
+
|
|
89
|
+
sdp: String,
|
|
90
|
+
|
|
91
|
+
type: Symbol
|
|
92
|
+
)
|
|
93
|
+
.returns(T.attached_class)
|
|
94
|
+
end
|
|
95
|
+
def self.new(
|
|
96
|
+
|
|
97
|
+
# Session Description Protocol message for the WebRTC connection.
|
|
98
|
+
sdp:,
|
|
99
|
+
|
|
100
|
+
# The transport used for the Live session. Always `webrtc`.
|
|
101
|
+
|
|
102
|
+
type: :webrtc
|
|
103
|
+
)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
sig do
|
|
107
|
+
override.returns(
|
|
108
|
+
{sdp: String, type: Symbol}
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
def to_hash
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Live
|
|
7
|
+
|
|
8
|
+
class LiveCreateResponse < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
OrHash = T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
OpenAI::Models::Live::LiveCreateResponse,
|
|
13
|
+
OpenAI::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The newly created Live session. Use its ID for session controls and sideband
|
|
18
|
+
# connections.
|
|
19
|
+
sig { returns(OpenAI::Models::Live::LiveCreateResponse::Session) }
|
|
20
|
+
attr_reader :session
|
|
21
|
+
|
|
22
|
+
sig { params(session: OpenAI::Models::Live::LiveCreateResponse::Session::OrHash).void }
|
|
23
|
+
attr_writer :session
|
|
24
|
+
|
|
25
|
+
# WebRTC transport with the SDP answer.
|
|
26
|
+
sig { returns(OpenAI::Models::Live::LiveCreateResponse::Transport) }
|
|
27
|
+
attr_reader :transport
|
|
28
|
+
|
|
29
|
+
sig { params(transport: OpenAI::Models::Live::LiveCreateResponse::Transport::OrHash).void }
|
|
30
|
+
attr_writer :transport
|
|
31
|
+
|
|
32
|
+
# The created Live session identifier and WebRTC answer. Apply transport.sdp as
|
|
33
|
+
# the peer's remote answer and wait for session.started on the data channel before
|
|
34
|
+
# sending commands.
|
|
35
|
+
sig do
|
|
36
|
+
params(
|
|
37
|
+
|
|
38
|
+
session: OpenAI::Models::Live::LiveCreateResponse::Session::OrHash,
|
|
39
|
+
|
|
40
|
+
transport: OpenAI::Models::Live::LiveCreateResponse::Transport::OrHash
|
|
41
|
+
)
|
|
42
|
+
.returns(T.attached_class)
|
|
43
|
+
end
|
|
44
|
+
def self.new(
|
|
45
|
+
|
|
46
|
+
# The newly created Live session. Use its ID for session controls and sideband
|
|
47
|
+
# connections.
|
|
48
|
+
session:,
|
|
49
|
+
|
|
50
|
+
# WebRTC transport with the SDP answer.
|
|
51
|
+
|
|
52
|
+
transport:
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
sig do
|
|
57
|
+
override.returns(
|
|
58
|
+
{
|
|
59
|
+
session: OpenAI::Models::Live::LiveCreateResponse::Session,
|
|
60
|
+
transport: OpenAI::Models::Live::LiveCreateResponse::Transport
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
end
|
|
64
|
+
def to_hash
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
class Session < OpenAI::Internal::Type::BaseModel
|
|
68
|
+
OrHash = T.type_alias do
|
|
69
|
+
T.any(
|
|
70
|
+
OpenAI::Models::Live::LiveCreateResponse::Session,
|
|
71
|
+
OpenAI::Internal::AnyHash
|
|
72
|
+
)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Opaque session identifier. Preserve the returned value unchanged, including its
|
|
76
|
+
# prefix.
|
|
77
|
+
sig { returns(String) }
|
|
78
|
+
attr_accessor :id
|
|
79
|
+
|
|
80
|
+
# The newly created Live session. Use its ID for session controls and sideband
|
|
81
|
+
# connections.
|
|
82
|
+
sig do
|
|
83
|
+
params(
|
|
84
|
+
|
|
85
|
+
id: String
|
|
86
|
+
)
|
|
87
|
+
.returns(T.attached_class)
|
|
88
|
+
end
|
|
89
|
+
def self.new(
|
|
90
|
+
|
|
91
|
+
# Opaque session identifier. Preserve the returned value unchanged, including its
|
|
92
|
+
# prefix.
|
|
93
|
+
|
|
94
|
+
id:
|
|
95
|
+
)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
sig do
|
|
99
|
+
override.returns(
|
|
100
|
+
{id: String}
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
def to_hash
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
class Transport < OpenAI::Internal::Type::BaseModel
|
|
109
|
+
OrHash = T.type_alias do
|
|
110
|
+
T.any(
|
|
111
|
+
OpenAI::Models::Live::LiveCreateResponse::Transport,
|
|
112
|
+
OpenAI::Internal::AnyHash
|
|
113
|
+
)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Session Description Protocol message for the WebRTC connection.
|
|
117
|
+
sig { returns(String) }
|
|
118
|
+
attr_accessor :sdp
|
|
119
|
+
|
|
120
|
+
# The transport used for the Live session. Always `webrtc`.
|
|
121
|
+
sig { returns(Symbol) }
|
|
122
|
+
attr_accessor :type
|
|
123
|
+
|
|
124
|
+
# WebRTC transport with the SDP answer.
|
|
125
|
+
sig do
|
|
126
|
+
params(
|
|
127
|
+
|
|
128
|
+
sdp: String,
|
|
129
|
+
|
|
130
|
+
type: Symbol
|
|
131
|
+
)
|
|
132
|
+
.returns(T.attached_class)
|
|
133
|
+
end
|
|
134
|
+
def self.new(
|
|
135
|
+
|
|
136
|
+
# Session Description Protocol message for the WebRTC connection.
|
|
137
|
+
sdp:,
|
|
138
|
+
|
|
139
|
+
# The transport used for the Live session. Always `webrtc`.
|
|
140
|
+
|
|
141
|
+
type: :webrtc
|
|
142
|
+
)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
sig do
|
|
146
|
+
override.returns(
|
|
147
|
+
{sdp: String, type: Symbol}
|
|
148
|
+
)
|
|
149
|
+
end
|
|
150
|
+
def to_hash
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Live
|
|
7
|
+
|
|
8
|
+
class MediaSessionConfig < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
OrHash = T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
OpenAI::Live::MediaSessionConfig,
|
|
13
|
+
OpenAI::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The Live model. Required in the session configuration for every transport; do
|
|
18
|
+
# not pass it as a URL query parameter.
|
|
19
|
+
sig { returns(T.any(String, OpenAI::Live::MediaSessionConfig::Model::OrSymbol)) }
|
|
20
|
+
attr_accessor :model
|
|
21
|
+
|
|
22
|
+
# Startup audio configuration. WebRTC and SIP negotiate their audio format on the
|
|
23
|
+
# media transport.
|
|
24
|
+
sig { returns(T.nilable(OpenAI::Live::MediaSessionConfig::Audio)) }
|
|
25
|
+
attr_reader :audio
|
|
26
|
+
|
|
27
|
+
sig { params(audio: OpenAI::Live::MediaSessionConfig::Audio::OrHash).void }
|
|
28
|
+
attr_writer :audio
|
|
29
|
+
|
|
30
|
+
# Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
|
|
31
|
+
# session. Trusted sideband connections are unaffected.
|
|
32
|
+
sig { returns(T.nilable(OpenAI::Live::ClientConfig)) }
|
|
33
|
+
attr_reader :client
|
|
34
|
+
|
|
35
|
+
sig { params(client: OpenAI::Live::ClientConfig::OrHash).void }
|
|
36
|
+
attr_writer :client
|
|
37
|
+
|
|
38
|
+
# Who handles tasks delegated by the Live model. Omitted or null selects your
|
|
39
|
+
# application; use `responses` to let the API manage a Responses backend.
|
|
40
|
+
sig {
|
|
41
|
+
returns(
|
|
42
|
+
T.nilable(T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::MediaSessionConfig::Delegation::Responses))
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
attr_accessor :delegation
|
|
46
|
+
|
|
47
|
+
# Ordered text-only history supplied before startup. Supports developer, user, and
|
|
48
|
+
# assistant messages with one text part each; at most 128 messages and 8,192
|
|
49
|
+
# rendered tokens in total.
|
|
50
|
+
sig {
|
|
51
|
+
returns(
|
|
52
|
+
T.nilable(
|
|
53
|
+
T::Array[
|
|
54
|
+
T.any(
|
|
55
|
+
OpenAI::Live::InitialItem::Developer,
|
|
56
|
+
OpenAI::Live::InitialItem::User,
|
|
57
|
+
OpenAI::Live::InitialItem::Assistant
|
|
58
|
+
)
|
|
59
|
+
]
|
|
60
|
+
)
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
attr_reader :input
|
|
64
|
+
|
|
65
|
+
sig {
|
|
66
|
+
params(
|
|
67
|
+
input: T::Array[
|
|
68
|
+
T.any(
|
|
69
|
+
OpenAI::Live::InitialItem::Developer::OrHash,
|
|
70
|
+
OpenAI::Live::InitialItem::User::OrHash,
|
|
71
|
+
OpenAI::Live::InitialItem::Assistant::OrHash
|
|
72
|
+
)
|
|
73
|
+
]
|
|
74
|
+
)
|
|
75
|
+
.void
|
|
76
|
+
}
|
|
77
|
+
attr_writer :input
|
|
78
|
+
|
|
79
|
+
# Frontend instructions for voice, conversation, interruptions, and when to
|
|
80
|
+
# delegate. Start with the
|
|
81
|
+
# [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting);
|
|
82
|
+
# put business rules and tool workflows in a separate
|
|
83
|
+
# [backend prompt](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
|
|
84
|
+
# Limited to 16,384 client-supplied tokens. Omitted or blank instructions use
|
|
85
|
+
# server defaults. Immutable after startup.
|
|
86
|
+
sig { returns(T.nilable(String)) }
|
|
87
|
+
attr_accessor :instructions
|
|
88
|
+
|
|
89
|
+
# Whether to store the session for later forking and recording download. Defaults
|
|
90
|
+
# to false for new sessions.
|
|
91
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
92
|
+
attr_reader :store
|
|
93
|
+
|
|
94
|
+
sig { params(store: T::Boolean).void }
|
|
95
|
+
attr_writer :store
|
|
96
|
+
|
|
97
|
+
# Startup configuration for a Live media session. Follow the
|
|
98
|
+
# [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting)
|
|
99
|
+
# when writing frontend instructions and the backend prompt under
|
|
100
|
+
# delegation.responses.instructions.
|
|
101
|
+
sig do
|
|
102
|
+
params(
|
|
103
|
+
|
|
104
|
+
model: T.any(String, OpenAI::Live::MediaSessionConfig::Model::OrSymbol),
|
|
105
|
+
|
|
106
|
+
audio: OpenAI::Live::MediaSessionConfig::Audio::OrHash,
|
|
107
|
+
|
|
108
|
+
client: OpenAI::Live::ClientConfig::OrHash,
|
|
109
|
+
|
|
110
|
+
delegation: T.nilable(
|
|
111
|
+
T.any(
|
|
112
|
+
OpenAI::Live::ClientDelegation::OrHash,
|
|
113
|
+
OpenAI::Live::MediaSessionConfig::Delegation::Responses::OrHash
|
|
114
|
+
)
|
|
115
|
+
),
|
|
116
|
+
|
|
117
|
+
input: T::Array[
|
|
118
|
+
T.any(
|
|
119
|
+
OpenAI::Live::InitialItem::Developer::OrHash,
|
|
120
|
+
OpenAI::Live::InitialItem::User::OrHash,
|
|
121
|
+
OpenAI::Live::InitialItem::Assistant::OrHash
|
|
122
|
+
)
|
|
123
|
+
],
|
|
124
|
+
|
|
125
|
+
instructions: T.nilable(String),
|
|
126
|
+
|
|
127
|
+
store: T::Boolean
|
|
128
|
+
)
|
|
129
|
+
.returns(T.attached_class)
|
|
130
|
+
end
|
|
131
|
+
def self.new(
|
|
132
|
+
|
|
133
|
+
# The Live model. Required in the session configuration for every transport; do
|
|
134
|
+
# not pass it as a URL query parameter.
|
|
135
|
+
model:,
|
|
136
|
+
|
|
137
|
+
# Startup audio configuration. WebRTC and SIP negotiate their audio format on the
|
|
138
|
+
# media transport.
|
|
139
|
+
audio: nil,
|
|
140
|
+
|
|
141
|
+
# Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
|
|
142
|
+
# session. Trusted sideband connections are unaffected.
|
|
143
|
+
client: nil,
|
|
144
|
+
|
|
145
|
+
# Who handles tasks delegated by the Live model. Omitted or null selects your
|
|
146
|
+
# application; use `responses` to let the API manage a Responses backend.
|
|
147
|
+
delegation: nil,
|
|
148
|
+
|
|
149
|
+
# Ordered text-only history supplied before startup. Supports developer, user, and
|
|
150
|
+
# assistant messages with one text part each; at most 128 messages and 8,192
|
|
151
|
+
# rendered tokens in total.
|
|
152
|
+
input: nil,
|
|
153
|
+
|
|
154
|
+
# Frontend instructions for voice, conversation, interruptions, and when to
|
|
155
|
+
# delegate. Start with the
|
|
156
|
+
# [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting);
|
|
157
|
+
# put business rules and tool workflows in a separate
|
|
158
|
+
# [backend prompt](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
|
|
159
|
+
# Limited to 16,384 client-supplied tokens. Omitted or blank instructions use
|
|
160
|
+
# server defaults. Immutable after startup.
|
|
161
|
+
instructions: nil,
|
|
162
|
+
|
|
163
|
+
# Whether to store the session for later forking and recording download. Defaults
|
|
164
|
+
# to false for new sessions.
|
|
165
|
+
|
|
166
|
+
store: nil
|
|
167
|
+
)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
sig do
|
|
171
|
+
override.returns(
|
|
172
|
+
{
|
|
173
|
+
model: T.any(String, OpenAI::Live::MediaSessionConfig::Model::OrSymbol),
|
|
174
|
+
audio: OpenAI::Live::MediaSessionConfig::Audio,
|
|
175
|
+
client: OpenAI::Live::ClientConfig,
|
|
176
|
+
delegation: T.nilable(
|
|
177
|
+
T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::MediaSessionConfig::Delegation::Responses)
|
|
178
|
+
),
|
|
179
|
+
input: T::Array[
|
|
180
|
+
T.any(
|
|
181
|
+
OpenAI::Live::InitialItem::Developer,
|
|
182
|
+
OpenAI::Live::InitialItem::User,
|
|
183
|
+
OpenAI::Live::InitialItem::Assistant
|
|
184
|
+
)
|
|
185
|
+
],
|
|
186
|
+
instructions: T.nilable(String),
|
|
187
|
+
store: T::Boolean
|
|
188
|
+
}
|
|
189
|
+
)
|
|
190
|
+
end
|
|
191
|
+
def to_hash
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
# The Live model. Required in the session configuration for every transport; do
|
|
195
|
+
# not pass it as a URL query parameter.
|
|
196
|
+
module Model
|
|
197
|
+
extend OpenAI::Internal::Type::Union
|
|
198
|
+
|
|
199
|
+
Variants = T.type_alias { T.any(String, OpenAI::Live::MediaSessionConfig::Model::TaggedSymbol) }
|
|
200
|
+
|
|
201
|
+
sig { override.returns(T::Array[OpenAI::Live::MediaSessionConfig::Model::Variants]) }
|
|
202
|
+
def self.variants
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
TaggedSymbol = T.type_alias do
|
|
206
|
+
T.all(Symbol, OpenAI::Live::MediaSessionConfig::Model)
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
210
|
+
|
|
211
|
+
GPT_LIVE_1 = T.let(:"gpt-live-1", OpenAI::Live::MediaSessionConfig::Model::TaggedSymbol)
|
|
212
|
+
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
class Audio < OpenAI::Internal::Type::BaseModel
|
|
216
|
+
OrHash = T.type_alias do
|
|
217
|
+
T.any(
|
|
218
|
+
OpenAI::Live::MediaSessionConfig::Audio,
|
|
219
|
+
OpenAI::Internal::AnyHash
|
|
220
|
+
)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# Settings for speech generated by the Live model. Choose the voice before
|
|
224
|
+
# starting the session.
|
|
225
|
+
sig { returns(T.nilable(OpenAI::Live::MediaSessionConfig::Audio::Output)) }
|
|
226
|
+
attr_reader :output
|
|
227
|
+
|
|
228
|
+
sig { params(output: OpenAI::Live::MediaSessionConfig::Audio::Output::OrHash).void }
|
|
229
|
+
attr_writer :output
|
|
230
|
+
|
|
231
|
+
# Startup audio configuration. WebRTC and SIP negotiate their audio format on the
|
|
232
|
+
# media transport.
|
|
233
|
+
sig do
|
|
234
|
+
params(
|
|
235
|
+
|
|
236
|
+
output: OpenAI::Live::MediaSessionConfig::Audio::Output::OrHash
|
|
237
|
+
)
|
|
238
|
+
.returns(T.attached_class)
|
|
239
|
+
end
|
|
240
|
+
def self.new(
|
|
241
|
+
|
|
242
|
+
# Settings for speech generated by the Live model. Choose the voice before
|
|
243
|
+
# starting the session.
|
|
244
|
+
|
|
245
|
+
output: nil
|
|
246
|
+
)
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
sig do
|
|
250
|
+
override.returns(
|
|
251
|
+
{output: OpenAI::Live::MediaSessionConfig::Audio::Output}
|
|
252
|
+
)
|
|
253
|
+
end
|
|
254
|
+
def to_hash
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
class Output < OpenAI::Internal::Type::BaseModel
|
|
258
|
+
OrHash = T.type_alias do
|
|
259
|
+
T.any(
|
|
260
|
+
OpenAI::Live::MediaSessionConfig::Audio::Output,
|
|
261
|
+
OpenAI::Internal::AnyHash
|
|
262
|
+
)
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
# The voice used for Live speech, as a built-in voice name or a custom voice
|
|
266
|
+
# object containing its ID. Defaults to `marin` and cannot change after startup.
|
|
267
|
+
sig { returns(T.nilable(T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice))) }
|
|
268
|
+
attr_reader :voice
|
|
269
|
+
|
|
270
|
+
sig {
|
|
271
|
+
params(voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice::OrHash)).void
|
|
272
|
+
}
|
|
273
|
+
attr_writer :voice
|
|
274
|
+
|
|
275
|
+
# Settings for speech generated by the Live model. Choose the voice before
|
|
276
|
+
# starting the session.
|
|
277
|
+
sig do
|
|
278
|
+
params(
|
|
279
|
+
|
|
280
|
+
voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice::OrHash)
|
|
281
|
+
)
|
|
282
|
+
.returns(T.attached_class)
|
|
283
|
+
end
|
|
284
|
+
def self.new(
|
|
285
|
+
|
|
286
|
+
# The voice used for Live speech, as a built-in voice name or a custom voice
|
|
287
|
+
# object containing its ID. Defaults to `marin` and cannot change after startup.
|
|
288
|
+
|
|
289
|
+
voice: nil
|
|
290
|
+
)
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
sig do
|
|
294
|
+
override.returns(
|
|
295
|
+
{voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice)}
|
|
296
|
+
)
|
|
297
|
+
end
|
|
298
|
+
def to_hash
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
# The voice used for Live speech, as a built-in voice name or a custom voice
|
|
302
|
+
# object containing its ID. Defaults to `marin` and cannot change after startup.
|
|
303
|
+
module Voice
|
|
304
|
+
extend OpenAI::Internal::Type::Union
|
|
305
|
+
|
|
306
|
+
Variants = T.type_alias {
|
|
307
|
+
T.any(String, OpenAI::Live::BuiltInVoice::TaggedSymbol, OpenAI::Live::CustomVoice)
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
sig { override.returns(T::Array[OpenAI::Live::MediaSessionConfig::Audio::Output::Voice::Variants]) }
|
|
311
|
+
def self.variants
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# Who handles tasks delegated by the Live model. Omitted or null selects your
|
|
319
|
+
# application; use `responses` to let the API manage a Responses backend.
|
|
320
|
+
module Delegation
|
|
321
|
+
extend OpenAI::Internal::Type::Union
|
|
322
|
+
|
|
323
|
+
Variants = T.type_alias {
|
|
324
|
+
T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::MediaSessionConfig::Delegation::Responses)
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
class Responses < OpenAI::Internal::Type::BaseModel
|
|
328
|
+
OrHash = T.type_alias do
|
|
329
|
+
T.any(
|
|
330
|
+
OpenAI::Live::MediaSessionConfig::Delegation::Responses,
|
|
331
|
+
OpenAI::Internal::AnyHash
|
|
332
|
+
)
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
# Backend model, prompt, and tools used when the Live session delegates a task to
|
|
336
|
+
# Responses.
|
|
337
|
+
sig { returns(OpenAI::Live::ResponsesDelegationConfig) }
|
|
338
|
+
attr_reader :responses
|
|
339
|
+
|
|
340
|
+
sig { params(responses: OpenAI::Live::ResponsesDelegationConfig::OrHash).void }
|
|
341
|
+
attr_writer :responses
|
|
342
|
+
|
|
343
|
+
# The delegation owner. Always `responses` for tasks handled by the Responses API.
|
|
344
|
+
sig { returns(Symbol) }
|
|
345
|
+
attr_accessor :type
|
|
346
|
+
|
|
347
|
+
# Delegate tasks to a Responses model managed by the Live session.
|
|
348
|
+
sig do
|
|
349
|
+
params(
|
|
350
|
+
|
|
351
|
+
responses: OpenAI::Live::ResponsesDelegationConfig::OrHash,
|
|
352
|
+
|
|
353
|
+
type: Symbol
|
|
354
|
+
)
|
|
355
|
+
.returns(T.attached_class)
|
|
356
|
+
end
|
|
357
|
+
def self.new(
|
|
358
|
+
|
|
359
|
+
# Backend model, prompt, and tools used when the Live session delegates a task to
|
|
360
|
+
# Responses.
|
|
361
|
+
responses:,
|
|
362
|
+
|
|
363
|
+
# The delegation owner. Always `responses` for tasks handled by the Responses API.
|
|
364
|
+
|
|
365
|
+
type: :responses
|
|
366
|
+
)
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
sig do
|
|
370
|
+
override.returns(
|
|
371
|
+
{responses: OpenAI::Live::ResponsesDelegationConfig, type: Symbol}
|
|
372
|
+
)
|
|
373
|
+
end
|
|
374
|
+
def to_hash
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
sig { override.returns(T::Array[OpenAI::Live::MediaSessionConfig::Delegation::Variants]) }
|
|
380
|
+
def self.variants
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
end
|
|
390
|
+
end
|