openai 0.81.0 → 0.82.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +53 -1
  4. data/lib/openai/helpers/sorbet.rb +324 -0
  5. data/lib/openai/helpers/streaming/response_event_decoder.rb +44 -0
  6. data/lib/openai/helpers/streaming/response_stream.rb +10 -3
  7. data/lib/openai/helpers/streaming/unknown_stream_event.rb +51 -0
  8. data/lib/openai/internal/stream.rb +4 -1
  9. data/lib/openai/models/beta/beta_response_function_tool_call_output_item.rb +9 -9
  10. data/lib/openai/models/beta/beta_response_input_item.rb +9 -9
  11. data/lib/openai/models/responses/response_function_tool_call_output_item.rb +9 -9
  12. data/lib/openai/models/responses/response_input_item.rb +9 -9
  13. data/lib/openai/resources/beta/responses.rb +2 -2
  14. data/lib/openai/resources/responses.rb +3 -3
  15. data/lib/openai/version.rb +1 -1
  16. data/rbi/openai/helpers/sorbet.rbi +55 -0
  17. data/rbi/openai/helpers/streaming/response_event_decoder.rbi +28 -0
  18. data/rbi/openai/helpers/streaming/response_stream.rbi +5 -0
  19. data/rbi/openai/helpers/streaming/unknown_stream_event.rbi +29 -0
  20. data/rbi/openai/models/beta/beta_response_function_tool_call_output_item.rbi +13 -10
  21. data/rbi/openai/models/beta/beta_response_input_item.rbi +10 -10
  22. data/rbi/openai/models/responses/response_function_tool_call_output_item.rbi +13 -10
  23. data/rbi/openai/models/responses/response_input_item.rbi +10 -10
  24. data/rbi/openai/resources/beta/responses.rbi +10 -2
  25. data/rbi/openai/resources/responses.rbi +2 -2
  26. data/rbi/openai/streaming.rbi +1 -0
  27. data/sig/openai/helpers/sorbet.rbs +54 -0
  28. data/sig/openai/helpers/streaming/response_event_decoder.rbs +16 -0
  29. data/sig/openai/helpers/streaming/unknown_stream_event.rbs +15 -0
  30. data/sig/openai/models/beta/beta_response_function_tool_call_output_item.rbs +7 -5
  31. data/sig/openai/models/beta/beta_response_input_item.rbs +5 -5
  32. data/sig/openai/models/responses/response_function_tool_call_output_item.rbs +7 -5
  33. data/sig/openai/models/responses/response_input_item.rbs +5 -5
  34. data/sig/openai/resources/beta/responses.rbs +4 -2
  35. data/sig/openai/resources/responses.rbs +6 -3
  36. data/sig/openai/streaming.rbs +5 -0
  37. metadata +11 -1
@@ -396,7 +396,7 @@ module OpenAI
396
396
  )
397
397
  .returns(
398
398
  OpenAI::Internal::Stream[
399
- OpenAI::Responses::ResponseStreamEvent::Variants
399
+ T.any(OpenAI::Responses::ResponseStreamEvent::Variants, OpenAI::Streaming::UnknownStreamEvent)
400
400
  ]
401
401
  )
402
402
  end
@@ -917,7 +917,7 @@ module OpenAI
917
917
  )
918
918
  .returns(
919
919
  OpenAI::Internal::Stream[
920
- OpenAI::Responses::ResponseStreamEvent::Variants
920
+ T.any(OpenAI::Responses::ResponseStreamEvent::Variants, OpenAI::Streaming::UnknownStreamEvent)
921
921
  ]
922
922
  )
923
923
  end
@@ -6,6 +6,7 @@ module OpenAI
6
6
  ResponseTextDoneEvent = OpenAI::Helpers::Streaming::ResponseTextDoneEvent
7
7
  ResponseFunctionCallArgumentsDeltaEvent = OpenAI::Helpers::Streaming::ResponseFunctionCallArgumentsDeltaEvent
8
8
  ResponseCompletedEvent = OpenAI::Helpers::Streaming::ResponseCompletedEvent
9
+ UnknownStreamEvent = OpenAI::Helpers::Streaming::UnknownStreamEvent
9
10
 
10
11
  ChatChunkEvent = OpenAI::Helpers::Streaming::ChatChunkEvent
