openai 0.13.0 → 0.14.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +1 -1
  4. data/lib/openai/helpers/structured_output/json_schema_converter.rb +34 -10
  5. data/lib/openai/models/eval_create_params.rb +50 -5
  6. data/lib/openai/models/evals/create_eval_completions_run_data_source.rb +50 -5
  7. data/lib/openai/models/evals/run_cancel_response.rb +48 -5
  8. data/lib/openai/models/evals/run_create_params.rb +50 -5
  9. data/lib/openai/models/evals/run_create_response.rb +48 -5
  10. data/lib/openai/models/evals/run_list_response.rb +48 -5
  11. data/lib/openai/models/evals/run_retrieve_response.rb +48 -5
  12. data/lib/openai/models/graders/label_model_grader.rb +48 -5
  13. data/lib/openai/models/graders/score_model_grader.rb +48 -5
  14. data/lib/openai/models/image_edit_completed_event.rb +198 -0
  15. data/lib/openai/models/image_edit_params.rb +36 -1
  16. data/lib/openai/models/image_edit_partial_image_event.rb +135 -0
  17. data/lib/openai/models/image_edit_stream_event.rb +21 -0
  18. data/lib/openai/models/image_gen_completed_event.rb +198 -0
  19. data/lib/openai/models/image_gen_partial_image_event.rb +135 -0
  20. data/lib/openai/models/image_gen_stream_event.rb +21 -0
  21. data/lib/openai/models/image_generate_params.rb +13 -1
  22. data/lib/openai/models/images_response.rb +3 -0
  23. data/lib/openai/models/responses/response_output_refusal.rb +2 -2
  24. data/lib/openai/models/responses/tool.rb +30 -1
  25. data/lib/openai/models.rb +12 -0
  26. data/lib/openai/resources/images.rb +140 -2
  27. data/lib/openai/version.rb +1 -1
  28. data/lib/openai.rb +6 -0
  29. data/rbi/openai/helpers/structured_output/json_schema_converter.rbi +4 -0
  30. data/rbi/openai/models/eval_create_params.rbi +76 -7
  31. data/rbi/openai/models/evals/create_eval_completions_run_data_source.rbi +76 -7
  32. data/rbi/openai/models/evals/run_cancel_response.rbi +70 -5
  33. data/rbi/openai/models/evals/run_create_params.rbi +76 -7
  34. data/rbi/openai/models/evals/run_create_response.rbi +70 -5
  35. data/rbi/openai/models/evals/run_list_response.rbi +70 -5
  36. data/rbi/openai/models/evals/run_retrieve_response.rbi +70 -5
  37. data/rbi/openai/models/graders/label_model_grader.rbi +74 -7
  38. data/rbi/openai/models/graders/score_model_grader.rbi +74 -7
  39. data/rbi/openai/models/image_edit_completed_event.rbi +346 -0
  40. data/rbi/openai/models/image_edit_params.rbi +51 -0
  41. data/rbi/openai/models/image_edit_partial_image_event.rbi +249 -0
  42. data/rbi/openai/models/image_edit_stream_event.rbi +22 -0
  43. data/rbi/openai/models/image_gen_completed_event.rbi +339 -0
  44. data/rbi/openai/models/image_gen_partial_image_event.rbi +243 -0
  45. data/rbi/openai/models/image_gen_stream_event.rbi +22 -0
  46. data/rbi/openai/models/image_generate_params.rbi +12 -0
  47. data/rbi/openai/models/responses/response_output_refusal.rbi +2 -2
  48. data/rbi/openai/models/responses/tool.rbi +61 -0
  49. data/rbi/openai/models.rbi +12 -0
  50. data/rbi/openai/resources/images.rbi +225 -0
  51. data/sig/openai/models/eval_create_params.rbs +29 -0
  52. data/sig/openai/models/evals/create_eval_completions_run_data_source.rbs +29 -0
  53. data/sig/openai/models/evals/run_cancel_response.rbs +33 -0
  54. data/sig/openai/models/evals/run_create_params.rbs +33 -0
  55. data/sig/openai/models/evals/run_create_response.rbs +33 -0
  56. data/sig/openai/models/evals/run_list_response.rbs +33 -0
  57. data/sig/openai/models/evals/run_retrieve_response.rbs +33 -0
  58. data/sig/openai/models/graders/label_model_grader.rbs +29 -0
  59. data/sig/openai/models/graders/score_model_grader.rbs +29 -0
  60. data/sig/openai/models/image_edit_completed_event.rbs +150 -0
  61. data/sig/openai/models/image_edit_params.rbs +21 -0
  62. data/sig/openai/models/image_edit_partial_image_event.rbs +105 -0
  63. data/sig/openai/models/image_edit_stream_event.rbs +12 -0
  64. data/sig/openai/models/image_gen_completed_event.rbs +150 -0
  65. data/sig/openai/models/image_gen_partial_image_event.rbs +105 -0
  66. data/sig/openai/models/image_gen_stream_event.rbs +12 -0
  67. data/sig/openai/models/image_generate_params.rbs +5 -0
  68. data/sig/openai/models/responses/tool.rbs +16 -0
  69. data/sig/openai/models.rbs +12 -0
  70. data/sig/openai/resources/images.rbs +38 -0
  71. metadata +20 -2
@@ -0,0 +1,249 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ class ImageEditPartialImageEvent < OpenAI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(OpenAI::ImageEditPartialImageEvent, OpenAI::Internal::AnyHash)
9
+ end
10
+
11
+ # Base64-encoded partial image data, suitable for rendering as an image.
12
+ sig { returns(String) }
13
+ attr_accessor :b64_json
14
+
15
+ # The background setting for the requested edited image.
16
+ sig do
17
+ returns(OpenAI::ImageEditPartialImageEvent::Background::TaggedSymbol)
18
+ end
19
+ attr_accessor :background
20
+
21
+ # The Unix timestamp when the event was created.
22
+ sig { returns(Integer) }
23
+ attr_accessor :created_at
24
+
25
+ # The output format for the requested edited image.
26
+ sig do
27
+ returns(OpenAI::ImageEditPartialImageEvent::OutputFormat::TaggedSymbol)
28
+ end
29
+ attr_accessor :output_format
30
+
31
+ # 0-based index for the partial image (streaming).
32
+ sig { returns(Integer) }
33
+ attr_accessor :partial_image_index
34
+
35
+ # The quality setting for the requested edited image.
36
+ sig { returns(OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol) }
37
+ attr_accessor :quality
38
+
39
+ # The size of the requested edited image.
40
+ sig { returns(OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol) }
41
+ attr_accessor :size
42
+
43
+ # The type of the event. Always `image_edit.partial_image`.
44
+ sig { returns(Symbol) }
45
+ attr_accessor :type
46
+
47
+ # Emitted when a partial image is available during image editing streaming.
48
+ sig do
49
+ params(
50
+ b64_json: String,
51
+ background: OpenAI::ImageEditPartialImageEvent::Background::OrSymbol,
52
+ created_at: Integer,
53
+ output_format:
54
+ OpenAI::ImageEditPartialImageEvent::OutputFormat::OrSymbol,
55
+ partial_image_index: Integer,
56
+ quality: OpenAI::ImageEditPartialImageEvent::Quality::OrSymbol,
57
+ size: OpenAI::ImageEditPartialImageEvent::Size::OrSymbol,
58
+ type: Symbol
59
+ ).returns(T.attached_class)
60
+ end
61
+ def self.new(
62
+ # Base64-encoded partial image data, suitable for rendering as an image.
63
+ b64_json:,
64
+ # The background setting for the requested edited image.
65
+ background:,
66
+ # The Unix timestamp when the event was created.
67
+ created_at:,
68
+ # The output format for the requested edited image.
69
+ output_format:,
70
+ # 0-based index for the partial image (streaming).
71
+ partial_image_index:,
72
+ # The quality setting for the requested edited image.
73
+ quality:,
74
+ # The size of the requested edited image.
75
+ size:,
76
+ # The type of the event. Always `image_edit.partial_image`.
77
+ type: :"image_edit.partial_image"
78
+ )
79
+ end
80
+
81
+ sig do
82
+ override.returns(
83
+ {
84
+ b64_json: String,
85
+ background:
86
+ OpenAI::ImageEditPartialImageEvent::Background::TaggedSymbol,
87
+ created_at: Integer,
88
+ output_format:
89
+ OpenAI::ImageEditPartialImageEvent::OutputFormat::TaggedSymbol,
90
+ partial_image_index: Integer,
91
+ quality: OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol,
92
+ size: OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol,
93
+ type: Symbol
94
+ }
95
+ )
96
+ end
97
+ def to_hash
98
+ end
99
+
100
+ # The background setting for the requested edited image.
101
+ module Background
102
+ extend OpenAI::Internal::Type::Enum
103
+
104
+ TaggedSymbol =
105
+ T.type_alias do
106
+ T.all(Symbol, OpenAI::ImageEditPartialImageEvent::Background)
107
+ end
108
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
109
+
110
+ TRANSPARENT =
111
+ T.let(
112
+ :transparent,
113
+ OpenAI::ImageEditPartialImageEvent::Background::TaggedSymbol
114
+ )
115
+ OPAQUE =
116
+ T.let(
117
+ :opaque,
118
+ OpenAI::ImageEditPartialImageEvent::Background::TaggedSymbol
119
+ )
120
+ AUTO =
121
+ T.let(
122
+ :auto,
123
+ OpenAI::ImageEditPartialImageEvent::Background::TaggedSymbol
124
+ )
125
+
126
+ sig do
127
+ override.returns(
128
+ T::Array[
129
+ OpenAI::ImageEditPartialImageEvent::Background::TaggedSymbol
130
+ ]
131
+ )
132
+ end
133
+ def self.values
134
+ end
135
+ end
136
+
137
+ # The output format for the requested edited image.
138
+ module OutputFormat
139
+ extend OpenAI::Internal::Type::Enum
140
+
141
+ TaggedSymbol =
142
+ T.type_alias do
143
+ T.all(Symbol, OpenAI::ImageEditPartialImageEvent::OutputFormat)
144
+ end
145
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
146
+
147
+ PNG =
148
+ T.let(
149
+ :png,
150
+ OpenAI::ImageEditPartialImageEvent::OutputFormat::TaggedSymbol
151
+ )
152
+ WEBP =
153
+ T.let(
154
+ :webp,
155
+ OpenAI::ImageEditPartialImageEvent::OutputFormat::TaggedSymbol
156
+ )
157
+ JPEG =
158
+ T.let(
159
+ :jpeg,
160
+ OpenAI::ImageEditPartialImageEvent::OutputFormat::TaggedSymbol
161
+ )
162
+
163
+ sig do
164
+ override.returns(
165
+ T::Array[
166
+ OpenAI::ImageEditPartialImageEvent::OutputFormat::TaggedSymbol
167
+ ]
168
+ )
169
+ end
170
+ def self.values
171
+ end
172
+ end
173
+
174
+ # The quality setting for the requested edited image.
175
+ module Quality
176
+ extend OpenAI::Internal::Type::Enum
177
+
178
+ TaggedSymbol =
179
+ T.type_alias do
180
+ T.all(Symbol, OpenAI::ImageEditPartialImageEvent::Quality)
181
+ end
182
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
183
+
184
+ LOW =
185
+ T.let(:low, OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol)
186
+ MEDIUM =
187
+ T.let(
188
+ :medium,
189
+ OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol
190
+ )
191
+ HIGH =
192
+ T.let(
193
+ :high,
194
+ OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol
195
+ )
196
+ AUTO =
197
+ T.let(
198
+ :auto,
199
+ OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol
200
+ )
201
+
202
+ sig do
203
+ override.returns(
204
+ T::Array[OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol]
205
+ )
206
+ end
207
+ def self.values
208
+ end
209
+ end
210
+
211
+ # The size of the requested edited image.
212
+ module Size
213
+ extend OpenAI::Internal::Type::Enum
214
+
215
+ TaggedSymbol =
216
+ T.type_alias do
217
+ T.all(Symbol, OpenAI::ImageEditPartialImageEvent::Size)
218
+ end
219
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
220
+
221
+ SIZE_1024X1024 =
222
+ T.let(
223
+ :"1024x1024",
224
+ OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol
225
+ )
226
+ SIZE_1024X1536 =
227
+ T.let(
228
+ :"1024x1536",
229
+ OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol
230
+ )
231
+ SIZE_1536X1024 =
232
+ T.let(
233
+ :"1536x1024",
234
+ OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol
235
+ )
236
+ AUTO =
237
+ T.let(:auto, OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol)
238
+
239
+ sig do
240
+ override.returns(
241
+ T::Array[OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol]
242
+ )
243
+ end
244
+ def self.values
245
+ end
246
+ end
247
+ end
248
+ end
249
+ end
@@ -0,0 +1,22 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ # Emitted when a partial image is available during image editing streaming.
6
+ module ImageEditStreamEvent
7
+ extend OpenAI::Internal::Type::Union
8
+
9
+ Variants =
10
+ T.type_alias do
11
+ T.any(
12
+ OpenAI::ImageEditPartialImageEvent,
13
+ OpenAI::ImageEditCompletedEvent
14
+ )
15
+ end
16
+
17
+ sig { override.returns(T::Array[OpenAI::ImageEditStreamEvent::Variants]) }
18
+ def self.variants
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,339 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ class ImageGenCompletedEvent < OpenAI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(OpenAI::ImageGenCompletedEvent, OpenAI::Internal::AnyHash)
9
+ end
10
+
11
+ # Base64-encoded image data, suitable for rendering as an image.
12
+ sig { returns(String) }
13
+ attr_accessor :b64_json
14
+
15
+ # The background setting for the generated image.
16
+ sig { returns(OpenAI::ImageGenCompletedEvent::Background::TaggedSymbol) }
17
+ attr_accessor :background
18
+
19
+ # The Unix timestamp when the event was created.
20
+ sig { returns(Integer) }
21
+ attr_accessor :created_at
22
+
23
+ # The output format for the generated image.
24
+ sig do
25
+ returns(OpenAI::ImageGenCompletedEvent::OutputFormat::TaggedSymbol)
26
+ end
27
+ attr_accessor :output_format
28
+
29
+ # The quality setting for the generated image.
30
+ sig { returns(OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol) }
31
+ attr_accessor :quality
32
+
33
+ # The size of the generated image.
34
+ sig { returns(OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol) }
35
+ attr_accessor :size
36
+
37
+ # The type of the event. Always `image_generation.completed`.
38
+ sig { returns(Symbol) }
39
+ attr_accessor :type
40
+
41
+ # For `gpt-image-1` only, the token usage information for the image generation.
42
+ sig { returns(OpenAI::ImageGenCompletedEvent::Usage) }
43
+ attr_reader :usage
44
+
45
+ sig { params(usage: OpenAI::ImageGenCompletedEvent::Usage::OrHash).void }
46
+ attr_writer :usage
47
+
48
+ # Emitted when image generation has completed and the final image is available.
49
+ sig do
50
+ params(
51
+ b64_json: String,
52
+ background: OpenAI::ImageGenCompletedEvent::Background::OrSymbol,
53
+ created_at: Integer,
54
+ output_format: OpenAI::ImageGenCompletedEvent::OutputFormat::OrSymbol,
55
+ quality: OpenAI::ImageGenCompletedEvent::Quality::OrSymbol,
56
+ size: OpenAI::ImageGenCompletedEvent::Size::OrSymbol,
57
+ usage: OpenAI::ImageGenCompletedEvent::Usage::OrHash,
58
+ type: Symbol
59
+ ).returns(T.attached_class)
60
+ end
61
+ def self.new(
62
+ # Base64-encoded image data, suitable for rendering as an image.
63
+ b64_json:,
64
+ # The background setting for the generated image.
65
+ background:,
66
+ # The Unix timestamp when the event was created.
67
+ created_at:,
68
+ # The output format for the generated image.
69
+ output_format:,
70
+ # The quality setting for the generated image.
71
+ quality:,
72
+ # The size of the generated image.
73
+ size:,
74
+ # For `gpt-image-1` only, the token usage information for the image generation.
75
+ usage:,
76
+ # The type of the event. Always `image_generation.completed`.
77
+ type: :"image_generation.completed"
78
+ )
79
+ end
80
+
81
+ sig do
82
+ override.returns(
83
+ {
84
+ b64_json: String,
85
+ background:
86
+ OpenAI::ImageGenCompletedEvent::Background::TaggedSymbol,
87
+ created_at: Integer,
88
+ output_format:
89
+ OpenAI::ImageGenCompletedEvent::OutputFormat::TaggedSymbol,
90
+ quality: OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol,
91
+ size: OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol,
92
+ type: Symbol,
93
+ usage: OpenAI::ImageGenCompletedEvent::Usage
94
+ }
95
+ )
96
+ end
97
+ def to_hash
98
+ end
99
+
100
+ # The background setting for the generated image.
101
+ module Background
102
+ extend OpenAI::Internal::Type::Enum
103
+
104
+ TaggedSymbol =
105
+ T.type_alias do
106
+ T.all(Symbol, OpenAI::ImageGenCompletedEvent::Background)
107
+ end
108
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
109
+
110
+ TRANSPARENT =
111
+ T.let(
112
+ :transparent,
113
+ OpenAI::ImageGenCompletedEvent::Background::TaggedSymbol
114
+ )
115
+ OPAQUE =
116
+ T.let(
117
+ :opaque,
118
+ OpenAI::ImageGenCompletedEvent::Background::TaggedSymbol
119
+ )
120
+ AUTO =
121
+ T.let(:auto, OpenAI::ImageGenCompletedEvent::Background::TaggedSymbol)
122
+
123
+ sig do
124
+ override.returns(
125
+ T::Array[OpenAI::ImageGenCompletedEvent::Background::TaggedSymbol]
126
+ )
127
+ end
128
+ def self.values
129
+ end
130
+ end
131
+
132
+ # The output format for the generated image.
133
+ module OutputFormat
134
+ extend OpenAI::Internal::Type::Enum
135
+
136
+ TaggedSymbol =
137
+ T.type_alias do
138
+ T.all(Symbol, OpenAI::ImageGenCompletedEvent::OutputFormat)
139
+ end
140
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
141
+
142
+ PNG =
143
+ T.let(
144
+ :png,
145
+ OpenAI::ImageGenCompletedEvent::OutputFormat::TaggedSymbol
146
+ )
147
+ WEBP =
148
+ T.let(
149
+ :webp,
150
+ OpenAI::ImageGenCompletedEvent::OutputFormat::TaggedSymbol
151
+ )
152
+ JPEG =
153
+ T.let(
154
+ :jpeg,
155
+ OpenAI::ImageGenCompletedEvent::OutputFormat::TaggedSymbol
156
+ )
157
+
158
+ sig do
159
+ override.returns(
160
+ T::Array[OpenAI::ImageGenCompletedEvent::OutputFormat::TaggedSymbol]
161
+ )
162
+ end
163
+ def self.values
164
+ end
165
+ end
166
+
167
+ # The quality setting for the generated image.
168
+ module Quality
169
+ extend OpenAI::Internal::Type::Enum
170
+
171
+ TaggedSymbol =
172
+ T.type_alias do
173
+ T.all(Symbol, OpenAI::ImageGenCompletedEvent::Quality)
174
+ end
175
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
176
+
177
+ LOW = T.let(:low, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
178
+ MEDIUM =
179
+ T.let(:medium, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
180
+ HIGH =
181
+ T.let(:high, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
182
+ AUTO =
183
+ T.let(:auto, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
184
+
185
+ sig do
186
+ override.returns(
187
+ T::Array[OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol]
188
+ )
189
+ end
190
+ def self.values
191
+ end
192
+ end
193
+
194
+ # The size of the generated image.
195
+ module Size
196
+ extend OpenAI::Internal::Type::Enum
197
+
198
+ TaggedSymbol =
199
+ T.type_alias { T.all(Symbol, OpenAI::ImageGenCompletedEvent::Size) }
200
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
201
+
202
+ SIZE_1024X1024 =
203
+ T.let(
204
+ :"1024x1024",
205
+ OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol
206
+ )
207
+ SIZE_1024X1536 =
208
+ T.let(
209
+ :"1024x1536",
210
+ OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol
211
+ )
212
+ SIZE_1536X1024 =
213
+ T.let(
214
+ :"1536x1024",
215
+ OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol
216
+ )
217
+ AUTO = T.let(:auto, OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol)
218
+
219
+ sig do
220
+ override.returns(
221
+ T::Array[OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol]
222
+ )
223
+ end
224
+ def self.values
225
+ end
226
+ end
227
+
228
+ class Usage < OpenAI::Internal::Type::BaseModel
229
+ OrHash =
230
+ T.type_alias do
231
+ T.any(
232
+ OpenAI::ImageGenCompletedEvent::Usage,
233
+ OpenAI::Internal::AnyHash
234
+ )
235
+ end
236
+
237
+ # The number of tokens (images and text) in the input prompt.
238
+ sig { returns(Integer) }
239
+ attr_accessor :input_tokens
240
+
241
+ # The input tokens detailed information for the image generation.
242
+ sig do
243
+ returns(OpenAI::ImageGenCompletedEvent::Usage::InputTokensDetails)
244
+ end
245
+ attr_reader :input_tokens_details
246
+
247
+ sig do
248
+ params(
249
+ input_tokens_details:
250
+ OpenAI::ImageGenCompletedEvent::Usage::InputTokensDetails::OrHash
251
+ ).void
252
+ end
253
+ attr_writer :input_tokens_details
254
+
255
+ # The number of image tokens in the output image.
256
+ sig { returns(Integer) }
257
+ attr_accessor :output_tokens
258
+
259
+ # The total number of tokens (images and text) used for the image generation.
260
+ sig { returns(Integer) }
261
+ attr_accessor :total_tokens
262
+
263
+ # For `gpt-image-1` only, the token usage information for the image generation.
264
+ sig do
265
+ params(
266
+ input_tokens: Integer,
267
+ input_tokens_details:
268
+ OpenAI::ImageGenCompletedEvent::Usage::InputTokensDetails::OrHash,
269
+ output_tokens: Integer,
270
+ total_tokens: Integer
271
+ ).returns(T.attached_class)
272
+ end
273
+ def self.new(
274
+ # The number of tokens (images and text) in the input prompt.
275
+ input_tokens:,
276
+ # The input tokens detailed information for the image generation.
277
+ input_tokens_details:,
278
+ # The number of image tokens in the output image.
279
+ output_tokens:,
280
+ # The total number of tokens (images and text) used for the image generation.
281
+ total_tokens:
282
+ )
283
+ end
284
+
285
+ sig do
286
+ override.returns(
287
+ {
288
+ input_tokens: Integer,
289
+ input_tokens_details:
290
+ OpenAI::ImageGenCompletedEvent::Usage::InputTokensDetails,
291
+ output_tokens: Integer,
292
+ total_tokens: Integer
293
+ }
294
+ )
295
+ end
296
+ def to_hash
297
+ end
298
+
299
+ class InputTokensDetails < OpenAI::Internal::Type::BaseModel
300
+ OrHash =
301
+ T.type_alias do
302
+ T.any(
303
+ OpenAI::ImageGenCompletedEvent::Usage::InputTokensDetails,
304
+ OpenAI::Internal::AnyHash
305
+ )
306
+ end
307
+
308
+ # The number of image tokens in the input prompt.
309
+ sig { returns(Integer) }
310
+ attr_accessor :image_tokens
311
+
312
+ # The number of text tokens in the input prompt.
313
+ sig { returns(Integer) }
314
+ attr_accessor :text_tokens
315
+
316
+ # The input tokens detailed information for the image generation.
317
+ sig do
318
+ params(image_tokens: Integer, text_tokens: Integer).returns(
319
+ T.attached_class
320
+ )
321
+ end
322
+ def self.new(
323
+ # The number of image tokens in the input prompt.
324
+ image_tokens:,
325
+ # The number of text tokens in the input prompt.
326
+ text_tokens:
327
+ )
328
+ end
329
+
330
+ sig do
331
+ override.returns({ image_tokens: Integer, text_tokens: Integer })
332
+ end
333
+ def to_hash
334
+ end
335
+ end
336
+ end
337
+ end
338
+ end
339
+ end