openai 0.105.0 → 0.107.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 +67 -0
- data/README.md +1 -1
- data/lib/openai/helpers/live/websocket.rb +12 -141
- data/lib/openai/helpers/local_audio/process.rb +13 -3
- data/lib/openai/helpers/models/embedding.rb +42 -0
- data/lib/openai/helpers/realtime/connection.rb +22 -5
- data/lib/openai/helpers/realtime/recovery.rb +11 -5
- data/lib/openai/helpers/realtime/translation.rb +37 -169
- data/lib/openai/helpers/realtime/unknown_server_event.rb +5 -12
- data/lib/openai/helpers/responses_websocket/connection.rb +56 -35
- data/lib/openai/helpers/responses_websocket/unknown_server_event.rb +2 -14
- data/lib/openai/helpers/websocket/async_websocket_transport.rb +8 -6
- data/lib/openai/helpers/websocket/client_request.rb +1 -1
- data/lib/openai/helpers/websocket/connection.rb +21 -10
- data/lib/openai/helpers/websocket/connection_manager.rb +2 -1
- data/lib/openai/helpers/websocket/protocol.rb +160 -0
- data/lib/openai/helpers/websocket/typed_connection.rb +22 -16
- data/lib/openai/helpers/websocket/typed_resource.rb +15 -0
- data/lib/openai/internal/transport/base_client.rb +1 -1
- data/lib/openai/models/admin/organization/external_storage_configuration.rb +1 -0
- data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_completions_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_costs_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_decisions_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_embeddings_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_images_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_moderations_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +12 -1
- data/lib/openai/models/admin/organization/usage_web_search_calls_response.rb +12 -1
- data/lib/openai/models/beta/agent_create_params.rb +3 -0
- data/lib/openai/models/beta/agent_update_params.rb +3 -0
- data/lib/openai/models/beta/agents/session_create_params.rb +3 -0
- data/lib/openai/models/beta/agents/session_update_params.rb +3 -0
- data/lib/openai/models/beta/assistant_update_params.rb +12 -0
- data/lib/openai/models/beta/beta_response.rb +12 -0
- data/lib/openai/models/beta/beta_response_input_item.rb +10 -1
- data/lib/openai/models/beta/beta_responses_client_event.rb +12 -0
- data/lib/openai/models/beta/response_compact_params.rb +12 -0
- data/lib/openai/models/beta/response_create_params.rb +12 -0
- data/lib/openai/models/chat_model.rb +12 -0
- data/lib/openai/models/decision_create_params.rb +112 -1
- data/lib/openai/models/decision_input_image.rb +14 -1
- data/lib/openai/models/decision_input_text.rb +15 -1
- data/lib/openai/models/decision_prompt_cache_breakpoint.rb +21 -0
- data/lib/openai/models/live/sideband_server_event.rb +243 -3
- data/lib/openai/models/responses/response_compact_params.rb +12 -0
- data/lib/openai/models/responses/response_input_item.rb +10 -1
- data/lib/openai/models.rb +2 -0
- data/lib/openai/resources/beta/responses.rb +19 -0
- data/lib/openai/resources/decisions.rb +15 -1
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +2 -0
- data/rbi/openai/client.rbi +1 -8
- data/rbi/openai/helpers/realtime/translation.rbi +0 -5
- data/rbi/openai/helpers/realtime/unknown_server_event.rbi +6 -0
- data/rbi/openai/helpers/websocket.rbi +44 -6
- data/rbi/openai/internal/transport/base_client.rbi +2 -6
- data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +1 -0
- data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_completions_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_costs_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_images_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +12 -0
- data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +12 -0
- data/rbi/openai/models/beta/agent_create_params.rbi +3 -0
- data/rbi/openai/models/beta/agent_update_params.rbi +3 -0
- data/rbi/openai/models/beta/agents/session_create_params.rbi +3 -0
- data/rbi/openai/models/beta/agents/session_update_params.rbi +3 -0
- data/rbi/openai/models/beta/beta_response_input_item.rbi +14 -1
- data/rbi/openai/models/decision_create_params.rbi +146 -0
- data/rbi/openai/models/decision_input_image.rbi +22 -1
- data/rbi/openai/models/decision_input_text.rbi +21 -1
- data/rbi/openai/models/decision_prompt_cache_breakpoint.rbi +48 -0
- data/rbi/openai/models/live/output_audio_delta_event.rbi +1 -1
- data/rbi/openai/models/live/sideband_server_event.rbi +406 -3
- data/rbi/openai/models/responses/response_input_item.rbi +10 -1
- data/rbi/openai/models.rbi +2 -0
- data/rbi/openai/resources/beta/responses.rbi +17 -0
- data/rbi/openai/resources/decisions.rbi +14 -0
- data/realtime.md +22 -3
- data/sig/openai/client.rbs +1 -1
- data/sig/openai/helpers/realtime/translation.rbs +0 -2
- data/sig/openai/helpers/realtime/unknown_server_event.rbs +2 -0
- data/sig/openai/helpers/websocket.rbs +23 -6
- data/sig/openai/models/admin/organization/external_storage_configuration.rbs +2 -1
- data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_completions_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_costs_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_decisions_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_images_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_moderations_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +10 -0
- data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +10 -0
- data/sig/openai/models/beta/agent_create_params.rbs +5 -1
- data/sig/openai/models/beta/agent_update_params.rbs +5 -1
- data/sig/openai/models/beta/agents/session_create_params.rbs +5 -1
- data/sig/openai/models/beta/agents/session_update_params.rbs +5 -1
- data/sig/openai/models/beta/beta_response_input_item.rbs +8 -0
- data/sig/openai/models/decision_create_params.rbs +106 -0
- data/sig/openai/models/decision_input_image.rbs +18 -2
- data/sig/openai/models/decision_input_text.rbs +29 -3
- data/sig/openai/models/decision_prompt_cache_breakpoint.rbs +16 -0
- data/sig/openai/models/live/sideband_server_event.rbs +225 -0
- data/sig/openai/models/responses/response_input_item.rbs +8 -3
- data/sig/openai/models.rbs +2 -0
- data/sig/openai/resources/beta/responses.rbs +7 -0
- data/sig/openai/resources/decisions.rbs +3 -0
- metadata +6 -1
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
module OpenAI
|
|
4
4
|
module Models
|
|
5
5
|
module Live
|
|
6
|
-
# Server events received by an attached Live sideband WebSocket
|
|
7
|
-
#
|
|
6
|
+
# Server events received by an attached Live sideband WebSocket, including
|
|
7
|
+
# reflected input and output audio and transport notifications.
|
|
8
8
|
module SidebandServerEvent
|
|
9
9
|
extend OpenAI::Internal::Type::Union
|
|
10
10
|
|
|
@@ -70,8 +70,248 @@ module OpenAI
|
|
|
70
70
|
# An informational notice about the Live session, such as the event permissions applied to a frontend data channel.
|
|
71
71
|
variant :info, -> { OpenAI::Live::InfoEvent }
|
|
72
72
|
|
|
73
|
+
# Input audio received from the primary transport and reflected to a Live sideband connection before model-input muting.
|
|
74
|
+
variant :"session.input_audio.append", -> { OpenAI::Live::SidebandServerEvent::SessionInputAudioAppend }
|
|
75
|
+
|
|
76
|
+
# An audio chunk generated by the Live model. Decode and play primary WebSocket chunks in delivery order using the configured session audio format. Sideband connections receive reflected output audio with timestamps.
|
|
77
|
+
variant :"session.output_audio.delta", -> { OpenAI::Live::OutputAudioDeltaEvent }
|
|
78
|
+
|
|
79
|
+
# A SIP DTMF keypress received from the caller. Delivered only to sideband observers.
|
|
80
|
+
variant :"transport.dtmf.received", -> { OpenAI::Live::SidebandServerEvent::TransportDtmfReceived }
|
|
81
|
+
|
|
82
|
+
# A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to sideband observers; this is not a client command.
|
|
83
|
+
variant :"transport.dtmf.send", -> { OpenAI::Live::SidebandServerEvent::TransportDtmfSend }
|
|
84
|
+
|
|
85
|
+
# The outbound SIP provider leg is ringing or providing early media. Delivered only to sideband observers.
|
|
86
|
+
variant :"transport.ringing", -> { OpenAI::Live::SidebandServerEvent::TransportRinging }
|
|
87
|
+
|
|
88
|
+
# The outbound SIP provider leg answered and media is established. Delivered only to sideband observers.
|
|
89
|
+
variant :"transport.answered", -> { OpenAI::Live::SidebandServerEvent::TransportAnswered }
|
|
90
|
+
|
|
91
|
+
# An asynchronous outbound SIP setup failure. Delivered only to sideband observers.
|
|
92
|
+
variant :"transport.failed", -> { OpenAI::Live::SidebandServerEvent::TransportFailed }
|
|
93
|
+
|
|
94
|
+
class SessionInputAudioAppend < OpenAI::Internal::Type::BaseModel
|
|
95
|
+
# @!attribute audio
|
|
96
|
+
# Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
|
|
97
|
+
# reflected to the sideband before model-input muting. This server event uses the
|
|
98
|
+
# same audio key as the client command, but is not an acknowledgment of it.
|
|
99
|
+
#
|
|
100
|
+
# @return [String]
|
|
101
|
+
required :audio, String
|
|
102
|
+
|
|
103
|
+
# @!attribute type
|
|
104
|
+
# The event type, always `session.input_audio.append`.
|
|
105
|
+
#
|
|
106
|
+
# @return [Symbol, :"session.input_audio.append"]
|
|
107
|
+
required :type, const: :"session.input_audio.append"
|
|
108
|
+
|
|
109
|
+
# @!method initialize(audio:, type: :"session.input_audio.append")
|
|
110
|
+
# Input audio received from the primary transport and reflected to a Live sideband
|
|
111
|
+
# connection before model-input muting.
|
|
112
|
+
#
|
|
113
|
+
# @param audio [String]
|
|
114
|
+
# Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
|
|
115
|
+
# reflected to the sideband before model-input muting. This server event uses the
|
|
116
|
+
# same audio key as the client command, but is not an acknowledgment of it.
|
|
117
|
+
#
|
|
118
|
+
# @param type [Symbol, :"session.input_audio.append"]
|
|
119
|
+
# The event type, always `session.input_audio.append`.
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
class TransportDtmfReceived < OpenAI::Internal::Type::BaseModel
|
|
123
|
+
# @!attribute event
|
|
124
|
+
#
|
|
125
|
+
# @return [String]
|
|
126
|
+
required :event, String
|
|
127
|
+
|
|
128
|
+
# @!attribute event_id
|
|
129
|
+
#
|
|
130
|
+
# @return [String]
|
|
131
|
+
required :event_id, String
|
|
132
|
+
|
|
133
|
+
# @!attribute type
|
|
134
|
+
#
|
|
135
|
+
# @return [Symbol, :"transport.dtmf.received"]
|
|
136
|
+
required :type, const: :"transport.dtmf.received"
|
|
137
|
+
|
|
138
|
+
# @!method initialize(event:, event_id:, type: :"transport.dtmf.received")
|
|
139
|
+
# A SIP DTMF keypress received from the caller. Delivered only to sideband
|
|
140
|
+
# observers.
|
|
141
|
+
#
|
|
142
|
+
# @param event [String]
|
|
143
|
+
# @param event_id [String]
|
|
144
|
+
# @param type [Symbol, :"transport.dtmf.received"]
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
class TransportDtmfSend < OpenAI::Internal::Type::BaseModel
|
|
148
|
+
# @!attribute event
|
|
149
|
+
#
|
|
150
|
+
# @return [String]
|
|
151
|
+
required :event, String
|
|
152
|
+
|
|
153
|
+
# @!attribute event_id
|
|
154
|
+
#
|
|
155
|
+
# @return [String]
|
|
156
|
+
required :event_id, String
|
|
157
|
+
|
|
158
|
+
# @!attribute type
|
|
159
|
+
#
|
|
160
|
+
# @return [Symbol, :"transport.dtmf.send"]
|
|
161
|
+
required :type, const: :"transport.dtmf.send"
|
|
162
|
+
|
|
163
|
+
# @!attribute client_event_id
|
|
164
|
+
# The event_id of the client command, when supplied.
|
|
165
|
+
#
|
|
166
|
+
# @return [String, nil]
|
|
167
|
+
optional :client_event_id, String
|
|
168
|
+
|
|
169
|
+
# @!method initialize(event:, event_id:, client_event_id: nil, type: :"transport.dtmf.send")
|
|
170
|
+
# A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to
|
|
171
|
+
# sideband observers; this is not a client command.
|
|
172
|
+
#
|
|
173
|
+
# @param event [String]
|
|
174
|
+
#
|
|
175
|
+
# @param event_id [String]
|
|
176
|
+
#
|
|
177
|
+
# @param client_event_id [String]
|
|
178
|
+
# The event_id of the client command, when supplied.
|
|
179
|
+
#
|
|
180
|
+
# @param type [Symbol, :"transport.dtmf.send"]
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
class TransportRinging < OpenAI::Internal::Type::BaseModel
|
|
184
|
+
# @!attribute event_id
|
|
185
|
+
#
|
|
186
|
+
# @return [String]
|
|
187
|
+
required :event_id, String
|
|
188
|
+
|
|
189
|
+
# @!attribute session_id
|
|
190
|
+
# The canonical Live session ID.
|
|
191
|
+
#
|
|
192
|
+
# @return [String]
|
|
193
|
+
required :session_id, String
|
|
194
|
+
|
|
195
|
+
# @!attribute type
|
|
196
|
+
#
|
|
197
|
+
# @return [Symbol, :"transport.ringing"]
|
|
198
|
+
required :type, const: :"transport.ringing"
|
|
199
|
+
|
|
200
|
+
# @!method initialize(event_id:, session_id:, type: :"transport.ringing")
|
|
201
|
+
# The outbound SIP provider leg is ringing or providing early media. Delivered
|
|
202
|
+
# only to sideband observers.
|
|
203
|
+
#
|
|
204
|
+
# @param event_id [String]
|
|
205
|
+
#
|
|
206
|
+
# @param session_id [String]
|
|
207
|
+
# The canonical Live session ID.
|
|
208
|
+
#
|
|
209
|
+
# @param type [Symbol, :"transport.ringing"]
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
class TransportAnswered < OpenAI::Internal::Type::BaseModel
|
|
213
|
+
# @!attribute event_id
|
|
214
|
+
#
|
|
215
|
+
# @return [String]
|
|
216
|
+
required :event_id, String
|
|
217
|
+
|
|
218
|
+
# @!attribute session_id
|
|
219
|
+
# The canonical Live session ID.
|
|
220
|
+
#
|
|
221
|
+
# @return [String]
|
|
222
|
+
required :session_id, String
|
|
223
|
+
|
|
224
|
+
# @!attribute type
|
|
225
|
+
#
|
|
226
|
+
# @return [Symbol, :"transport.answered"]
|
|
227
|
+
required :type, const: :"transport.answered"
|
|
228
|
+
|
|
229
|
+
# @!method initialize(event_id:, session_id:, type: :"transport.answered")
|
|
230
|
+
# The outbound SIP provider leg answered and media is established. Delivered only
|
|
231
|
+
# to sideband observers.
|
|
232
|
+
#
|
|
233
|
+
# @param event_id [String]
|
|
234
|
+
#
|
|
235
|
+
# @param session_id [String]
|
|
236
|
+
# The canonical Live session ID.
|
|
237
|
+
#
|
|
238
|
+
# @param type [Symbol, :"transport.answered"]
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
class TransportFailed < OpenAI::Internal::Type::BaseModel
|
|
242
|
+
# @!attribute error
|
|
243
|
+
#
|
|
244
|
+
# @return [OpenAI::Models::Live::SidebandServerEvent::TransportFailed::Error]
|
|
245
|
+
required :error, -> { OpenAI::Live::SidebandServerEvent::TransportFailed::Error }
|
|
246
|
+
|
|
247
|
+
# @!attribute event_id
|
|
248
|
+
#
|
|
249
|
+
# @return [String]
|
|
250
|
+
required :event_id, String
|
|
251
|
+
|
|
252
|
+
# @!attribute session_id
|
|
253
|
+
# The canonical Live session ID.
|
|
254
|
+
#
|
|
255
|
+
# @return [String]
|
|
256
|
+
required :session_id, String
|
|
257
|
+
|
|
258
|
+
# @!attribute type
|
|
259
|
+
#
|
|
260
|
+
# @return [Symbol, :"transport.failed"]
|
|
261
|
+
required :type, const: :"transport.failed"
|
|
262
|
+
|
|
263
|
+
# @!method initialize(error:, event_id:, session_id:, type: :"transport.failed")
|
|
264
|
+
# An asynchronous outbound SIP setup failure. Delivered only to sideband
|
|
265
|
+
# observers.
|
|
266
|
+
#
|
|
267
|
+
# @param error [OpenAI::Models::Live::SidebandServerEvent::TransportFailed::Error]
|
|
268
|
+
#
|
|
269
|
+
# @param event_id [String]
|
|
270
|
+
#
|
|
271
|
+
# @param session_id [String]
|
|
272
|
+
# The canonical Live session ID.
|
|
273
|
+
#
|
|
274
|
+
# @param type [Symbol, :"transport.failed"]
|
|
275
|
+
|
|
276
|
+
# @see OpenAI::Models::Live::SidebandServerEvent::TransportFailed#error
|
|
277
|
+
class Error < OpenAI::Internal::Type::BaseModel
|
|
278
|
+
# @!attribute code
|
|
279
|
+
# The call setup failure code.
|
|
280
|
+
#
|
|
281
|
+
# @return [String]
|
|
282
|
+
required :code, String
|
|
283
|
+
|
|
284
|
+
# @!attribute message
|
|
285
|
+
#
|
|
286
|
+
# @return [String]
|
|
287
|
+
required :message, String
|
|
288
|
+
|
|
289
|
+
# @!attribute type
|
|
290
|
+
#
|
|
291
|
+
# @return [Symbol, :call_error]
|
|
292
|
+
required :type, const: :call_error
|
|
293
|
+
|
|
294
|
+
# @!attribute param
|
|
295
|
+
# The parameter related to the error, if any. Empty when no parameter applies.
|
|
296
|
+
#
|
|
297
|
+
# @return [String, nil]
|
|
298
|
+
optional :param, String
|
|
299
|
+
|
|
300
|
+
# @!method initialize(code:, message:, param: nil, type: :call_error)
|
|
301
|
+
# @param code [String]
|
|
302
|
+
# The call setup failure code.
|
|
303
|
+
#
|
|
304
|
+
# @param message [String]
|
|
305
|
+
#
|
|
306
|
+
# @param param [String]
|
|
307
|
+
# The parameter related to the error, if any. Empty when no parameter applies.
|
|
308
|
+
#
|
|
309
|
+
# @param type [Symbol, :call_error]
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
73
313
|
# @!method self.variants
|
|
74
|
-
# @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::OutputAudioFixturePlayingEvent, OpenAI::Models::Live::OutputAudioFixturePlayedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::DecisionEvent, OpenAI::Models::Live::DecisionItemCreatedEvent, OpenAI::Models::Live::DecisionItemDeletedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent)]
|
|
314
|
+
# @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::OutputAudioFixturePlayingEvent, OpenAI::Models::Live::OutputAudioFixturePlayedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::DecisionEvent, OpenAI::Models::Live::DecisionItemCreatedEvent, OpenAI::Models::Live::DecisionItemDeletedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent, OpenAI::Models::Live::SidebandServerEvent::SessionInputAudioAppend, OpenAI::Models::Live::OutputAudioDeltaEvent, OpenAI::Models::Live::SidebandServerEvent::TransportDtmfReceived, OpenAI::Models::Live::SidebandServerEvent::TransportDtmfSend, OpenAI::Models::Live::SidebandServerEvent::TransportRinging, OpenAI::Models::Live::SidebandServerEvent::TransportAnswered, OpenAI::Models::Live::SidebandServerEvent::TransportFailed)]
|
|
75
315
|
end
|
|
76
316
|
end
|
|
77
317
|
end
|
|
@@ -486,7 +486,13 @@ module OpenAI
|
|
|
486
486
|
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
487
487
|
# replacements.
|
|
488
488
|
GPT_5_CHAT_LATEST = :"gpt-5-chat-latest"
|
|
489
|
+
# @deprecated Announced shutdown date: 2027-01-14. See
|
|
490
|
+
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
491
|
+
# replacements.
|
|
489
492
|
GPT_4_1 = :"gpt-4.1"
|
|
493
|
+
# @deprecated Announced shutdown date: 2027-01-14. See
|
|
494
|
+
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
495
|
+
# replacements.
|
|
490
496
|
GPT_4_1_MINI = :"gpt-4.1-mini"
|
|
491
497
|
# @deprecated Announced shutdown date: 2026-10-23. See
|
|
492
498
|
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
@@ -552,6 +558,9 @@ module OpenAI
|
|
|
552
558
|
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
553
559
|
# replacements.
|
|
554
560
|
O1_MINI_2024_09_12 = :"o1-mini-2024-09-12"
|
|
561
|
+
# @deprecated Announced shutdown date: 2027-01-14. See
|
|
562
|
+
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
563
|
+
# replacements.
|
|
555
564
|
GPT_4O = :"gpt-4o"
|
|
556
565
|
# @deprecated Announced shutdown date: 2027-01-14. See
|
|
557
566
|
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
@@ -621,6 +630,9 @@ module OpenAI
|
|
|
621
630
|
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
622
631
|
# replacements.
|
|
623
632
|
CODEX_MINI_LATEST = :"codex-mini-latest"
|
|
633
|
+
# @deprecated Announced shutdown date: 2027-01-14. See
|
|
634
|
+
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
635
|
+
# replacements.
|
|
624
636
|
GPT_4O_MINI = :"gpt-4o-mini"
|
|
625
637
|
# @deprecated Announced shutdown date: 2027-01-14. See
|
|
626
638
|
# https://developers.openai.com/api/docs/deprecations for details and recommended
|
|
@@ -2177,9 +2177,18 @@ module OpenAI
|
|
|
2177
2177
|
# @return [Symbol, :compaction_trigger]
|
|
2178
2178
|
required :type, const: :compaction_trigger
|
|
2179
2179
|
|
|
2180
|
-
# @!
|
|
2180
|
+
# @!attribute id
|
|
2181
|
+
# The unique ID of this compaction trigger.
|
|
2182
|
+
#
|
|
2183
|
+
# @return [String, nil]
|
|
2184
|
+
optional :id, String, nil?: true
|
|
2185
|
+
|
|
2186
|
+
# @!method initialize(id: nil, type: :compaction_trigger)
|
|
2181
2187
|
# Compacts the current context. Must be the final input item.
|
|
2182
2188
|
#
|
|
2189
|
+
# @param id [String, nil]
|
|
2190
|
+
# The unique ID of this compaction trigger.
|
|
2191
|
+
#
|
|
2183
2192
|
# @param type [Symbol, :compaction_trigger]
|
|
2184
2193
|
# The type of the item. Always `compaction_trigger`.
|
|
2185
2194
|
end
|
data/lib/openai/models.rb
CHANGED
|
@@ -125,6 +125,8 @@ module OpenAI
|
|
|
125
125
|
|
|
126
126
|
DecisionInputText = OpenAI::Models::DecisionInputText
|
|
127
127
|
|
|
128
|
+
DecisionPromptCacheBreakpoint = OpenAI::Models::DecisionPromptCacheBreakpoint
|
|
129
|
+
|
|
128
130
|
DeletedSkill = OpenAI::Models::DeletedSkill
|
|
129
131
|
|
|
130
132
|
Embedding = OpenAI::Models::Embedding
|
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative "../../helpers/websocket/resource"
|
|
4
|
+
|
|
3
5
|
module OpenAI
|
|
4
6
|
module Resources
|
|
5
7
|
class Beta
|
|
6
8
|
# Create and manage model responses.
|
|
7
9
|
class Responses
|
|
10
|
+
include OpenAI::WebSocket::Resource
|
|
11
|
+
|
|
12
|
+
# @api private
|
|
13
|
+
def __websocket_request(query: {})
|
|
14
|
+
{method: :get, path: "responses", query: query, security: {bearer_auth: true}}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @api private
|
|
18
|
+
def __websocket_client_event
|
|
19
|
+
OpenAI::Models::Beta::BetaResponsesClientEvent
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @api private
|
|
23
|
+
def __websocket_server_event
|
|
24
|
+
OpenAI::Models::Beta::BetaResponsesServerEvent
|
|
25
|
+
end
|
|
26
|
+
|
|
8
27
|
# Create and manage model responses.
|
|
9
28
|
# @return [OpenAI::Resources::Beta::Responses::InputItems]
|
|
10
29
|
attr_reader :input_items
|
|
@@ -6,7 +6,7 @@ module OpenAI
|
|
|
6
6
|
# Use this endpoint to quickly answer classification or scoring questions about
|
|
7
7
|
# some input. You can ask multiple questions in one request.
|
|
8
8
|
#
|
|
9
|
-
# @overload create(input:, model:, questions:, safety_identifier: nil, request_options: {})
|
|
9
|
+
# @overload create(input:, model:, questions:, prompt_cache_key: nil, prompt_cache_options: nil, safety_identifier: nil, request_options: {})
|
|
10
10
|
#
|
|
11
11
|
# @param input [String, Array<OpenAI::Models::DecisionInputMessage>]
|
|
12
12
|
# The text or images to evaluate for every question. Provide a text string or user
|
|
@@ -21,6 +21,20 @@ module OpenAI
|
|
|
21
21
|
# Ask 1–200 questions about the input. Each question can be a predicate, choice,
|
|
22
22
|
# or score. Answers come back in the same order.
|
|
23
23
|
#
|
|
24
|
+
# @param prompt_cache_key [String, nil]
|
|
25
|
+
# Partition prompt cache reuse by caller-provided key.
|
|
26
|
+
#
|
|
27
|
+
# @param prompt_cache_options [OpenAI::Models::DecisionCreateParams::PromptCacheOptions, nil]
|
|
28
|
+
# Options for prompt caching. Supported for `gpt-5.6` and later models. By
|
|
29
|
+
# default, OpenAI automatically chooses one implicit cache breakpoint. You can add
|
|
30
|
+
# explicit breakpoints to content blocks with `prompt_cache_breakpoint`. Each
|
|
31
|
+
# request can write up to four breakpoints. For cache matching, OpenAI considers
|
|
32
|
+
# up to the latest 80 breakpoints in the conversation, without a content-block
|
|
33
|
+
# lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
|
|
34
|
+
# `ttl` defaults to `30m`, which is currently the only supported value. See the
|
|
35
|
+
# [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
|
|
36
|
+
# for current details.
|
|
37
|
+
#
|
|
24
38
|
# @param safety_identifier [String, nil]
|
|
25
39
|
# Opaque caller-provided end-user identifier, scoped by the verified org. Match
|
|
26
40
|
# Responses' limit; this is never the authenticated user identity.
|
data/lib/openai/version.rb
CHANGED
data/lib/openai.rb
CHANGED
|
@@ -973,6 +973,7 @@ require_relative "openai/models/decision_input_image"
|
|
|
973
973
|
require_relative "openai/models/decision_input_message"
|
|
974
974
|
require_relative "openai/models/decision_input_part"
|
|
975
975
|
require_relative "openai/models/decision_input_text"
|
|
976
|
+
require_relative "openai/models/decision_prompt_cache_breakpoint"
|
|
976
977
|
require_relative "openai/models/deleted_skill"
|
|
977
978
|
require_relative "openai/models/embedding"
|
|
978
979
|
require_relative "openai/models/embedding_create_params"
|
|
@@ -1646,6 +1647,7 @@ require_relative "openai/resources/vector_stores/files"
|
|
|
1646
1647
|
require_relative "openai/resources/videos"
|
|
1647
1648
|
require_relative "openai/resources/webhooks"
|
|
1648
1649
|
require_relative "openai/resources/webhooks/event_types"
|
|
1650
|
+
require_relative "openai/helpers/models/embedding"
|
|
1649
1651
|
require_relative "openai/helpers/models/responses/response"
|
|
1650
1652
|
require_relative "openai/helpers/files"
|
|
1651
1653
|
require_relative "openai/helpers/vector_stores/file_batches"
|
data/rbi/openai/client.rbi
CHANGED
|
@@ -127,14 +127,7 @@ module OpenAI
|
|
|
127
127
|
|
|
128
128
|
# @api private
|
|
129
129
|
sig do
|
|
130
|
-
override
|
|
131
|
-
.params(
|
|
132
|
-
security: {
|
|
133
|
-
bearer_auth?: T::Boolean,
|
|
134
|
-
admin_api_key_auth?: T::Boolean
|
|
135
|
-
}
|
|
136
|
-
)
|
|
137
|
-
.returns(T::Hash[String, String])
|
|
130
|
+
override.params(security: T::Hash[Symbol, T::Boolean]).returns(T::Hash[String, String])
|
|
138
131
|
end
|
|
139
132
|
private def auth_headers(security:)
|
|
140
133
|
end
|
|
@@ -33,7 +33,42 @@ module OpenAI
|
|
|
33
33
|
request_options: T.untyped,
|
|
34
34
|
transport: T.untyped,
|
|
35
35
|
transport_options: T::Hash[T.untyped, T.untyped],
|
|
36
|
-
block: T.proc.params(connection: TypedConnection).returns(T.untyped)
|
|
36
|
+
block: T.proc.params(connection: TypedConnection[T.untyped, T.untyped]).returns(T.untyped)
|
|
37
|
+
)
|
|
38
|
+
.returns(T.untyped)
|
|
39
|
+
end
|
|
40
|
+
def connect(
|
|
41
|
+
*path_arguments,
|
|
42
|
+
query: {},
|
|
43
|
+
websocket_base_url: nil,
|
|
44
|
+
request_options: nil,
|
|
45
|
+
transport: nil,
|
|
46
|
+
transport_options: {},
|
|
47
|
+
&block
|
|
48
|
+
)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @api private
|
|
53
|
+
module TypedResource
|
|
54
|
+
extend T::Generic
|
|
55
|
+
include Resource
|
|
56
|
+
|
|
57
|
+
WebSocketClientEvent = type_member
|
|
58
|
+
WebSocketServerEvent = type_member
|
|
59
|
+
|
|
60
|
+
sig do
|
|
61
|
+
params(
|
|
62
|
+
path_arguments: T.untyped,
|
|
63
|
+
query: T::Hash[T.untyped, T.untyped],
|
|
64
|
+
websocket_base_url: T.nilable(String),
|
|
65
|
+
request_options: T.untyped,
|
|
66
|
+
transport: T.untyped,
|
|
67
|
+
transport_options: T::Hash[T.untyped, T.untyped],
|
|
68
|
+
block: T
|
|
69
|
+
.proc
|
|
70
|
+
.params(connection: TypedConnection[WebSocketClientEvent, WebSocketServerEvent])
|
|
71
|
+
.returns(T.untyped)
|
|
37
72
|
)
|
|
38
73
|
.returns(T.untyped)
|
|
39
74
|
end
|
|
@@ -51,23 +86,26 @@ module OpenAI
|
|
|
51
86
|
|
|
52
87
|
# @api private
|
|
53
88
|
class TypedConnection
|
|
89
|
+
extend T::Generic
|
|
54
90
|
include Enumerable
|
|
55
|
-
|
|
91
|
+
|
|
92
|
+
ClientEvent = type_member(:in)
|
|
93
|
+
Elem = type_member(:out)
|
|
56
94
|
|
|
57
95
|
sig { returns(URI::Generic) }
|
|
58
96
|
attr_reader :url
|
|
59
97
|
|
|
60
|
-
sig { returns(T.
|
|
98
|
+
sig { returns(T.nilable(Elem)) }
|
|
61
99
|
def receive
|
|
62
100
|
end
|
|
63
101
|
|
|
64
|
-
sig { params(event: T.untyped).void }
|
|
102
|
+
sig { params(event: T.any(ClientEvent, T::Hash[T.any(String, Symbol), T.untyped])).void }
|
|
65
103
|
def send_event(event)
|
|
66
104
|
end
|
|
67
105
|
|
|
68
106
|
sig do
|
|
69
|
-
params(block: T.nilable(T.proc.params(event:
|
|
70
|
-
T.any(TypedConnection, T::Enumerator[
|
|
107
|
+
params(block: T.nilable(T.proc.params(event: Elem).void)).returns(
|
|
108
|
+
T.any(TypedConnection[ClientEvent, Elem], T::Enumerator[Elem])
|
|
71
109
|
)
|
|
72
110
|
end
|
|
73
111
|
def each(&block)
|
|
@@ -53,9 +53,7 @@ module OpenAI
|
|
|
53
53
|
]
|
|
54
54
|
),
|
|
55
55
|
model: T.nilable(OpenAI::Internal::Type::Converter::Input),
|
|
56
|
-
security: T.nilable(
|
|
57
|
-
{bearer_auth?: T::Boolean, admin_api_key_auth?: T::Boolean}
|
|
58
|
-
),
|
|
56
|
+
security: T.nilable(T::Hash[Symbol, T::Boolean]),
|
|
59
57
|
options: T.nilable(OpenAI::RequestOptions::OrHash)
|
|
60
58
|
}
|
|
61
59
|
end
|
|
@@ -387,9 +385,7 @@ module OpenAI
|
|
|
387
385
|
]
|
|
388
386
|
),
|
|
389
387
|
model: T.nilable(OpenAI::Internal::Type::Converter::Input),
|
|
390
|
-
security: T.nilable(
|
|
391
|
-
{bearer_auth?: T::Boolean, admin_api_key_auth?: T::Boolean}
|
|
392
|
-
),
|
|
388
|
+
security: T.nilable(T::Hash[Symbol, T::Boolean]),
|
|
393
389
|
options: T.nilable(OpenAI::RequestOptions::OrHash)
|
|
394
390
|
)
|
|
395
391
|
.returns(T.anything)
|
|
@@ -128,6 +128,7 @@ module OpenAI
|
|
|
128
128
|
:validated,
|
|
129
129
|
OpenAI::Admin::Organization::ExternalStorageConfiguration::Status::TaggedSymbol
|
|
130
130
|
)
|
|
131
|
+
DEGRADED = T.let(:degraded, OpenAI::Admin::Organization::ExternalStorageConfiguration::Status::TaggedSymbol)
|
|
131
132
|
UNHEALTHY = T.let(
|
|
132
133
|
:unhealthy,
|
|
133
134
|
OpenAI::Admin::Organization::ExternalStorageConfiguration::Status::TaggedSymbol
|
|
@@ -227,6 +227,11 @@ module OpenAI
|
|
|
227
227
|
sig { params(input_cache_write_12h_tokens: Integer).void }
|
|
228
228
|
attr_writer :input_cache_write_12h_tokens
|
|
229
229
|
|
|
230
|
+
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
231
|
+
# retention period. May be absent or null for older responses.
|
|
232
|
+
sig { returns(T.nilable(Integer)) }
|
|
233
|
+
attr_accessor :input_cache_write_30m_tokens
|
|
234
|
+
|
|
230
235
|
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
231
236
|
# retention period.
|
|
232
237
|
sig { returns(T.nilable(Integer)) }
|
|
@@ -350,6 +355,8 @@ module OpenAI
|
|
|
350
355
|
|
|
351
356
|
input_cache_write_12h_tokens: Integer,
|
|
352
357
|
|
|
358
|
+
input_cache_write_30m_tokens: T.nilable(Integer),
|
|
359
|
+
|
|
353
360
|
input_cache_write_tokens: Integer,
|
|
354
361
|
|
|
355
362
|
input_cached_audio_tokens: Integer,
|
|
@@ -420,6 +427,10 @@ module OpenAI
|
|
|
420
427
|
# retention period.
|
|
421
428
|
input_cache_write_12h_tokens: nil,
|
|
422
429
|
|
|
430
|
+
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
431
|
+
# retention period. May be absent or null for older responses.
|
|
432
|
+
input_cache_write_30m_tokens: nil,
|
|
433
|
+
|
|
423
434
|
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
424
435
|
# retention period.
|
|
425
436
|
input_cache_write_tokens: nil,
|
|
@@ -491,6 +502,7 @@ module OpenAI
|
|
|
491
502
|
batch: T.nilable(T::Boolean),
|
|
492
503
|
input_audio_tokens: Integer,
|
|
493
504
|
input_cache_write_12h_tokens: Integer,
|
|
505
|
+
input_cache_write_30m_tokens: T.nilable(Integer),
|
|
494
506
|
input_cache_write_tokens: Integer,
|
|
495
507
|
input_cached_audio_tokens: Integer,
|
|
496
508
|
input_cached_image_tokens: Integer,
|
|
@@ -229,6 +229,11 @@ module OpenAI
|
|
|
229
229
|
sig { params(input_cache_write_12h_tokens: Integer).void }
|
|
230
230
|
attr_writer :input_cache_write_12h_tokens
|
|
231
231
|
|
|
232
|
+
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
233
|
+
# retention period. May be absent or null for older responses.
|
|
234
|
+
sig { returns(T.nilable(Integer)) }
|
|
235
|
+
attr_accessor :input_cache_write_30m_tokens
|
|
236
|
+
|
|
232
237
|
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
233
238
|
# retention period.
|
|
234
239
|
sig { returns(T.nilable(Integer)) }
|
|
@@ -352,6 +357,8 @@ module OpenAI
|
|
|
352
357
|
|
|
353
358
|
input_cache_write_12h_tokens: Integer,
|
|
354
359
|
|
|
360
|
+
input_cache_write_30m_tokens: T.nilable(Integer),
|
|
361
|
+
|
|
355
362
|
input_cache_write_tokens: Integer,
|
|
356
363
|
|
|
357
364
|
input_cached_audio_tokens: Integer,
|
|
@@ -422,6 +429,10 @@ module OpenAI
|
|
|
422
429
|
# retention period.
|
|
423
430
|
input_cache_write_12h_tokens: nil,
|
|
424
431
|
|
|
432
|
+
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
433
|
+
# retention period. May be absent or null for older responses.
|
|
434
|
+
input_cache_write_30m_tokens: nil,
|
|
435
|
+
|
|
425
436
|
# The aggregated number of input tokens written to the cache with a 30-minute
|
|
426
437
|
# retention period.
|
|
427
438
|
input_cache_write_tokens: nil,
|
|
@@ -493,6 +504,7 @@ module OpenAI
|
|
|
493
504
|
batch: T.nilable(T::Boolean),
|
|
494
505
|
input_audio_tokens: Integer,
|
|
495
506
|
input_cache_write_12h_tokens: Integer,
|
|
507
|
+
input_cache_write_30m_tokens: T.nilable(Integer),
|
|
496
508
|
input_cache_write_tokens: Integer,
|
|
497
509
|
input_cached_audio_tokens: Integer,
|
|
498
510
|
input_cached_image_tokens: Integer,
|