11
12
  ChatContentDeltaEvent = OpenAI::Helpers::Streaming::ChatContentDeltaEvent
@@ -0,0 +1,54 @@
1
+ module OpenAI
2
+ module Helpers
3
+ module StructuredOutput
4
+ class SorbetAdapter
5
+ include OpenAI::Internal::Type::Converter
6
+
7
+ class HydrationError < ::TypeError
8
+ end
9
+
10
+ attr_reader name: String
11
+
12
+ def initialize: (::Class model) -> void
13
+
14
+ def to_json_schema: -> ::Hash[Symbol, untyped]
15
+
16
+ # @api private
17
+ def to_json_schema_inner: (
18
+ state: ::Hash[Symbol, untyped]
19
+ ) -> ::Hash[Symbol, untyped]
20
+
21
+ # @api private
22
+ def coerce: (untyped value, state: ::Hash[Symbol, untyped]) -> untyped
23
+ end
24
+
25
+ def self.from_sorbet: (::Class model) -> SorbetAdapter
26
+ end
27
+ end
28
+
29
+ module Resources
30
+ class Responses
31
+ def create:
32
+ (
33
+ text: OpenAI::Helpers::StructuredOutput::SorbetAdapter,
34
+ ?model: OpenAI::Models::responses_model,
35
+ ?input: OpenAI::Models::Responses::ResponseCreateParams::input,
36
+ **untyped
37
+ ) -> OpenAI::Responses::Response
38
+ | ...
39
+ end
40
+
41
+ class Chat
42
+ class Completions
43
+ def create:
44
+ (
45
+ model: OpenAI::Models::Chat::CompletionCreateParams::model,
46
+ messages: ::Array[OpenAI::Models::Chat::chat_completion_message_param],
47
+ response_format: OpenAI::Helpers::StructuredOutput::SorbetAdapter,
48
+ **untyped
49
+ ) -> OpenAI::Chat::ChatCompletion
50
+ | ...
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,16 @@
1
+ module OpenAI
2
+ module Helpers
3
+ module Streaming
4
+ # @api private
5
+ class ResponseEventDecoder
6
+ def initialize: (model: untyped) -> void
7
+ def decode: (untyped data) -> untyped
8
+
9
+ private
10
+
11
+ def response_stream_model?: -> bool
12
+ def unknown_response_event?: (untyped data) -> bool
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ module OpenAI
2
+ module Helpers
3
+ module Streaming
4
+ class UnknownStreamEvent
5
+ attr_reader type: Symbol
6
+ attr_reader sequence_number: Integer?
7
+ attr_reader data: ::Hash[Symbol, untyped]
8
+
9
+ # @api private
10
+ def initialize: (data: ::Hash[Symbol, untyped]) -> void
11
+ def to_h: -> ::Hash[Symbol, untyped]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -6,11 +6,11 @@ module OpenAI
6
6
  type beta_response_function_tool_call_output_item =
