openai 0.4.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c07c6ffe0bed902c877c2c49c557a4f85cc8c6b5f291ed4534a3bb9052347e14
4
- data.tar.gz: bcaf9ac1e1d62e51b0c17af965887ccc8e479278e79bfcd932b84b92dc180778
3
+ metadata.gz: 47fb7720e93045ef9ea453bfa010f7c371e787bbef29cd4a030b4022f9402cae
4
+ data.tar.gz: f055a7952e0aef69b1b7c55ed9b388c3c96c870022bc2f24b199fce4d15cd029
5
5
  SHA512:
6
- metadata.gz: 8582a8bf14c6f8639f4301d5c35cc012fb56cb4cc7b16b496f57013e3da8945296857de33c7b8e651726d4ea334b718a23c77dd4c3375c4a230b34e6742787a9
7
- data.tar.gz: 8e91eac55ebe1a1d4c08de1cf2d90a97526d84ed229143cfa73845cc231a7b2cd4f25d5dc91b3ed0295c5470bc4b96da6a99508ab557ba9ac8c4b084ebcdeb59
6
+ metadata.gz: 05d0d579d341ae49f9e37afce59d8231490ba4e97c0f7015223ae66b22ea70243a3dc4ea4f58cd3214f49550bef85f71916f67056a2d0bdc22884733172414bf
7
+ data.tar.gz: f808c8aa99ec25fcd98bdfc7cba0a2736e2c495a8c84c1cdeea59709b29a498c469d1e3a8611c00aa7bb6453c00ea2c1c60ee86d7cc21b574d58f31ac3bcb484
data/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0 (2025-05-29)
4
+
5
+ Full Changelog: [v0.4.1...v0.5.0](https://github.com/openai/openai-ruby/compare/v0.4.1...v0.5.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** Config update for pakrym-stream-param ([214e516](https://github.com/openai/openai-ruby/commit/214e516f286a026e5b040ffd76b930cad7d5eabf))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **client:** return binary content from `get /containers/{container_id}/files/{file_id}/content` ([2b7122a](https://github.com/openai/openai-ruby/commit/2b7122ad724620269c3b403d5a584d710bed5b5c))
15
+ * sorbet types for enums, and make tapioca detection ignore `tapioca dsl` ([0e24b3e](https://github.com/openai/openai-ruby/commit/0e24b3e0a574de5c0544067c53b9e693e4cec3b1))
16
+
17
+
18
+ ### Chores
19
+
20
+ * deprecate Assistants API ([4ce7530](https://github.com/openai/openai-ruby/commit/4ce753088e18a3331fccf6608889243809ce187b))
21
+
3
22
  ## 0.4.1 (2025-05-23)
4
23
 
5
24
  Full Changelog: [v0.4.0-beta.1...v0.4.1](https://github.com/openai/openai-ruby/compare/v0.4.0-beta.1...v0.4.1)
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "openai", "~> 0.4.1"
18
+ gem "openai", "~> 0.5.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -875,8 +875,12 @@ module OpenAI
875
875
  case type
876
876
  in OpenAI::Internal::Util::SorbetRuntimeSupport
877
877
  type.to_sorbet_type
878
- else
878
+ in Class | Module
879
879
  type
880
+ in true | false
881
+ T::Boolean
882
+ else
883
+ type.class
880
884
  end
881
885
  end
882
886
  end
@@ -31,13 +31,23 @@ module OpenAI
31
31
  # @return [Symbol, :output_text]
32
32
  required :type, const: :output_text
33
33
 
34
- # @!method initialize(annotations:, text:, type: :output_text)
34
+ # @!attribute logprobs
35
+ #
36
+ # @return [Array<OpenAI::Models::Responses::ResponseOutputText::Logprob>, nil]
37
+ optional :logprobs,
38
+ -> {
39
+ OpenAI::Internal::Type::ArrayOf[OpenAI::Responses::ResponseOutputText::Logprob]
40
+ }
41
+
42
+ # @!method initialize(annotations:, text:, logprobs: nil, type: :output_text)
35
43
  # A text output from the model.
36
44
  #
37
45
  # @param annotations [Array<OpenAI::Models::Responses::ResponseOutputText::Annotation::FileCitation, OpenAI::Models::Responses::ResponseOutputText::Annotation::URLCitation, OpenAI::Models::Responses::ResponseOutputText::Annotation::FilePath>] The annotations of the text output.
38
46
  #
39
47
  # @param text [String] The text output from the model.
40
48
  #
49
+ # @param logprobs [Array<OpenAI::Models::Responses::ResponseOutputText::Logprob>]
50
+ #
41
51
  # @param type [Symbol, :output_text] The type of the output text. Always `output_text`.
42
52
 
43
53
  # A citation to a file.
@@ -165,6 +175,63 @@ module OpenAI
165
175
  # @!method self.variants
166
176
  # @return [Array(OpenAI::Models::Responses::ResponseOutputText::Annotation::FileCitation, OpenAI::Models::Responses::ResponseOutputText::Annotation::URLCitation, OpenAI::Models::Responses::ResponseOutputText::Annotation::FilePath)]
167
177
  end
178
+
179
+ class Logprob < OpenAI::Internal::Type::BaseModel
180
+ # @!attribute token
181
+ #
182
+ # @return [String]
183
+ required :token, String
184
+
185
+ # @!attribute bytes
186
+ #
187
+ # @return [Array<Integer>]
188
+ required :bytes, OpenAI::Internal::Type::ArrayOf[Integer]
189
+
190
+ # @!attribute logprob
191
+ #
192
+ # @return [Float]
193
+ required :logprob, Float
194
+
195
+ # @!attribute top_logprobs
196
+ #
197
+ # @return [Array<OpenAI::Models::Responses::ResponseOutputText::Logprob::TopLogprob>]
198
+ required :top_logprobs,
199
+ -> {
200
+ OpenAI::Internal::Type::ArrayOf[OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob]
201
+ }
202
+
203
+ # @!method initialize(token:, bytes:, logprob:, top_logprobs:)
204
+ # The log probability of a token.
205
+ #
206
+ # @param token [String]
207
+ # @param bytes [Array<Integer>]
208
+ # @param logprob [Float]
209
+ # @param top_logprobs [Array<OpenAI::Models::Responses::ResponseOutputText::Logprob::TopLogprob>]
210
+
211
+ class TopLogprob < OpenAI::Internal::Type::BaseModel
212
+ # @!attribute token
213
+ #
214
+ # @return [String]
215
+ required :token, String
216
+
217
+ # @!attribute bytes
218
+ #
219
+ # @return [Array<Integer>]
220
+ required :bytes, OpenAI::Internal::Type::ArrayOf[Integer]
221
+
222
+ # @!attribute logprob
223
+ #
224
+ # @return [Float]
225
+ required :logprob, Float
226
+
227
+ # @!method initialize(token:, bytes:, logprob:)
228
+ # The top log probability of a token.
229
+ #
230
+ # @param token [String]
231
+ # @param bytes [Array<Integer>]
232
+ # @param logprob [Float]
233
+ end
234
+ end
168
235
  end
169
236
  end
170
237
  end
@@ -4,6 +4,8 @@ module OpenAI
4
4
  module Models
5
5
  module Responses
6
6
  # @see OpenAI::Resources::Responses#retrieve
7
+ #
8
+ # @see OpenAI::Resources::Responses#retrieve_streaming
7
9
  class ResponseRetrieveParams < OpenAI::Internal::Type::BaseModel
8
10
  extend OpenAI::Internal::Type::RequestParameters::Converter
9
11
  include OpenAI::Internal::Type::RequestParameters
@@ -15,12 +17,20 @@ module OpenAI
15
17
  # @return [Array<Symbol, OpenAI::Models::Responses::ResponseIncludable>, nil]
16
18
  optional :include, -> { OpenAI::Internal::Type::ArrayOf[enum: OpenAI::Responses::ResponseIncludable] }
17
19
 
18
- # @!method initialize(include: nil, request_options: {})
20
+ # @!attribute starting_after
21
+ # The sequence number of the event after which to start streaming.
22
+ #
23
+ # @return [Integer, nil]
24
+ optional :starting_after, Integer
25
+
26
+ # @!method initialize(include: nil, starting_after: nil, request_options: {})
19
27
  # Some parameter documentations has been truncated, see
20
28
  # {OpenAI::Models::Responses::ResponseRetrieveParams} for more details.
21
29
  #
22
30
  # @param include [Array<Symbol, OpenAI::Models::Responses::ResponseIncludable>] Additional fields to include in the response. See the `include`
23
31
  #
32
+ # @param starting_after [Integer] The sequence number of the event after which to start streaming.
33
+ #
24
34
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}]
25
35
  end
26
36
  end
@@ -4,7 +4,10 @@ module OpenAI
4
4
  module Resources
5
5
  class Beta
6
6
  class Threads
7
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
7
8
  class Messages
9
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
10
+ #
8
11
  # Some parameter documentations has been truncated, see
9
12
  # {OpenAI::Models::Beta::Threads::MessageCreateParams} for more details.
10
13
  #
@@ -38,6 +41,8 @@ module OpenAI
38
41
  )
39
42
  end
40
43
 
44
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
45
+ #
41
46
  # Some parameter documentations has been truncated, see
42
47
  # {OpenAI::Models::Beta::Threads::MessageRetrieveParams} for more details.
43
48
  #
@@ -68,6 +73,8 @@ module OpenAI
68
73
  )
69
74
  end
70
75
 
76
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
77
+ #
71
78
  # Some parameter documentations has been truncated, see
72
79
  # {OpenAI::Models::Beta::Threads::MessageUpdateParams} for more details.
73
80
  #
@@ -101,6 +108,8 @@ module OpenAI
101
108
  )
102
109
  end
103
110
 
111
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
112
+ #
104
113
  # Some parameter documentations has been truncated, see
105
114
  # {OpenAI::Models::Beta::Threads::MessageListParams} for more details.
106
115
  #
@@ -137,6 +146,8 @@ module OpenAI
137
146
  )
138
147
  end
139
148
 
149
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
150
+ #
140
151
  # Deletes a message.
141
152
  #
142
153
  # @overload delete(message_id, thread_id:, request_options: {})
@@ -5,7 +5,10 @@ module OpenAI
5
5
  class Beta
6
6
  class Threads
7
7
  class Runs
8
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
8
9
  class Steps
10
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
11
+ #
9
12
  # Some parameter documentations has been truncated, see
10
13
  # {OpenAI::Models::Beta::Threads::Runs::StepRetrieveParams} for more details.
11
14
  #
@@ -45,6 +48,8 @@ module OpenAI
45
48
  )
46
49
  end
47
50
 
51
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
52
+ #
48
53
  # Some parameter documentations has been truncated, see
49
54
  # {OpenAI::Models::Beta::Threads::Runs::StepListParams} for more details.
50
55
  #
@@ -4,10 +4,13 @@ module OpenAI
4
4
  module Resources
5
5
  class Beta
6
6
  class Threads
7
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
7
8
  class Runs
8
9
  # @return [OpenAI::Resources::Beta::Threads::Runs::Steps]
9
10
  attr_reader :steps
10
11
 
12
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
13
+ #
11
14
  # See {OpenAI::Resources::Beta::Threads::Runs#create_stream_raw} for streaming
12
15
  # counterpart.
13
16
  #
@@ -76,6 +79,8 @@ module OpenAI
76
79
  )
77
80
  end
78
81
 
82
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
83
+ #
79
84
  # See {OpenAI::Resources::Beta::Threads::Runs#create} for non-streaming
80
85
  # counterpart.
81
86
  #
@@ -147,6 +152,8 @@ module OpenAI
147
152
  )
148
153
  end
149
154
 
155
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
156
+ #
150
157
  # Some parameter documentations has been truncated, see
151
158
  # {OpenAI::Models::Beta::Threads::RunRetrieveParams} for more details.
152
159
  #
@@ -177,6 +184,8 @@ module OpenAI
177
184
  )
178
185
  end
179
186
 
187
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
188
+ #
180
189
  # Some parameter documentations has been truncated, see
181
190
  # {OpenAI::Models::Beta::Threads::RunUpdateParams} for more details.
182
191
  #
@@ -210,6 +219,8 @@ module OpenAI
210
219
  )
211
220
  end
212
221
 
222
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
223
+ #
213
224
  # Some parameter documentations has been truncated, see
214
225
  # {OpenAI::Models::Beta::Threads::RunListParams} for more details.
215
226
  #
@@ -244,6 +255,8 @@ module OpenAI
244
255
  )
245
256
  end
246
257
 
258
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
259
+ #
247
260
  # Cancels a run that is `in_progress`.
248
261
  #
249
262
  # @overload cancel(run_id, thread_id:, request_options: {})
@@ -271,6 +284,8 @@ module OpenAI
271
284
  )
272
285
  end
273
286
 
287
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
288
+ #
274
289
  # See {OpenAI::Resources::Beta::Threads::Runs#submit_tool_outputs_stream_raw} for
275
290
  # streaming counterpart.
276
291
  #
@@ -314,6 +329,8 @@ module OpenAI
314
329
  )
315
330
  end
316
331
 
332
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
333
+ #
317
334
  # See {OpenAI::Resources::Beta::Threads::Runs#submit_tool_outputs} for
318
335
  # non-streaming counterpart.
319
336
  #
@@ -3,6 +3,7 @@
3
3
  module OpenAI
4
4
  module Resources
5
5
  class Beta
6
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
6
7
  class Threads
7
8
  # @return [OpenAI::Resources::Beta::Threads::Runs]
8
9
  attr_reader :runs
@@ -10,6 +11,8 @@ module OpenAI
10
11
  # @return [OpenAI::Resources::Beta::Threads::Messages]
11
12
  attr_reader :messages
12
13
 
14
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
15
+ #
13
16
  # Some parameter documentations has been truncated, see
14
17
  # {OpenAI::Models::Beta::ThreadCreateParams} for more details.
15
18
  #
@@ -39,6 +42,8 @@ module OpenAI
39
42
  )
40
43
  end
41
44
 
45
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
46
+ #
42
47
  # Retrieves a thread.
43
48
  #
44
49
  # @overload retrieve(thread_id, request_options: {})
@@ -59,6 +64,8 @@ module OpenAI
59
64
  )
60
65
  end
61
66
 
67
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
68
+ #
62
69
  # Some parameter documentations has been truncated, see
63
70
  # {OpenAI::Models::Beta::ThreadUpdateParams} for more details.
64
71
  #
@@ -88,6 +95,8 @@ module OpenAI
88
95
  )
89
96
  end
90
97
 
98
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
99
+ #
91
100
  # Delete a thread.
92
101
  #
93
102
  # @overload delete(thread_id, request_options: {})
@@ -108,6 +117,8 @@ module OpenAI
108
117
  )
109
118
  end
110
119
 
120
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
121
+ #
111
122
  # See {OpenAI::Resources::Beta::Threads#stream_raw} for streaming counterpart.
112
123
  #
113
124
  # Some parameter documentations has been truncated, see
@@ -166,11 +177,13 @@ module OpenAI
166
177
  options: {extra_headers: {"OpenAI-Beta" => "assistants=v2"}, **options}
167
178
  )
168
179
  end
169
-
180
+
170
181
  def stream
171
182
  raise NotImplementedError.new("higher level helpers are coming soon!")
172
183
  end
173
-
184
+
185
+ # @deprecated The Assistants API is deprecated in favor of the Responses API
186
+ #
174
187
  # See {OpenAI::Resources::Beta::Threads#create_and_run} for non-streaming
175
188
  # counterpart.
176
189
  #
@@ -13,7 +13,7 @@ module OpenAI
13
13
  # @param container_id [String]
14
14
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
15
15
  #
16
- # @return [nil]
16
+ # @return [StringIO]
17
17
  #
18
18
  # @see OpenAI::Models::Containers::Files::ContentRetrieveParams
19
19
  def retrieve(file_id, params)
@@ -25,7 +25,8 @@ module OpenAI
25
25
  @client.request(
26
26
  method: :get,
27
27
  path: ["containers/%1$s/files/%2$s/content", container_id, file_id],
28
- model: NilClass,
28
+ headers: {"accept" => "application/binary"},
29
+ model: StringIO,
29
30
  options: options
30
31
  )
31
32
  end
@@ -242,17 +242,21 @@ module OpenAI
242
242
  )
243
243
  end
244
244
 
245
+ # See {OpenAI::Resources::Responses#retrieve_streaming} for streaming counterpart.
246
+ #
245
247
  # Some parameter documentations has been truncated, see
246
248
  # {OpenAI::Models::Responses::ResponseRetrieveParams} for more details.
247
249
  #
248
250
  # Retrieves a model response with the given ID.
249
251
  #
250
- # @overload retrieve(response_id, include: nil, request_options: {})
252
+ # @overload retrieve(response_id, include: nil, starting_after: nil, request_options: {})
251
253
  #
252
254
  # @param response_id [String] The ID of the response to retrieve.
253
255
  #
254
256
  # @param include [Array<Symbol, OpenAI::Models::Responses::ResponseIncludable>] Additional fields to include in the response. See the `include`
255
257
  #
258
+ # @param starting_after [Integer] The sequence number of the event after which to start streaming.
259
+ #
256
260
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
257
261
  #
258
262
  # @return [OpenAI::Models::Responses::Response]
@@ -260,6 +264,10 @@ module OpenAI
260
264
  # @see OpenAI::Models::Responses::ResponseRetrieveParams
261
265
  def retrieve(response_id, params = {})
262
266
  parsed, options = OpenAI::Responses::ResponseRetrieveParams.dump_request(params)
267
+ if parsed[:stream]
268
+ message = "Please use `#retrieve_streaming` for the streaming use case."
269
+ raise ArgumentError.new(message)
270
+ end
263
271
  @client.request(
264
272
  method: :get,
265
273
  path: ["responses/%1$s", response_id],
@@ -269,6 +277,44 @@ module OpenAI
269
277
  )
270
278
  end
271
279
 
280
+ # See {OpenAI::Resources::Responses#retrieve} for non-streaming counterpart.
281
+ #
282
+ # Some parameter documentations has been truncated, see
283
+ # {OpenAI::Models::Responses::ResponseRetrieveParams} for more details.
284
+ #
285
+ # Retrieves a model response with the given ID.
286
+ #
287
+ # @overload retrieve_streaming(response_id, include: nil, starting_after: nil, request_options: {})
288
+ #
289
+ # @param response_id [String] The ID of the response to retrieve.
290
+ #
291
+ # @param include [Array<Symbol, OpenAI::Models::Responses::ResponseIncludable>] Additional fields to include in the response. See the `include`
292
+ #
293
+ # @param starting_after [Integer] The sequence number of the event after which to start streaming.
294
+ #
295
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
296
+ #
297
+ # @return [OpenAI::Internal::Stream<OpenAI::Models::Responses::ResponseAudioDeltaEvent, OpenAI::Models::Responses::ResponseAudioDoneEvent, OpenAI::Models::Responses::ResponseAudioTranscriptDeltaEvent, OpenAI::Models::Responses::ResponseAudioTranscriptDoneEvent, OpenAI::Models::Responses::ResponseCodeInterpreterCallCodeDeltaEvent, OpenAI::Models::Responses::ResponseCodeInterpreterCallCodeDoneEvent, OpenAI::Models::Responses::ResponseCodeInterpreterCallCompletedEvent, OpenAI::Models::Responses::ResponseCodeInterpreterCallInProgressEvent, OpenAI::Models::Responses::ResponseCodeInterpreterCallInterpretingEvent, OpenAI::Models::Responses::ResponseCompletedEvent, OpenAI::Models::Responses::ResponseContentPartAddedEvent, OpenAI::Models::Responses::ResponseContentPartDoneEvent, OpenAI::Models::Responses::ResponseCreatedEvent, OpenAI::Models::Responses::ResponseErrorEvent, OpenAI::Models::Responses::ResponseFileSearchCallCompletedEvent, OpenAI::Models::Responses::ResponseFileSearchCallInProgressEvent, OpenAI::Models::Responses::ResponseFileSearchCallSearchingEvent, OpenAI::Models::Responses::ResponseFunctionCallArgumentsDeltaEvent, OpenAI::Models::Responses::ResponseFunctionCallArgumentsDoneEvent, OpenAI::Models::Responses::ResponseInProgressEvent, OpenAI::Models::Responses::ResponseFailedEvent, OpenAI::Models::Responses::ResponseIncompleteEvent, OpenAI::Models::Responses::ResponseOutputItemAddedEvent, OpenAI::Models::Responses::ResponseOutputItemDoneEvent, OpenAI::Models::Responses::ResponseReasoningSummaryPartAddedEvent, OpenAI::Models::Responses::ResponseReasoningSummaryPartDoneEvent, OpenAI::Models::Responses::ResponseReasoningSummaryTextDeltaEvent, OpenAI::Models::Responses::ResponseReasoningSummaryTextDoneEvent, OpenAI::Models::Responses::ResponseRefusalDeltaEvent, OpenAI::Models::Responses::ResponseRefusalDoneEvent, OpenAI::Models::Responses::ResponseTextDeltaEvent, OpenAI::Models::Responses::ResponseTextDoneEvent, OpenAI::Models::Responses::ResponseWebSearchCallCompletedEvent, OpenAI::Models::Responses::ResponseWebSearchCallInProgressEvent, OpenAI::Models::Responses::ResponseWebSearchCallSearchingEvent, OpenAI::Models::Responses::ResponseImageGenCallCompletedEvent, OpenAI::Models::Responses::ResponseImageGenCallGeneratingEvent, OpenAI::Models::Responses::ResponseImageGenCallInProgressEvent, OpenAI::Models::Responses::ResponseImageGenCallPartialImageEvent, OpenAI::Models::Responses::ResponseMcpCallArgumentsDeltaEvent, OpenAI::Models::Responses::ResponseMcpCallArgumentsDoneEvent, OpenAI::Models::Responses::ResponseMcpCallCompletedEvent, OpenAI::Models::Responses::ResponseMcpCallFailedEvent, OpenAI::Models::Responses::ResponseMcpCallInProgressEvent, OpenAI::Models::Responses::ResponseMcpListToolsCompletedEvent, OpenAI::Models::Responses::ResponseMcpListToolsFailedEvent, OpenAI::Models::Responses::ResponseMcpListToolsInProgressEvent, OpenAI::Models::Responses::ResponseOutputTextAnnotationAddedEvent, OpenAI::Models::Responses::ResponseQueuedEvent, OpenAI::Models::Responses::ResponseReasoningDeltaEvent, OpenAI::Models::Responses::ResponseReasoningDoneEvent, OpenAI::Models::Responses::ResponseReasoningSummaryDeltaEvent, OpenAI::Models::Responses::ResponseReasoningSummaryDoneEvent>]
298
+ #
299
+ # @see OpenAI::Models::Responses::ResponseRetrieveParams
300
+ def retrieve_streaming(response_id, params = {})
301
+ parsed, options = OpenAI::Responses::ResponseRetrieveParams.dump_request(params)
302
+ unless parsed.fetch(:stream, true)
303
+ message = "Please use `#retrieve` for the non-streaming use case."
304
+ raise ArgumentError.new(message)
305
+ end
306
+ parsed.store(:stream, true)
307
+ @client.request(
308
+ method: :get,
309
+ path: ["responses/%1$s", response_id],
310
+ query: parsed,
311
+ headers: {"accept" => "text/event-stream"},
312
+ stream: OpenAI::Internal::Stream,
313
+ model: OpenAI::Responses::ResponseStreamEvent,
314
+ options: options
315
+ )
316
+ end
317
+
272
318
  # Deletes a model response with the given ID.
273
319
  #
274
320
  # @overload delete(response_id, request_options: {})
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.4.1"
4
+ VERSION = "0.5.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -16,7 +16,9 @@ require "time"
16
16
  require "uri"
17
17
  # We already ship the preferred sorbet manifests in the package itself.
18
18
  # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
19
- if Object.const_defined?(:Tapioca) && caller.chain([$PROGRAM_NAME]).chain(ARGV).grep(/tapioca/)
19
+ if Object.const_defined?(:Tapioca) &&
20
+ caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
21
+ ARGV.none?(/dsl/)
20
22
  return
21
23
  end
22
24
 
@@ -38,6 +38,21 @@ module OpenAI
38
38
  sig { returns(Symbol) }
39
39
  attr_accessor :type
40
40
 
41
+ sig do
42
+ returns(
43
+ T.nilable(T::Array[OpenAI::Responses::ResponseOutputText::Logprob])
44
+ )
45
+ end
46
+ attr_reader :logprobs
47
+
48
+ sig do
49
+ params(
50
+ logprobs:
51
+ T::Array[OpenAI::Responses::ResponseOutputText::Logprob::OrHash]
52
+ ).void
53
+ end
54
+ attr_writer :logprobs
55
+
41
56
  # A text output from the model.
42
57
  sig do
43
58
  params(
@@ -50,6 +65,8 @@ module OpenAI
50
65
  )
51
66
  ],
52
67
  text: String,
68
+ logprobs:
69
+ T::Array[OpenAI::Responses::ResponseOutputText::Logprob::OrHash],
53
70
  type: Symbol
54
71
  ).returns(T.attached_class)
55
72
  end
@@ -58,6 +75,7 @@ module OpenAI
58
75
  annotations:,
59
76
  # The text output from the model.
60
77
  text:,
78
+ logprobs: nil,
61
79
  # The type of the output text. Always `output_text`.
62
80
  type: :output_text
63
81
  )
@@ -75,7 +93,8 @@ module OpenAI
75
93
  )
76
94
  ],
77
95
  text: String,
78
- type: Symbol
96
+ type: Symbol,
97
+ logprobs: T::Array[OpenAI::Responses::ResponseOutputText::Logprob]
79
98
  }
80
99
  )
81
100
  end
@@ -265,6 +284,103 @@ module OpenAI
265
284
  def self.variants
266
285
  end
267
286
  end
287
+
288
+ class Logprob < OpenAI::Internal::Type::BaseModel
289
+ OrHash =
290
+ T.type_alias do
291
+ T.any(
292
+ OpenAI::Responses::ResponseOutputText::Logprob,
293
+ OpenAI::Internal::AnyHash
294
+ )
295
+ end
296
+
297
+ sig { returns(String) }
298
+ attr_accessor :token
299
+
300
+ sig { returns(T::Array[Integer]) }
301
+ attr_accessor :bytes
302
+
303
+ sig { returns(Float) }
304
+ attr_accessor :logprob
305
+
306
+ sig do
307
+ returns(
308
+ T::Array[
309
+ OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob
310
+ ]
311
+ )
312
+ end
313
+ attr_accessor :top_logprobs
314
+
315
+ # The log probability of a token.
316
+ sig do
317
+ params(
318
+ token: String,
319
+ bytes: T::Array[Integer],
320
+ logprob: Float,
321
+ top_logprobs:
322
+ T::Array[
323
+ OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob::OrHash
324
+ ]
325
+ ).returns(T.attached_class)
326
+ end
327
+ def self.new(token:, bytes:, logprob:, top_logprobs:)
328
+ end
329
+
330
+ sig do
331
+ override.returns(
332
+ {
333
+ token: String,
334
+ bytes: T::Array[Integer],
335
+ logprob: Float,
336
+ top_logprobs:
337
+ T::Array[
338
+ OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob
339
+ ]
340
+ }
341
+ )
342
+ end
343
+ def to_hash
344
+ end
345
+
346
+ class TopLogprob < OpenAI::Internal::Type::BaseModel
347
+ OrHash =
348
+ T.type_alias do
349
+ T.any(
350
+ OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob,
351
+ OpenAI::Internal::AnyHash
352
+ )
353
+ end
354
+
355
+ sig { returns(String) }
356
+ attr_accessor :token
357
+
358
+ sig { returns(T::Array[Integer]) }
359
+ attr_accessor :bytes
360
+
361
+ sig { returns(Float) }
362
+ attr_accessor :logprob
363
+
364
+ # The top log probability of a token.
365
+ sig do
366
+ params(
367
+ token: String,
368
+ bytes: T::Array[Integer],
369
+ logprob: Float
370
+ ).returns(T.attached_class)
371
+ end
372
+ def self.new(token:, bytes:, logprob:)
373
+ end
374
+
375
+ sig do
376
+ override.returns(
377
+ { token: String, bytes: T::Array[Integer], logprob: Float }
378
+ )
379
+ end
380
+ def to_hash
381
+ end
382
+ end
383
+ end
268
384
  end
269
385
  end
270
386
  end
@@ -31,9 +31,17 @@ module OpenAI
31
31
  end
32
32
  attr_writer :include
33
33
 
34
+ # The sequence number of the event after which to start streaming.
35
+ sig { returns(T.nilable(Integer)) }
36
+ attr_reader :starting_after
37
+
38
+ sig { params(starting_after: Integer).void }
39
+ attr_writer :starting_after
40
+
34
41
  sig do
35
42
  params(
36
43
  include: T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol],
44
+ starting_after: Integer,
37
45
  request_options: OpenAI::RequestOptions::OrHash
38
46
  ).returns(T.attached_class)
39
47
  end
@@ -41,6 +49,8 @@ module OpenAI
41
49
  # Additional fields to include in the response. See the `include` parameter for
42
50
  # Response creation above for more information.
43
51
  include: nil,
52
+ # The sequence number of the event after which to start streaming.
53
+ starting_after: nil,
44
54
  request_options: {}
45
55
  )
46
56
  end
@@ -50,6 +60,7 @@ module OpenAI
50
60
  {
51
61
  include:
52
62
  T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol],
63
+ starting_after: Integer,
53
64
  request_options: OpenAI::RequestOptions
54
65
  }
55
66
  )
@@ -11,7 +11,7 @@ module OpenAI
11
11
  file_id: String,
12
12
  container_id: String,
13
13
  request_options: OpenAI::RequestOptions::OrHash
14
- ).void
14
+ ).returns(StringIO)
15
15
  end
16
16
  def retrieve(file_id, container_id:, request_options: {})
17
17
  end
@@ -428,11 +428,15 @@ module OpenAI
428
428
  )
429
429
  end
430
430
 
431
+ # See {OpenAI::Resources::Responses#retrieve_streaming} for streaming counterpart.
432
+ #
431
433
  # Retrieves a model response with the given ID.
432
434
  sig do
433
435
  params(
434
436
  response_id: String,
435
437
  include: T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol],
438
+ starting_after: Integer,
439
+ stream: T.noreturn,
436
440
  request_options: OpenAI::RequestOptions::OrHash
437
441
  ).returns(OpenAI::Responses::Response)
438
442
  end
@@ -442,6 +446,42 @@ module OpenAI
442
446
  # Additional fields to include in the response. See the `include` parameter for
443
447
  # Response creation above for more information.
444
448
  include: nil,
449
+ # The sequence number of the event after which to start streaming.
450
+ starting_after: nil,
451
+ # There is no need to provide `stream:`. Instead, use `#retrieve_streaming` or
452
+ # `#retrieve` for streaming and non-streaming use cases, respectively.
453
+ stream: false,
454
+ request_options: {}
455
+ )
456
+ end
457
+
458
+ # See {OpenAI::Resources::Responses#retrieve} for non-streaming counterpart.
459
+ #
460
+ # Retrieves a model response with the given ID.
461
+ sig do
462
+ params(
463
+ response_id: String,
464
+ include: T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol],
465
+ starting_after: Integer,
466
+ stream: T.noreturn,
467
+ request_options: OpenAI::RequestOptions::OrHash
468
+ ).returns(
469
+ OpenAI::Internal::Stream[
470
+ OpenAI::Responses::ResponseStreamEvent::Variants
471
+ ]
472
+ )
473
+ end
474
+ def retrieve_streaming(
475
+ # The ID of the response to retrieve.
476
+ response_id,
477
+ # Additional fields to include in the response. See the `include` parameter for
478
+ # Response creation above for more information.
479
+ include: nil,
480
+ # The sequence number of the event after which to start streaming.
481
+ starting_after: nil,
482
+ # There is no need to provide `stream:`. Instead, use `#retrieve_streaming` or
483
+ # `#retrieve` for streaming and non-streaming use cases, respectively.
484
+ stream: true,
445
485
  request_options: {}
446
486
  )
447
487
  end
@@ -5,7 +5,8 @@ module OpenAI
5
5
  {
6
6
  annotations: ::Array[OpenAI::Models::Responses::ResponseOutputText::annotation],
7
7
  text: String,
8
- type: :output_text
8
+ type: :output_text,
9
+ logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob]
9
10
  }
10
11
 
11
12
  class ResponseOutputText < OpenAI::Internal::Type::BaseModel
@@ -15,16 +16,24 @@ module OpenAI
15
16
 
16
17
  attr_accessor type: :output_text
17
18
 
19
+ attr_reader logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob]?
20
+
21
+ def logprobs=: (
22
+ ::Array[OpenAI::Responses::ResponseOutputText::Logprob]
23
+ ) -> ::Array[OpenAI::Responses::ResponseOutputText::Logprob]
24
+
18
25
  def initialize: (
19
26
  annotations: ::Array[OpenAI::Models::Responses::ResponseOutputText::annotation],
20
27
  text: String,
28
+ ?logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob],
21
29
  ?type: :output_text
22
30
  ) -> void
23
31
 
24
32
  def to_hash: -> {
25
33
  annotations: ::Array[OpenAI::Models::Responses::ResponseOutputText::annotation],
26
34
  text: String,
27
- type: :output_text
35
+ type: :output_text,
36
+ logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob]
28
37
  }
29
38
 
30
39
  type annotation =
@@ -119,6 +128,61 @@ module OpenAI
119
128
 
120
129
  def self?.variants: -> ::Array[OpenAI::Models::Responses::ResponseOutputText::annotation]
121
130
  end
131
+
132
+ type logprob =
133
+ {
134
+ token: String,
135
+ bytes: ::Array[Integer],
136
+ logprob: Float,
137
+ top_logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob]
138
+ }
139
+
140
+ class Logprob < OpenAI::Internal::Type::BaseModel
141
+ attr_accessor token: String
142
+
143
+ attr_accessor bytes: ::Array[Integer]
144
+
145
+ attr_accessor logprob: Float
146
+
147
+ attr_accessor top_logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob]
148
+
149
+ def initialize: (
150
+ token: String,
151
+ bytes: ::Array[Integer],
152
+ logprob: Float,
153
+ top_logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob]
154
+ ) -> void
155
+
156
+ def to_hash: -> {
157
+ token: String,
158
+ bytes: ::Array[Integer],
159
+ logprob: Float,
160
+ top_logprobs: ::Array[OpenAI::Responses::ResponseOutputText::Logprob::TopLogprob]
161
+ }
162
+
163
+ type top_logprob =
164
+ { token: String, bytes: ::Array[Integer], logprob: Float }
165
+
166
+ class TopLogprob < OpenAI::Internal::Type::BaseModel
167
+ attr_accessor token: String
168
+
169
+ attr_accessor bytes: ::Array[Integer]
170
+
171
+ attr_accessor logprob: Float
172
+
173
+ def initialize: (
174
+ token: String,
175
+ bytes: ::Array[Integer],
176
+ logprob: Float
177
+ ) -> void
178
+
179
+ def to_hash: -> {
180
+ token: String,
181
+ bytes: ::Array[Integer],
182
+ logprob: Float
183
+ }
184
+ end
185
+ end
122
186
  end
123
187
  end
124
188
  end
@@ -2,7 +2,10 @@ module OpenAI
2
2
  module Models
3
3
  module Responses
4
4
  type response_retrieve_params =
5
- { include: ::Array[OpenAI::Models::Responses::response_includable] }
5
+ {
6
+ include: ::Array[OpenAI::Models::Responses::response_includable],
7
+ starting_after: Integer
8
+ }
6
9
  & OpenAI::Internal::Type::request_parameters
7
10
 
8
11
  class ResponseRetrieveParams < OpenAI::Internal::Type::BaseModel
@@ -15,13 +18,19 @@ module OpenAI
15
18
  ::Array[OpenAI::Models::Responses::response_includable]
16
19
  ) -> ::Array[OpenAI::Models::Responses::response_includable]
17
20
 
21
+ attr_reader starting_after: Integer?
22
+
23
+ def starting_after=: (Integer) -> Integer
24
+
18
25
  def initialize: (
19
26
  ?include: ::Array[OpenAI::Models::Responses::response_includable],
27
+ ?starting_after: Integer,
20
28
  ?request_options: OpenAI::request_opts
21
29
  ) -> void
22
30
 
23
31
  def to_hash: -> {
24
32
  include: ::Array[OpenAI::Models::Responses::response_includable],
33
+ starting_after: Integer,
25
34
  request_options: OpenAI::RequestOptions
26
35
  }
27
36
  end
@@ -7,7 +7,7 @@ module OpenAI
7
7
  String file_id,
8
8
  container_id: String,
9
9
  ?request_options: OpenAI::request_opts
10
- ) -> nil
10
+ ) -> StringIO
11
11
 
12
12
  def initialize: (client: OpenAI::Client) -> void
13
13
  end
@@ -52,9 +52,17 @@ module OpenAI
52
52
  def retrieve: (
53
53
  String response_id,
54
54
  ?include: ::Array[OpenAI::Models::Responses::response_includable],
55
+ ?starting_after: Integer,
55
56
  ?request_options: OpenAI::request_opts
56
57
  ) -> OpenAI::Responses::Response
57
58
 
59
+ def retrieve_streaming: (
60
+ String response_id,
61
+ ?include: ::Array[OpenAI::Models::Responses::response_includable],
62
+ ?starting_after: Integer,
63
+ ?request_options: OpenAI::request_opts
64
+ ) -> OpenAI::Internal::Stream[OpenAI::Models::Responses::response_stream_event]
65
+
58
66
  def delete: (
59
67
  String response_id,
60
68
  ?request_options: OpenAI::request_opts
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-23 00:00:00.000000000 Z
11
+ date: 2025-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool