openai 0.49.1 → 0.51.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: 2f34d18042a6ab2826128026a9c7fb5bd1a93abf9ee6c475a5d168560094677b
4
- data.tar.gz: aa73e8a5f85adfd6b5b6436cfc02cb07d8dea6443a74cf8b755b4298991176b4
3
+ metadata.gz: f54d6873508436a7ccfd29e41959daf2d674ce2b8cc1acd7dfaad857047cd97f
4
+ data.tar.gz: e0831943ff8b7715276e4e37e97236c93d835926eb45abc53c9153d27d74ca2c
5
5
  SHA512:
6
- metadata.gz: 8910aed1db556d26ba8372b674c799936dd12f30c4c00d7c2ca3bbd09fd2df5743e33fae034087d81cfa239ebfe2b0f12821e3884b019c8c6609179489daceeb
7
- data.tar.gz: 8aeabebae2ca9742924adf7dc71037da21ad33b713c0e0c0773f9dcd58b46afa49de0c05fd4dfb636442aa73c357583225e2ee3539396437a0db4680066f6760
6
+ metadata.gz: 7473cc28a620f11a6f0b4af493cbf0c30e4db5b87fbcbe2317b03bba4346962637f47ed58c6ecda6e629cf0a980e3e2f6d960267ebf4213059275bf0f686832e
7
+ data.tar.gz: 28a38eb6efe67d18aa5eadf4ec8ffee010075683d17f739370adafe73c049b81f8bcf93f4b737b7627d1fa2c91f62c00798a23bb466d9ef4081fc3df3247d362
data/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.51.0 (2026-02-24)
4
+
5
+ Full Changelog: [v0.50.0...v0.51.0](https://github.com/openai/openai-ruby/compare/v0.50.0...v0.51.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** add phase ([656f591](https://github.com/openai/openai-ruby/commit/656f5917f52cfbe388f9d706ab372b958301985e))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **api:** fix phase enum ([c055d7b](https://github.com/openai/openai-ruby/commit/c055d7b2fe06a49ad64db6dc880e30f41d42e22d))
15
+ * **api:** phase docs ([766b70c](https://github.com/openai/openai-ruby/commit/766b70cc83834acf57f1d2c31ea5026ff0d70b7f))
16
+
17
+ ## 0.50.0 (2026-02-24)
18
+
19
+ Full Changelog: [v0.49.1...v0.50.0](https://github.com/openai/openai-ruby/compare/v0.49.1...v0.50.0)
20
+
21
+ ### Features
22
+
23
+ * **api:** add gpt-realtime-1.5 and gpt-audio-1.5 models to realtime session ([23a0d24](https://github.com/openai/openai-ruby/commit/23a0d24790e85e300735cdc7481ec907b85dff01))
24
+
3
25
  ## 0.49.1 (2026-02-23)
4
26
 
5
27
  Full Changelog: [v0.49.0...v0.49.1](https://github.com/openai/openai-ruby/compare/v0.49.0...v0.49.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.49.1"
18
+ gem "openai", "~> 0.51.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -312,6 +312,8 @@ module OpenAI
312
312
 
313
313
  variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_REALTIME }
314
314
 
315
+ variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_REALTIME_1_5 }
316
+
315
317
  variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_REALTIME_2025_08_28 }
316
318
 
317
319
  variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_4O_REALTIME_PREVIEW }
@@ -332,6 +334,8 @@ module OpenAI
332
334
 
333
335
  variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_REALTIME_MINI_2025_12_15 }
334
336
 
337
+ variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_AUDIO_1_5 }
338
+
335
339
  variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_AUDIO_MINI }
336
340
 
337
341
  variant const: -> { OpenAI::Models::Realtime::RealtimeSession::Model::GPT_AUDIO_MINI_2025_10_06 }
@@ -348,6 +352,7 @@ module OpenAI
348
352
  # @!group
349
353
 
350
354
  GPT_REALTIME = :"gpt-realtime"
355
+ GPT_REALTIME_1_5 = :"gpt-realtime-1.5"
351
356
  GPT_REALTIME_2025_08_28 = :"gpt-realtime-2025-08-28"
352
357
  GPT_4O_REALTIME_PREVIEW = :"gpt-4o-realtime-preview"
353
358
  GPT_4O_REALTIME_PREVIEW_2024_10_01 = :"gpt-4o-realtime-preview-2024-10-01"
@@ -358,6 +363,7 @@ module OpenAI
358
363
  GPT_REALTIME_MINI = :"gpt-realtime-mini"
359
364
  GPT_REALTIME_MINI_2025_10_06 = :"gpt-realtime-mini-2025-10-06"
360
365
  GPT_REALTIME_MINI_2025_12_15 = :"gpt-realtime-mini-2025-12-15"
366
+ GPT_AUDIO_1_5 = :"gpt-audio-1.5"
361
367
  GPT_AUDIO_MINI = :"gpt-audio-mini"
362
368
  GPT_AUDIO_MINI_2025_10_06 = :"gpt-audio-mini-2025-10-06"
363
369
  GPT_AUDIO_MINI_2025_12_15 = :"gpt-audio-mini-2025-12-15"
@@ -185,6 +185,8 @@ module OpenAI
185
185
 
186
186
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_REALTIME }
187
187
 
188
+ variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_REALTIME_1_5 }
189
+
188
190
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_REALTIME_2025_08_28 }
189
191
 
190
192
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_4O_REALTIME_PREVIEW }
@@ -205,6 +207,8 @@ module OpenAI
205
207
 
206
208
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_REALTIME_MINI_2025_12_15 }
207
209
 
210
+ variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_AUDIO_1_5 }
211
+
208
212
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_AUDIO_MINI }
209
213
 
210
214
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model::GPT_AUDIO_MINI_2025_10_06 }
@@ -221,6 +225,7 @@ module OpenAI
221
225
  # @!group
222
226
 
223
227
  GPT_REALTIME = :"gpt-realtime"
228
+ GPT_REALTIME_1_5 = :"gpt-realtime-1.5"
224
229
  GPT_REALTIME_2025_08_28 = :"gpt-realtime-2025-08-28"
225
230
  GPT_4O_REALTIME_PREVIEW = :"gpt-4o-realtime-preview"
226
231
  GPT_4O_REALTIME_PREVIEW_2024_10_01 = :"gpt-4o-realtime-preview-2024-10-01"
@@ -231,6 +236,7 @@ module OpenAI
231
236
  GPT_REALTIME_MINI = :"gpt-realtime-mini"
232
237
  GPT_REALTIME_MINI_2025_10_06 = :"gpt-realtime-mini-2025-10-06"
233
238
  GPT_REALTIME_MINI_2025_12_15 = :"gpt-realtime-mini-2025-12-15"
239
+ GPT_AUDIO_1_5 = :"gpt-audio-1.5"
234
240
  GPT_AUDIO_MINI = :"gpt-audio-mini"
235
241
  GPT_AUDIO_MINI_2025_10_06 = :"gpt-audio-mini-2025-10-06"
236
242
  GPT_AUDIO_MINI_2025_12_15 = :"gpt-audio-mini-2025-12-15"
@@ -594,6 +594,8 @@ module OpenAI
594
594
 
595
595
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_REALTIME }
596
596
 
597
+ variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_REALTIME_1_5 }
598
+
597
599
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_REALTIME_2025_08_28 }
598
600
 
599
601
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_4O_REALTIME_PREVIEW }
@@ -614,6 +616,8 @@ module OpenAI
614
616
 
615
617
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_REALTIME_MINI_2025_12_15 }
616
618
 
619
+ variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_AUDIO_1_5 }
620
+
617
621
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_AUDIO_MINI }
618
622
 
619
623
  variant const: -> { OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Model::GPT_AUDIO_MINI_2025_10_06 }
@@ -630,6 +634,7 @@ module OpenAI
630
634
  # @!group
631
635
 
632
636
  GPT_REALTIME = :"gpt-realtime"
637
+ GPT_REALTIME_1_5 = :"gpt-realtime-1.5"
633
638
  GPT_REALTIME_2025_08_28 = :"gpt-realtime-2025-08-28"
634
639
  GPT_4O_REALTIME_PREVIEW = :"gpt-4o-realtime-preview"
635
640
  GPT_4O_REALTIME_PREVIEW_2024_10_01 = :"gpt-4o-realtime-preview-2024-10-01"
@@ -640,6 +645,7 @@ module OpenAI
640
645
  GPT_REALTIME_MINI = :"gpt-realtime-mini"
641
646
  GPT_REALTIME_MINI_2025_10_06 = :"gpt-realtime-mini-2025-10-06"
642
647
  GPT_REALTIME_MINI_2025_12_15 = :"gpt-realtime-mini-2025-12-15"
648
+ GPT_AUDIO_1_5 = :"gpt-audio-1.5"
643
649
  GPT_AUDIO_MINI = :"gpt-audio-mini"
644
650
  GPT_AUDIO_MINI_2025_10_06 = :"gpt-audio-mini-2025-10-06"
645
651
  GPT_AUDIO_MINI_2025_12_15 = :"gpt-audio-mini-2025-12-15"
@@ -18,13 +18,24 @@ module OpenAI
18
18
  # @return [Symbol, OpenAI::Models::Responses::EasyInputMessage::Role]
19
19
  required :role, enum: -> { OpenAI::Responses::EasyInputMessage::Role }
20
20
 
21
+ # @!attribute phase
22
+ # The phase of an assistant message.
23
+ #
24
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
25
+ # the final assistant message. For follow-up requests with models like
26
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
27
+ # Omitting it can degrade performance. Not used for user messages.
28
+ #
29
+ # @return [Symbol, OpenAI::Models::Responses::EasyInputMessage::Phase, nil]
30
+ optional :phase, enum: -> { OpenAI::Responses::EasyInputMessage::Phase }, nil?: true
31
+
21
32
  # @!attribute type
22
33
  # The type of the message input. Always `message`.
23
34
  #
24
35
  # @return [Symbol, OpenAI::Models::Responses::EasyInputMessage::Type, nil]
25
36
  optional :type, enum: -> { OpenAI::Responses::EasyInputMessage::Type }
26
37
 
27
- # @!method initialize(content:, role:, type: nil)
38
+ # @!method initialize(content:, role:, phase: nil, type: nil)
28
39
  # Some parameter documentations has been truncated, see
29
40
  # {OpenAI::Models::Responses::EasyInputMessage} for more details.
30
41
  #
@@ -38,6 +49,8 @@ module OpenAI
38
49
  #
39
50
  # @param role [Symbol, OpenAI::Models::Responses::EasyInputMessage::Role] The role of the message input. One of `user`, `assistant`, `system`, or
40
51
  #
52
+ # @param phase [Symbol, OpenAI::Models::Responses::EasyInputMessage::Phase, nil] The phase of an assistant message.
53
+ #
41
54
  # @param type [Symbol, OpenAI::Models::Responses::EasyInputMessage::Type] The type of the message input. Always `message`.
42
55
 
43
56
  # Text, image, or audio input to the model, used to generate a response. Can also
@@ -74,6 +87,24 @@ module OpenAI
74
87
  # @return [Array<Symbol>]
75
88
  end
76
89
 
90
+ # The phase of an assistant message.
91
+ #
92
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
93
+ # the final assistant message. For follow-up requests with models like
94
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
95
+ # Omitting it can degrade performance. Not used for user messages.
96
+ #
97
+ # @see OpenAI::Models::Responses::EasyInputMessage#phase
98
+ module Phase
99
+ extend OpenAI::Internal::Type::Enum
100
+
101
+ COMMENTARY = :commentary
102
+ FINAL_ANSWER = :final_answer
103
+
104
+ # @!method self.values
105
+ # @return [Array<Symbol>]
106
+ end
107
+
77
108
  # The type of the message input. Always `message`.
78
109
  #
79
110
  # @see OpenAI::Models::Responses::EasyInputMessage#type
@@ -42,7 +42,13 @@ module OpenAI
42
42
  # @return [String, nil]
43
43
  optional :previous_response_id, String, nil?: true
44
44
 
45
- # @!method initialize(model:, input: nil, instructions: nil, previous_response_id: nil, request_options: {})
45
+ # @!attribute prompt_cache_key
46
+ # A key to use when reading from or writing to the prompt cache.
47
+ #
48
+ # @return [String, nil]
49
+ optional :prompt_cache_key, String, nil?: true
50
+
51
+ # @!method initialize(model:, input: nil, instructions: nil, previous_response_id: nil, prompt_cache_key: nil, request_options: {})
46
52
  # Some parameter documentations has been truncated, see
47
53
  # {OpenAI::Models::Responses::ResponseCompactParams} for more details.
48
54
  #
@@ -54,6 +60,8 @@ module OpenAI
54
60
  #
55
61
  # @param previous_response_id [String, nil] The unique ID of the previous response to the model. Use this to create multi-tu
56
62
  #
63
+ # @param prompt_cache_key [String, nil] A key to use when reading from or writing to the prompt cache.
64
+ #
57
65
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}]
58
66
 
59
67
  # Model ID used to generate the response, like `gpt-5` or `o3`. OpenAI offers a
@@ -36,7 +36,18 @@ module OpenAI
36
36
  # @return [Symbol, :message]
37
37
  required :type, const: :message
38
38
 
39
- # @!method initialize(id:, content:, status:, role: :assistant, type: :message)
39
+ # @!attribute phase
40
+ # The phase of an assistant message.
41
+ #
42
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
43
+ # the final assistant message. For follow-up requests with models like
44
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
45
+ # Omitting it can degrade performance. Not used for user messages.
46
+ #
47
+ # @return [Symbol, OpenAI::Models::Responses::ResponseOutputMessage::Phase, nil]
48
+ optional :phase, enum: -> { OpenAI::Responses::ResponseOutputMessage::Phase }, nil?: true
49
+
50
+ # @!method initialize(id:, content:, status:, phase: nil, role: :assistant, type: :message)
40
51
  # Some parameter documentations has been truncated, see
41
52
  # {OpenAI::Models::Responses::ResponseOutputMessage} for more details.
42
53
  #
@@ -48,6 +59,8 @@ module OpenAI
48
59
  #
49
60
  # @param status [Symbol, OpenAI::Models::Responses::ResponseOutputMessage::Status] The status of the message input. One of `in_progress`, `completed`, or
50
61
  #
62
+ # @param phase [Symbol, OpenAI::Models::Responses::ResponseOutputMessage::Phase, nil] The phase of an assistant message.
63
+ #
51
64
  # @param role [Symbol, :assistant] The role of the output message. Always `assistant`.
52
65
  #
53
66
  # @param type [Symbol, :message] The type of the output message. Always `message`.
@@ -82,6 +95,24 @@ module OpenAI
82
95
  # @!method self.values
83
96
  # @return [Array<Symbol>]
84
97
  end
98
+
99
+ # The phase of an assistant message.
100
+ #
101
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
102
+ # the final assistant message. For follow-up requests with models like
103
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
104
+ # Omitting it can degrade performance. Not used for user messages.
105
+ #
106
+ # @see OpenAI::Models::Responses::ResponseOutputMessage#phase
107
+ module Phase
108
+ extend OpenAI::Internal::Type::Enum
109
+
110
+ COMMENTARY = :commentary
111
+ FINAL_ANSWER = :final_answer
112
+
113
+ # @!method self.values
114
+ # @return [Array<Symbol>]
115
+ end
85
116
  end
86
117
  end
87
118
  end
@@ -473,7 +473,7 @@ module OpenAI
473
473
  # For ZDR-compatible compaction details, see
474
474
  # [Compaction (advanced)](https://platform.openai.com/docs/guides/conversation-state#compaction-advanced).
475
475
  #
476
- # @overload compact(model:, input: nil, instructions: nil, previous_response_id: nil, request_options: {})
476
+ # @overload compact(model:, input: nil, instructions: nil, previous_response_id: nil, prompt_cache_key: nil, request_options: {})
477
477
  #
478
478
  # @param model [Symbol, String, OpenAI::Models::Responses::ResponseCompactParams::Model, nil] Model ID used to generate the response, like `gpt-5` or `o3`. OpenAI offers a wi
479
479
  #
@@ -483,6 +483,8 @@ module OpenAI
483
483
  #
484
484
  # @param previous_response_id [String, nil] The unique ID of the previous response to the model. Use this to create multi-tu
485
485
  #
486
+ # @param prompt_cache_key [String, nil] A key to use when reading from or writing to the prompt cache.
487
+ #
486
488
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
487
489
  #
488
490
  # @return [OpenAI::Models::Responses::CompactedResponse]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.49.1"
4
+ VERSION = "0.51.0"
5
5
  end
@@ -700,6 +700,11 @@ module OpenAI
700
700
  :"gpt-realtime",
701
701
  OpenAI::Realtime::RealtimeSession::Model::TaggedSymbol
702
702
  )
703
+ GPT_REALTIME_1_5 =
704
+ T.let(
705
+ :"gpt-realtime-1.5",
706
+ OpenAI::Realtime::RealtimeSession::Model::TaggedSymbol
707
+ )
703
708
  GPT_REALTIME_2025_08_28 =
704
709
  T.let(
705
710
  :"gpt-realtime-2025-08-28",
@@ -750,6 +755,11 @@ module OpenAI
750
755
  :"gpt-realtime-mini-2025-12-15",
751
756
  OpenAI::Realtime::RealtimeSession::Model::TaggedSymbol
752
757
  )
758
+ GPT_AUDIO_1_5 =
759
+ T.let(
760
+ :"gpt-audio-1.5",
761
+ OpenAI::Realtime::RealtimeSession::Model::TaggedSymbol
762
+ )
753
763
  GPT_AUDIO_MINI =
754
764
  T.let(
755
765
  :"gpt-audio-mini",
@@ -505,6 +505,11 @@ module OpenAI
505
505
  :"gpt-realtime",
506
506
  OpenAI::Realtime::RealtimeSessionCreateRequest::Model::TaggedSymbol
507
507
  )
508
+ GPT_REALTIME_1_5 =
509
+ T.let(
510
+ :"gpt-realtime-1.5",
511
+ OpenAI::Realtime::RealtimeSessionCreateRequest::Model::TaggedSymbol
512
+ )
508
513
  GPT_REALTIME_2025_08_28 =
509
514
  T.let(
510
515
  :"gpt-realtime-2025-08-28",
@@ -555,6 +560,11 @@ module OpenAI
555
560
  :"gpt-realtime-mini-2025-12-15",
556
561
  OpenAI::Realtime::RealtimeSessionCreateRequest::Model::TaggedSymbol
557
562
  )
563
+ GPT_AUDIO_1_5 =
564
+ T.let(
565
+ :"gpt-audio-1.5",
566
+ OpenAI::Realtime::RealtimeSessionCreateRequest::Model::TaggedSymbol
567
+ )
558
568
  GPT_AUDIO_MINI =
559
569
  T.let(
560
570
  :"gpt-audio-mini",
@@ -1321,6 +1321,11 @@ module OpenAI
1321
1321
  :"gpt-realtime",
1322
1322
  OpenAI::Realtime::RealtimeSessionCreateResponse::Model::TaggedSymbol
1323
1323
  )
1324
+ GPT_REALTIME_1_5 =
1325
+ T.let(
1326
+ :"gpt-realtime-1.5",
1327
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Model::TaggedSymbol
1328
+ )
1324
1329
  GPT_REALTIME_2025_08_28 =
1325
1330
  T.let(
1326
1331
  :"gpt-realtime-2025-08-28",
@@ -1371,6 +1376,11 @@ module OpenAI
1371
1376
  :"gpt-realtime-mini-2025-12-15",
1372
1377
  OpenAI::Realtime::RealtimeSessionCreateResponse::Model::TaggedSymbol
1373
1378
  )
1379
+ GPT_AUDIO_1_5 =
1380
+ T.let(
1381
+ :"gpt-audio-1.5",
1382
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Model::TaggedSymbol
1383
+ )
1374
1384
  GPT_AUDIO_MINI =
1375
1385
  T.let(
1376
1386
  :"gpt-audio-mini",
@@ -22,6 +22,19 @@ module OpenAI
22
22
  sig { returns(OpenAI::Responses::EasyInputMessage::Role::OrSymbol) }
23
23
  attr_accessor :role
24
24
 
25
+ # The phase of an assistant message.
26
+ #
27
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
28
+ # the final assistant message. For follow-up requests with models like
29
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
30
+ # Omitting it can degrade performance. Not used for user messages.
31
+ sig do
32
+ returns(
33
+ T.nilable(OpenAI::Responses::EasyInputMessage::Phase::OrSymbol)
34
+ )
35
+ end
36
+ attr_accessor :phase
37
+
25
38
  # The type of the message input. Always `message`.
26
39
  sig do
27
40
  returns(
@@ -44,6 +57,8 @@ module OpenAI
44
57
  params(
45
58
  content: OpenAI::Responses::EasyInputMessage::Content::Variants,
46
59
  role: OpenAI::Responses::EasyInputMessage::Role::OrSymbol,
60
+ phase:
61
+ T.nilable(OpenAI::Responses::EasyInputMessage::Phase::OrSymbol),
47
62
  type: OpenAI::Responses::EasyInputMessage::Type::OrSymbol
48
63
  ).returns(T.attached_class)
49
64
  end
@@ -54,6 +69,13 @@ module OpenAI
54
69
  # The role of the message input. One of `user`, `assistant`, `system`, or
55
70
  # `developer`.
56
71
  role:,
72
+ # The phase of an assistant message.
73
+ #
74
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
75
+ # the final assistant message. For follow-up requests with models like
76
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
77
+ # Omitting it can degrade performance. Not used for user messages.
78
+ phase: nil,
57
79
  # The type of the message input. Always `message`.
58
80
  type: nil
59
81
  )
@@ -64,6 +86,8 @@ module OpenAI
64
86
  {
65
87
  content: OpenAI::Responses::EasyInputMessage::Content::Variants,
66
88
  role: OpenAI::Responses::EasyInputMessage::Role::OrSymbol,
89
+ phase:
90
+ T.nilable(OpenAI::Responses::EasyInputMessage::Phase::OrSymbol),
67
91
  type: OpenAI::Responses::EasyInputMessage::Type::OrSymbol
68
92
  }
69
93
  )
@@ -134,6 +158,41 @@ module OpenAI
134
158
  end
135
159
  end
136
160
 
161
+ # The phase of an assistant message.
162
+ #
163
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
164
+ # the final assistant message. For follow-up requests with models like
165
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
166
+ # Omitting it can degrade performance. Not used for user messages.
167
+ module Phase
168
+ extend OpenAI::Internal::Type::Enum
169
+
170
+ TaggedSymbol =
171
+ T.type_alias do
172
+ T.all(Symbol, OpenAI::Responses::EasyInputMessage::Phase)
173
+ end
174
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
175
+
176
+ COMMENTARY =
177
+ T.let(
178
+ :commentary,
179
+ OpenAI::Responses::EasyInputMessage::Phase::TaggedSymbol
180
+ )
181
+ FINAL_ANSWER =
182
+ T.let(
183
+ :final_answer,
184
+ OpenAI::Responses::EasyInputMessage::Phase::TaggedSymbol
185
+ )
186
+
187
+ sig do
188
+ override.returns(
189
+ T::Array[OpenAI::Responses::EasyInputMessage::Phase::TaggedSymbol]
190
+ )
191
+ end
192
+ def self.values
193
+ end
194
+ end
195
+
137
196
  # The type of the message input. Always `message`.
138
197
  module Type
139
198
  extend OpenAI::Internal::Type::Enum
@@ -54,6 +54,10 @@ module OpenAI
54
54
  sig { returns(T.nilable(String)) }
55
55
  attr_accessor :previous_response_id
56
56
 
57
+ # A key to use when reading from or writing to the prompt cache.
58
+ sig { returns(T.nilable(String)) }
59
+ attr_accessor :prompt_cache_key
60
+
57
61
  sig do
58
62
  params(
59
63
  model:
@@ -69,6 +73,7 @@ module OpenAI
69
73
  ),
70
74
  instructions: T.nilable(String),
71
75
  previous_response_id: T.nilable(String),
76
+ prompt_cache_key: T.nilable(String),
72
77
  request_options: OpenAI::RequestOptions::OrHash
73
78
  ).returns(T.attached_class)
74
79
  end
@@ -91,6 +96,8 @@ module OpenAI
91
96
  # [conversation state](https://platform.openai.com/docs/guides/conversation-state).
92
97
  # Cannot be used in conjunction with `conversation`.
93
98
  previous_response_id: nil,
99
+ # A key to use when reading from or writing to the prompt cache.
100
+ prompt_cache_key: nil,
94
101
  request_options: {}
95
102
  )
96
103
  end
@@ -111,6 +118,7 @@ module OpenAI
111
118
  ),
112
119
  instructions: T.nilable(String),
113
120
  previous_response_id: T.nilable(String),
121
+ prompt_cache_key: T.nilable(String),
114
122
  request_options: OpenAI::RequestOptions
115
123
  }
116
124
  )
@@ -44,6 +44,19 @@ module OpenAI
44
44
  sig { returns(Symbol) }
45
45
  attr_accessor :type
46
46
 
47
+ # The phase of an assistant message.
48
+ #
49
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
50
+ # the final assistant message. For follow-up requests with models like
51
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
52
+ # Omitting it can degrade performance. Not used for user messages.
53
+ sig do
54
+ returns(
55
+ T.nilable(OpenAI::Responses::ResponseOutputMessage::Phase::OrSymbol)
56
+ )
57
+ end
58
+ attr_accessor :phase
59
+
47
60
  # An output message from the model.
48
61
  sig do
49
62
  params(
@@ -56,6 +69,10 @@ module OpenAI
56
69
  )
57
70
  ],
58
71
  status: OpenAI::Responses::ResponseOutputMessage::Status::OrSymbol,
72
+ phase:
73
+ T.nilable(
74
+ OpenAI::Responses::ResponseOutputMessage::Phase::OrSymbol
75
+ ),
59
76
  role: Symbol,
60
77
  type: Symbol
61
78
  ).returns(T.attached_class)
@@ -68,6 +85,13 @@ module OpenAI
68
85
  # The status of the message input. One of `in_progress`, `completed`, or
69
86
  # `incomplete`. Populated when input items are returned via API.
70
87
  status:,
88
+ # The phase of an assistant message.
89
+ #
90
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
91
+ # the final assistant message. For follow-up requests with models like
92
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
93
+ # Omitting it can degrade performance. Not used for user messages.
94
+ phase: nil,
71
95
  # The role of the output message. Always `assistant`.
72
96
  role: :assistant,
73
97
  # The type of the output message. Always `message`.
@@ -89,7 +113,11 @@ module OpenAI
89
113
  role: Symbol,
90
114
  status:
91
115
  OpenAI::Responses::ResponseOutputMessage::Status::OrSymbol,
92
- type: Symbol
116
+ type: Symbol,
117
+ phase:
118
+ T.nilable(
119
+ OpenAI::Responses::ResponseOutputMessage::Phase::OrSymbol
120
+ )
93
121
  }
94
122
  )
95
123
  end
@@ -156,6 +184,43 @@ module OpenAI
156
184
  def self.values
157
185
  end
158
186
  end
187
+
188
+ # The phase of an assistant message.
189
+ #
190
+ # Use `commentary` for an intermediate assistant message and `final_answer` for
191
+ # the final assistant message. For follow-up requests with models like
192
+ # `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages.
193
+ # Omitting it can degrade performance. Not used for user messages.
194
+ module Phase
195
+ extend OpenAI::Internal::Type::Enum
196
+
197
+ TaggedSymbol =
198
+ T.type_alias do
199
+ T.all(Symbol, OpenAI::Responses::ResponseOutputMessage::Phase)
200
+ end
201
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
202
+
203
+ COMMENTARY =
204
+ T.let(
205
+ :commentary,
206
+ OpenAI::Responses::ResponseOutputMessage::Phase::TaggedSymbol
207
+ )
208
+ FINAL_ANSWER =
209
+ T.let(
210
+ :final_answer,
211
+ OpenAI::Responses::ResponseOutputMessage::Phase::TaggedSymbol
212
+ )
213
+
214
+ sig do
215
+ override.returns(
216
+ T::Array[
217
+ OpenAI::Responses::ResponseOutputMessage::Phase::TaggedSymbol
218
+ ]
219
+ )
220
+ end
221
+ def self.values
222
+ end
223
+ end
159
224
  end
160
225
  end
161
226
  end
@@ -981,6 +981,7 @@ module OpenAI
981
981
  ),
982
982
  instructions: T.nilable(String),
983
983
  previous_response_id: T.nilable(String),
984
+ prompt_cache_key: T.nilable(String),
984
985
  request_options: OpenAI::RequestOptions::OrHash
985
986
  ).returns(OpenAI::Responses::CompactedResponse)
986
987
  end
@@ -1003,6 +1004,8 @@ module OpenAI
1003
1004
  # [conversation state](https://platform.openai.com/docs/guides/conversation-state).
1004
1005
  # Cannot be used in conjunction with `conversation`.
1005
1006
  previous_response_id: nil,
1007
+ # A key to use when reading from or writing to the prompt cache.
1008
+ prompt_cache_key: nil,
1006
1009
  request_options: {}
1007
1010
  )
1008
1011
  end
@@ -223,6 +223,7 @@ module OpenAI
223
223
  type model =
224
224
  String
225
225
  | :"gpt-realtime"
226
+ | :"gpt-realtime-1.5"
226
227
  | :"gpt-realtime-2025-08-28"
227
228
  | :"gpt-4o-realtime-preview"
228
229
  | :"gpt-4o-realtime-preview-2024-10-01"
@@ -233,6 +234,7 @@ module OpenAI
233
234
  | :"gpt-realtime-mini"
234
235
  | :"gpt-realtime-mini-2025-10-06"
235
236
  | :"gpt-realtime-mini-2025-12-15"
237
+ | :"gpt-audio-1.5"
236
238
  | :"gpt-audio-mini"
237
239
  | :"gpt-audio-mini-2025-10-06"
238
240
  | :"gpt-audio-mini-2025-12-15"
@@ -243,6 +245,7 @@ module OpenAI
243
245
  def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSession::model]
244
246
 
245
247
  GPT_REALTIME: :"gpt-realtime"
248
+ GPT_REALTIME_1_5: :"gpt-realtime-1.5"
246
249
  GPT_REALTIME_2025_08_28: :"gpt-realtime-2025-08-28"
247
250
  GPT_4O_REALTIME_PREVIEW: :"gpt-4o-realtime-preview"
248
251
  GPT_4O_REALTIME_PREVIEW_2024_10_01: :"gpt-4o-realtime-preview-2024-10-01"
@@ -253,6 +256,7 @@ module OpenAI
253
256
  GPT_REALTIME_MINI: :"gpt-realtime-mini"
254
257
  GPT_REALTIME_MINI_2025_10_06: :"gpt-realtime-mini-2025-10-06"
255
258
  GPT_REALTIME_MINI_2025_12_15: :"gpt-realtime-mini-2025-12-15"
259
+ GPT_AUDIO_1_5: :"gpt-audio-1.5"
256
260
  GPT_AUDIO_MINI: :"gpt-audio-mini"
257
261
  GPT_AUDIO_MINI_2025_10_06: :"gpt-audio-mini-2025-10-06"
258
262
  GPT_AUDIO_MINI_2025_12_15: :"gpt-audio-mini-2025-12-15"
@@ -127,6 +127,7 @@ module OpenAI
127
127
  type model =
128
128
  String
129
129
  | :"gpt-realtime"
130
+ | :"gpt-realtime-1.5"
130
131
  | :"gpt-realtime-2025-08-28"
131
132
  | :"gpt-4o-realtime-preview"
132
133
  | :"gpt-4o-realtime-preview-2024-10-01"
@@ -137,6 +138,7 @@ module OpenAI
137
138
  | :"gpt-realtime-mini"
138
139
  | :"gpt-realtime-mini-2025-10-06"
139
140
  | :"gpt-realtime-mini-2025-12-15"
141
+ | :"gpt-audio-1.5"
140
142
  | :"gpt-audio-mini"
141
143
  | :"gpt-audio-mini-2025-10-06"
142
144
  | :"gpt-audio-mini-2025-12-15"
@@ -147,6 +149,7 @@ module OpenAI
147
149
  def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateRequest::model]
148
150
 
149
151
  GPT_REALTIME: :"gpt-realtime"
152
+ GPT_REALTIME_1_5: :"gpt-realtime-1.5"
150
153
  GPT_REALTIME_2025_08_28: :"gpt-realtime-2025-08-28"
151
154
  GPT_4O_REALTIME_PREVIEW: :"gpt-4o-realtime-preview"
152
155
  GPT_4O_REALTIME_PREVIEW_2024_10_01: :"gpt-4o-realtime-preview-2024-10-01"
@@ -157,6 +160,7 @@ module OpenAI
157
160
  GPT_REALTIME_MINI: :"gpt-realtime-mini"
158
161
  GPT_REALTIME_MINI_2025_10_06: :"gpt-realtime-mini-2025-10-06"
159
162
  GPT_REALTIME_MINI_2025_12_15: :"gpt-realtime-mini-2025-12-15"
163
+ GPT_AUDIO_1_5: :"gpt-audio-1.5"
160
164
  GPT_AUDIO_MINI: :"gpt-audio-mini"
161
165
  GPT_AUDIO_MINI_2025_10_06: :"gpt-audio-mini-2025-10-06"
162
166
  GPT_AUDIO_MINI_2025_12_15: :"gpt-audio-mini-2025-12-15"
@@ -414,6 +414,7 @@ module OpenAI
414
414
  type model =
415
415
  String
416
416
  | :"gpt-realtime"
417
+ | :"gpt-realtime-1.5"
417
418
  | :"gpt-realtime-2025-08-28"
418
419
  | :"gpt-4o-realtime-preview"
419
420
  | :"gpt-4o-realtime-preview-2024-10-01"
@@ -424,6 +425,7 @@ module OpenAI
424
425
  | :"gpt-realtime-mini"
425
426
  | :"gpt-realtime-mini-2025-10-06"
426
427
  | :"gpt-realtime-mini-2025-12-15"
428
+ | :"gpt-audio-1.5"
427
429
  | :"gpt-audio-mini"
428
430
  | :"gpt-audio-mini-2025-10-06"
429
431
  | :"gpt-audio-mini-2025-12-15"
@@ -434,6 +436,7 @@ module OpenAI
434
436
  def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model]
435
437
 
436
438
  GPT_REALTIME: :"gpt-realtime"
439
+ GPT_REALTIME_1_5: :"gpt-realtime-1.5"
437
440
  GPT_REALTIME_2025_08_28: :"gpt-realtime-2025-08-28"
438
441
  GPT_4O_REALTIME_PREVIEW: :"gpt-4o-realtime-preview"
439
442
  GPT_4O_REALTIME_PREVIEW_2024_10_01: :"gpt-4o-realtime-preview-2024-10-01"
@@ -444,6 +447,7 @@ module OpenAI
444
447
  GPT_REALTIME_MINI: :"gpt-realtime-mini"
445
448
  GPT_REALTIME_MINI_2025_10_06: :"gpt-realtime-mini-2025-10-06"
446
449
  GPT_REALTIME_MINI_2025_12_15: :"gpt-realtime-mini-2025-12-15"
450
+ GPT_AUDIO_1_5: :"gpt-audio-1.5"
447
451
  GPT_AUDIO_MINI: :"gpt-audio-mini"
448
452
  GPT_AUDIO_MINI_2025_10_06: :"gpt-audio-mini-2025-10-06"
449
453
  GPT_AUDIO_MINI_2025_12_15: :"gpt-audio-mini-2025-12-15"
@@ -5,6 +5,7 @@ module OpenAI
5
5
  {
6
6
  content: OpenAI::Models::Responses::EasyInputMessage::content,
7
7
  role: OpenAI::Models::Responses::EasyInputMessage::role,
8
+ phase: OpenAI::Models::Responses::EasyInputMessage::phase?,
8
9
  type: OpenAI::Models::Responses::EasyInputMessage::type_
9
10
  }
10
11
 
@@ -13,6 +14,8 @@ module OpenAI
13
14
 
14
15
  attr_accessor role: OpenAI::Models::Responses::EasyInputMessage::role
15
16
 
17
+ attr_accessor phase: OpenAI::Models::Responses::EasyInputMessage::phase?
18
+
16
19
  attr_reader type: OpenAI::Models::Responses::EasyInputMessage::type_?
17
20
 
18
21
  def type=: (
@@ -22,12 +25,14 @@ module OpenAI
22
25
  def initialize: (
23
26
  content: OpenAI::Models::Responses::EasyInputMessage::content,
24
27
  role: OpenAI::Models::Responses::EasyInputMessage::role,
28
+ ?phase: OpenAI::Models::Responses::EasyInputMessage::phase?,
25
29
  ?type: OpenAI::Models::Responses::EasyInputMessage::type_
26
30
  ) -> void
27
31
 
28
32
  def to_hash: -> {
29
33
  content: OpenAI::Models::Responses::EasyInputMessage::content,
30
34
  role: OpenAI::Models::Responses::EasyInputMessage::role,
35
+ phase: OpenAI::Models::Responses::EasyInputMessage::phase?,
31
36
  type: OpenAI::Models::Responses::EasyInputMessage::type_
32
37
  }
33
38
 
@@ -54,6 +59,17 @@ module OpenAI
54
59
  def self?.values: -> ::Array[OpenAI::Models::Responses::EasyInputMessage::role]
55
60
  end
56
61
 
62
+ type phase = :commentary | :final_answer
63
+
64
+ module Phase
65
+ extend OpenAI::Internal::Type::Enum
66
+
67
+ COMMENTARY: :commentary
68
+ FINAL_ANSWER: :final_answer
69
+
70
+ def self?.values: -> ::Array[OpenAI::Models::Responses::EasyInputMessage::phase]
71
+ end
72
+
57
73
  type type_ = :message
58
74
 
59
75
  module Type
@@ -6,7 +6,8 @@ module OpenAI
6
6
  model: OpenAI::Models::Responses::ResponseCompactParams::model?,
7
7
  input: OpenAI::Models::Responses::ResponseCompactParams::input?,
8
8
  instructions: String?,
9
- previous_response_id: String?
9
+ previous_response_id: String?,
10
+ prompt_cache_key: String?
10
11
  }
11
12
  & OpenAI::Internal::Type::request_parameters
12
13
 
@@ -22,11 +23,14 @@ module OpenAI
22
23
 
23
24
  attr_accessor previous_response_id: String?
24
25
 
26
+ attr_accessor prompt_cache_key: String?
27
+
25
28
  def initialize: (
26
29
  model: OpenAI::Models::Responses::ResponseCompactParams::model?,
27
30
  ?input: OpenAI::Models::Responses::ResponseCompactParams::input?,
28
31
  ?instructions: String?,
29
32
  ?previous_response_id: String?,
33
+ ?prompt_cache_key: String?,
30
34
  ?request_options: OpenAI::request_opts
31
35
  ) -> void
32
36
 
@@ -35,6 +39,7 @@ module OpenAI
35
39
  input: OpenAI::Models::Responses::ResponseCompactParams::input?,
36
40
  instructions: String?,
37
41
  previous_response_id: String?,
42
+ prompt_cache_key: String?,
38
43
  request_options: OpenAI::RequestOptions
39
44
  }
40
45
 
@@ -7,7 +7,8 @@ module OpenAI
7
7
  content: ::Array[OpenAI::Models::Responses::ResponseOutputMessage::content],
8
8
  role: :assistant,
9
9
  status: OpenAI::Models::Responses::ResponseOutputMessage::status,
10
- type: :message
10
+ type: :message,
11
+ phase: OpenAI::Models::Responses::ResponseOutputMessage::phase?
11
12
  }
12
13
 
13
14
  class ResponseOutputMessage < OpenAI::Internal::Type::BaseModel
@@ -21,10 +22,13 @@ module OpenAI
21
22
 
22
23
  attr_accessor type: :message
23
24
 
25
+ attr_accessor phase: OpenAI::Models::Responses::ResponseOutputMessage::phase?
26
+
24
27
  def initialize: (
25
28
  id: String,
26
29
  content: ::Array[OpenAI::Models::Responses::ResponseOutputMessage::content],
27
30
  status: OpenAI::Models::Responses::ResponseOutputMessage::status,
31
+ ?phase: OpenAI::Models::Responses::ResponseOutputMessage::phase?,
28
32
  ?role: :assistant,
29
33
  ?type: :message
30
34
  ) -> void
@@ -34,7 +38,8 @@ module OpenAI
34
38
  content: ::Array[OpenAI::Models::Responses::ResponseOutputMessage::content],
35
39
  role: :assistant,
36
40
  status: OpenAI::Models::Responses::ResponseOutputMessage::status,
37
- type: :message
41
+ type: :message,
42
+ phase: OpenAI::Models::Responses::ResponseOutputMessage::phase?
38
43
  }
39
44
 
40
45
  type content =
@@ -58,6 +63,17 @@ module OpenAI
58
63
 
59
64
  def self?.values: -> ::Array[OpenAI::Models::Responses::ResponseOutputMessage::status]
60
65
  end
66
+
67
+ type phase = :commentary | :final_answer
68
+
69
+ module Phase
70
+ extend OpenAI::Internal::Type::Enum
71
+
72
+ COMMENTARY: :commentary
73
+ FINAL_ANSWER: :final_answer
74
+
75
+ def self?.values: -> ::Array[OpenAI::Models::Responses::ResponseOutputMessage::phase]
76
+ end
61
77
  end
62
78
  end
63
79
  end
@@ -128,6 +128,7 @@ module OpenAI
128
128
  ?input: OpenAI::Models::Responses::ResponseCompactParams::input?,
129
129
  ?instructions: String?,
130
130
  ?previous_response_id: String?,
131
+ ?prompt_cache_key: String?,
131
132
  ?request_options: OpenAI::request_opts
132
133
  ) -> OpenAI::Responses::CompactedResponse
133
134
 
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.49.1
4
+ version: 0.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-02-23 00:00:00.000000000 Z
11
+ date: 2026-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64