7
7
  {
8
8
  id: String,
9
- call_id: String,
10
9
  output: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::output,
11
10
  status: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::status,
12
11
  type: :function_call_output,
13
12
  agent: OpenAI::Beta::BetaResponseFunctionToolCallOutputItem::Agent?,
13
+ call_id: String,
14
14
  caller_: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::caller_?,
15
15
  created_by: String,
16
16
  name: String,
@@ -20,8 +20,6 @@ module OpenAI
20
20
  class BetaResponseFunctionToolCallOutputItem < OpenAI::Internal::Type::BaseModel
21
21
  attr_accessor id: String
22
22
 
23
- attr_accessor call_id: String
24
-
25
23
  attr_accessor output: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::output
26
24
 
27
25
  attr_accessor status: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::status
@@ -30,6 +28,10 @@ module OpenAI
30
28
 
31
29
  attr_accessor agent: OpenAI::Beta::BetaResponseFunctionToolCallOutputItem::Agent?
32
30
 
31
+ attr_reader call_id: String?
32
+
33
+ def call_id=: (String) -> String
34
+
33
35
  attr_accessor caller_: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::caller_?
34
36
 
35
37
  attr_reader created_by: String?
@@ -46,10 +48,10 @@ module OpenAI
46
48
 
47
49
  def initialize: (
48
50
  id: String,
49
- call_id: String,
50
51
  output: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::output,
51
52
  status: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::status,
52
53
  ?agent: OpenAI::Beta::BetaResponseFunctionToolCallOutputItem::Agent?,
54
+ ?call_id: String,
53
55
  ?caller_: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::caller_?,
54
56
  ?created_by: String,
55
57
  ?name: String,
@@ -59,11 +61,11 @@ module OpenAI
59
61
 
60
62
  def to_hash: -> {
61
63
  id: String,
62
- call_id: String,
63
64
  output: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::output,
64
65
  status: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::status,
65
66
  type: :function_call_output,
66
67
  agent: OpenAI::Beta::BetaResponseFunctionToolCallOutputItem::Agent?,
68
+ call_id: String,
67
69
  caller_: OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem::caller_?,
68
70
  created_by: String,
69
71
  name: String,
@@ -222,11 +222,11 @@ module OpenAI
222
222
 
223
223
  type function_call_output =
224
224
  {
225
- call_id: String,
226
225
  output: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::output,
227
226
  type: :function_call_output,
228
227
  id: String?,
229
228
  agent: OpenAI::Beta::BetaResponseInputItem::FunctionCallOutput::Agent?,
229
+ call_id: String?,
230
230
  caller_: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::caller_?,
231
231
  name: String?,
232
232
  namespace: String?,
@@ -234,8 +234,6 @@ module OpenAI
234
234
  }
235
235
 
236
236
  class FunctionCallOutput < OpenAI::Internal::Type::BaseModel
237
- attr_accessor call_id: String
238
-
239
237
  attr_accessor output: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::output
240
238
 
241
239
  attr_accessor type: :function_call_output
@@ -244,6 +242,8 @@ module OpenAI
244
242
 
245
243
  attr_accessor agent: OpenAI::Beta::BetaResponseInputItem::FunctionCallOutput::Agent?
246
244
 
245
+ attr_accessor call_id: String?
246
+
247
247
  attr_accessor caller_: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::caller_?
248
248
 
249
249
  attr_accessor name: String?
@@ -253,10 +253,10 @@ module OpenAI
253
253
  attr_accessor status: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::status?
254
254
 
255
255
  def initialize: (
256
- call_id: String,
257
256
  output: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::output,
258
257
  ?id: String?,
259
258
  ?agent: OpenAI::Beta::BetaResponseInputItem::FunctionCallOutput::Agent?,
259
+ ?call_id: String?,
260
260
  ?caller_: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::caller_?,
261
261
  ?name: String?,
262
262
  ?namespace: String?,
@@ -265,11 +265,11 @@ module OpenAI
265
265
  ) -> void
266
266
 
267
267
  def to_hash: -> {
268
- call_id: String,
269
268
  output: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::output,
270
269
  type: :function_call_output,
271
270
  id: String?,
272
271
  agent: OpenAI::Beta::BetaResponseInputItem::FunctionCallOutput::Agent?,
272
+ call_id: String?,
273
273
  caller_: OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput::caller_?,
274
274
  name: String?,
275
275
  namespace: String?,
@@ -4,10 +4,10 @@ module OpenAI
4
4
  type response_function_tool_call_output_item =
5
5
  {
6
6
  id: String,
7
- call_id: String,
8
7
  output: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::output,
9
8
  status: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::status,
10
9
  type: :function_call_output,
10
+ call_id: String,
11
11
  caller_: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::caller_?,
12
12
  created_by: String,
13
13
  name: String,
@@ -17,14 +17,16 @@ module OpenAI
17
17
  class ResponseFunctionToolCallOutputItem < OpenAI::Internal::Type::BaseModel
18
18
  attr_accessor id: String
19
19
 
20
- attr_accessor call_id: String
21
-
22
20
  attr_accessor output: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::output
23
21
 
24
22
  attr_accessor status: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::status
25
23
 
26
24
  attr_accessor type: :function_call_output
27
25
 
26
+ attr_reader call_id: String?
27
+
28
+ def call_id=: (String) -> String
29
+
28
30
  attr_accessor caller_: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::caller_?
29
31
 
30
32
  attr_reader created_by: String?
@@ -41,9 +43,9 @@ module OpenAI
41
43
 
42
44
  def initialize: (
43
45
  id: String,
44
- call_id: String,
45
46
  output: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::output,
46
47
  status: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::status,
48
+ ?call_id: String,
47
49
  ?caller_: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::caller_?,
48
50
  ?created_by: String,
49
51
  ?name: String,
@@ -53,10 +55,10 @@ module OpenAI
53
55
 
54
56
  def to_hash: -> {
55
57
  id: String,
56
- call_id: String,
57
58
  output: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::output,
58
59
  status: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::status,
59
60
  type: :function_call_output,
61
+ call_id: String,
60
62
  caller_: OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem::caller_?,
61
63
  created_by: String,
62
64
  name: String,
@@ -187,10 +187,10 @@ module OpenAI
187
187
 
188
188
  type function_call_output =
189
189
  {
190
- call_id: String,
191
190
  output: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::output,
192
191
  type: :function_call_output,
193
192
  id: String?,
193
+ call_id: String?,
194
194
  caller_: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::caller_?,
195
195
  name: String?,
196
196
  namespace: String?,
@@ -198,14 +198,14 @@ module OpenAI
198
198
  }
199
199
 
200
200
  class FunctionCallOutput < OpenAI::Internal::Type::BaseModel
201
- attr_accessor call_id: String
202
-
203
201
  attr_accessor output: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::output
204
202
 
205
203
  attr_accessor type: :function_call_output
206
204
 
207
205
  attr_accessor id: String?
208
206
 
207
+ attr_accessor call_id: String?
208
+
209
209
  attr_accessor caller_: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::caller_?
210
210
 
211
211
  attr_accessor name: String?
@@ -215,9 +215,9 @@ module OpenAI
215
215
  attr_accessor status: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::status?
216
216
 
217
217
  def initialize: (
218
- call_id: String,
219
218
  output: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::output,
220
219
  ?id: String?,
220
+ ?call_id: String?,
221
221
  ?caller_: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::caller_?,
222
222
  ?name: String?,
223
223
  ?namespace: String?,
@@ -226,10 +226,10 @@ module OpenAI
226
226
  ) -> void
227
227
 
228
228
  def to_hash: -> {
229
- call_id: String,
230
229
  output: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::output,
231
230
  type: :function_call_output,
232
231
  id: String?,
232
+ call_id: String?,
233
233
  caller_: OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput::caller_?,
234
234
  name: String?,
235
235
  namespace: String?,
@@ -76,7 +76,8 @@ module OpenAI
76
76
  ?user: String,
77
77
  ?betas: ::Array[OpenAI::Models::Beta::ResponseCreateParams::beta],
78
78
  ?request_options: OpenAI::request_opts
79
- ) -> OpenAI::Internal::Stream[OpenAI::Models::Beta::beta_response_stream_event]
79
+ ) -> OpenAI::Internal::Stream[(OpenAI::Models::Beta::beta_response_stream_event
80
+ | OpenAI::Streaming::UnknownStreamEvent)]
80
81
 
81
82
  def retrieve: (
82
83
  String response_id,
@@ -94,7 +95,8 @@ module OpenAI
94
95
  ?starting_after: Integer,
95
96
  ?betas: ::Array[OpenAI::Models::Beta::ResponseRetrieveParams::beta],
96
97
  ?request_options: OpenAI::request_opts
97
- ) -> OpenAI::Internal::Stream[OpenAI::Models::Beta::beta_response_stream_event]
98
+ ) -> OpenAI::Internal::Stream[(OpenAI::Models::Beta::beta_response_stream_event
99
+ | OpenAI::Streaming::UnknownStreamEvent)]
98
100
 
99
101
  def delete: (
100
102
  String response_id,
@@ -71,7 +71,8 @@ module OpenAI
71
71
  ?truncation: OpenAI::Models::Responses::ResponseCreateParams::truncation?,
72
72
  ?user: String,
73
73
  ?request_options: OpenAI::request_opts
74
- ) -> OpenAI::Internal::Stream[OpenAI::Models::Responses::response_stream_event]
74
+ ) -> OpenAI::Internal::Stream[(OpenAI::Models::Responses::response_stream_event
75
+ | OpenAI::Streaming::UnknownStreamEvent)]
75
76
 
76
77
  def stream: (
77
78
  ?background: bool?,
@@ -99,7 +100,8 @@ module OpenAI
99
100
  ?truncation: OpenAI::Models::Responses::ResponseCreateParams::truncation?,
100
101
  ?user: String,
101
102
  ?request_options: OpenAI::request_opts
102
- ) -> OpenAI::Internal::Stream[OpenAI::Models::Responses::response_stream_event]
103
+ ) -> OpenAI::Internal::Stream[(OpenAI::Models::Responses::response_stream_event
104
+ | OpenAI::Streaming::UnknownStreamEvent)]
103
105
 
104
106
  def retrieve: (
105
107
  String response_id,
@@ -115,7 +117,8 @@ module OpenAI
115
117
  ?include_obfuscation: bool,
116
118
  ?starting_after: Integer,
117
119
  ?request_options: OpenAI::request_opts
118
- ) -> OpenAI::Internal::Stream[OpenAI::Models::Responses::response_stream_event]
120
+ ) -> OpenAI::Internal::Stream[(OpenAI::Models::Responses::response_stream_event
121
+ | OpenAI::Streaming::UnknownStreamEvent)]
119
122
 
120
123
  def delete: (
121
124
  String response_id,
@@ -0,0 +1,5 @@
1
+ module OpenAI
2
+ module Streaming
3
+ class UnknownStreamEvent = Helpers::Streaming::UnknownStreamEvent
4
+ end
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.81.0
4
+ version: 0.82.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAI
@@ -93,11 +93,14 @@ files:
93
93
  - lib/openai/helpers/realtime/transports/async_websocket.rb
94
94
  - lib/openai/helpers/realtime/unknown_server_event.rb
95
95
  - lib/openai/helpers/resource_polling.rb
96
+ - lib/openai/helpers/sorbet.rb
96
97
  - lib/openai/helpers/streaming/chat_completion_stream.rb
97
98
  - lib/openai/helpers/streaming/chat_events.rb
98
99
  - lib/openai/helpers/streaming/exceptions.rb
100
+ - lib/openai/helpers/streaming/response_event_decoder.rb
99
101
  - lib/openai/helpers/streaming/response_events.rb
100
102
  - lib/openai/helpers/streaming/response_stream.rb
103
+ - lib/openai/helpers/streaming/unknown_stream_event.rb
101
104
  - lib/openai/helpers/structured_output.rb
102
105
  - lib/openai/helpers/structured_output/array_of.rb
103
106
  - lib/openai/helpers/structured_output/base_model.rb
@@ -1357,8 +1360,11 @@ files:
1357
1360
  - rbi/openai/helpers/realtime/transports/async_websocket.rbi
1358
1361
  - rbi/openai/helpers/realtime/unknown_server_event.rbi
1359
1362
  - rbi/openai/helpers/resource_polling.rbi
1363
+ - rbi/openai/helpers/sorbet.rbi
1360
1364
  - rbi/openai/helpers/streaming/events.rbi
1365
+ - rbi/openai/helpers/streaming/response_event_decoder.rbi
1361
1366
  - rbi/openai/helpers/streaming/response_stream.rbi
1367
+ - rbi/openai/helpers/streaming/unknown_stream_event.rbi
1362
1368
  - rbi/openai/helpers/structured_output.rbi
1363
1369
  - rbi/openai/helpers/structured_output/array_of.rbi
1364
1370
  - rbi/openai/helpers/structured_output/base_model.rbi
@@ -2615,6 +2621,9 @@ files:
2615
2621
  - sig/openai/helpers/realtime/transports/async_websocket.rbs
2616
2622
  - sig/openai/helpers/realtime/unknown_server_event.rbs
2617
2623
  - sig/openai/helpers/resource_polling.rbs
2624
+ - sig/openai/helpers/sorbet.rbs
2625
+ - sig/openai/helpers/streaming/response_event_decoder.rbs
2626
+ - sig/openai/helpers/streaming/unknown_stream_event.rbs
2618
2627
  - sig/openai/helpers/structured_output/chat_completion_parser.rbs
2619
2628
  - sig/openai/helpers/structured_output/response_parser.rbs
2620
2629
  - sig/openai/http_client.rbs
@@ -3843,6 +3852,7 @@ files:
3843
3852
  - sig/openai/resources/vector_stores/files.rbs
3844
3853
  - sig/openai/resources/videos.rbs
3845
3854
  - sig/openai/resources/webhooks.rbs
3855
+ - sig/openai/streaming.rbs
3846
3856
  - sig/openai/version.rbs
3847
3857
  homepage: https://gemdocs.org/gems/openai
3848
3858
  licenses: