openai 0.79.0 → 0.80.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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/README.md +1 -1
  4. data/bedrock.md +67 -2
  5. data/lib/openai/models/all_models.rb +2 -0
  6. data/lib/openai/models/beta/beta_mcp_tool_call_error.rb +84 -0
  7. data/lib/openai/models/beta/beta_response.rb +18 -0
  8. data/lib/openai/models/beta/beta_response_input_item.rb +3 -3
  9. data/lib/openai/models/beta/beta_response_item.rb +3 -3
  10. data/lib/openai/models/beta/beta_response_output_item.rb +3 -3
  11. data/lib/openai/models/beta/beta_response_output_item_added_event.rb +5 -2
  12. data/lib/openai/models/beta/beta_response_output_text_annotation_added_event.rb +201 -4
  13. data/lib/openai/models/beta/beta_response_reasoning_item.rb +5 -0
  14. data/lib/openai/models/beta/beta_responses_client_event.rb +18 -0
  15. data/lib/openai/models/beta/beta_responses_server_event.rb +126 -22
  16. data/lib/openai/models/beta/beta_web_search_tool.rb +11 -1
  17. data/lib/openai/models/beta/response_compact_params.rb +9 -0
  18. data/lib/openai/models/beta/response_create_params.rb +18 -0
  19. data/lib/openai/models/chat_model.rb +1 -0
  20. data/lib/openai/models/completion_usage.rb +26 -2
  21. data/lib/openai/models/conversations/conversation_item.rb +3 -3
  22. data/lib/openai/models/model.rb +9 -1
  23. data/lib/openai/models/responses/mcp_tool_call_error.rb +82 -0
  24. data/lib/openai/models/responses/response.rb +9 -0
  25. data/lib/openai/models/responses/response_compact_params.rb +9 -0
  26. data/lib/openai/models/responses/response_create_params.rb +9 -0
  27. data/lib/openai/models/responses/response_input_item.rb +3 -3
  28. data/lib/openai/models/responses/response_item.rb +3 -3
  29. data/lib/openai/models/responses/response_output_item.rb +3 -3
  30. data/lib/openai/models/responses/response_output_item_added_event.rb +5 -2
  31. data/lib/openai/models/responses/response_output_text_annotation_added_event.rb +201 -4
  32. data/lib/openai/models/responses/response_reasoning_item.rb +5 -0
  33. data/lib/openai/models/responses/responses_client_event.rb +9 -0
  34. data/lib/openai/models/responses/responses_server_event.rb +100 -22
  35. data/lib/openai/models/responses/web_search_tool.rb +11 -1
  36. data/lib/openai/models/responses_model.rb +2 -0
  37. data/lib/openai/providers/bedrock.rb +127 -16
  38. data/lib/openai/resources/files.rb +1 -1
  39. data/lib/openai/version.rb +1 -1
  40. data/lib/openai.rb +4 -2
  41. data/rbi/openai/models/all_models.rbi +10 -0
  42. data/rbi/openai/models/beta/beta_mcp_tool_call_error.rbi +122 -0
  43. data/rbi/openai/models/beta/beta_response.rbi +32 -0
  44. data/rbi/openai/models/beta/beta_response_input_item.rbi +27 -3
  45. data/rbi/openai/models/beta/beta_response_item.rbi +27 -3
  46. data/rbi/openai/models/beta/beta_response_output_item.rbi +27 -3
  47. data/rbi/openai/models/beta/beta_response_output_item_added_event.rbi +8 -2
  48. data/rbi/openai/models/beta/beta_response_output_text_annotation_added_event.rbi +297 -5
  49. data/rbi/openai/models/beta/beta_response_reasoning_item.rbi +10 -0
  50. data/rbi/openai/models/beta/beta_responses_client_event.rbi +32 -0
  51. data/rbi/openai/models/beta/beta_responses_server_event.rbi +221 -67
  52. data/rbi/openai/models/beta/beta_web_search_tool.rbi +15 -0
  53. data/rbi/openai/models/beta/response_compact_params.rbi +15 -0
  54. data/rbi/openai/models/beta/response_create_params.rbi +32 -0
  55. data/rbi/openai/models/chat_model.rbi +2 -0
  56. data/rbi/openai/models/completion_usage.rbi +39 -6
  57. data/rbi/openai/models/conversations/conversation_item.rbi +12 -3
  58. data/rbi/openai/models/model.rbi +14 -1
  59. data/rbi/openai/models/responses/mcp_tool_call_error.rbi +120 -0
  60. data/rbi/openai/models/responses/response.rbi +17 -0
  61. data/rbi/openai/models/responses/response_compact_params.rbi +15 -0
  62. data/rbi/openai/models/responses/response_create_params.rbi +17 -0
  63. data/rbi/openai/models/responses/response_input_item.rbi +27 -3
  64. data/rbi/openai/models/responses/response_item.rbi +27 -3
  65. data/rbi/openai/models/responses/response_output_item.rbi +27 -3
  66. data/rbi/openai/models/responses/response_output_item_added_event.rbi +8 -2
  67. data/rbi/openai/models/responses/response_output_text_annotation_added_event.rbi +297 -5
  68. data/rbi/openai/models/responses/response_reasoning_item.rbi +10 -0
  69. data/rbi/openai/models/responses/responses_client_event.rbi +17 -0
  70. data/rbi/openai/models/responses/responses_server_event.rbi +165 -62
  71. data/rbi/openai/models/responses/web_search_tool.rbi +15 -0
  72. data/rbi/openai/models/responses_model.rbi +10 -0
  73. data/rbi/openai/providers.rbi +2 -0
  74. data/rbi/openai/resources/beta/responses.rbi +8 -0
  75. data/rbi/openai/resources/files.rbi +1 -1
  76. data/rbi/openai/resources/responses.rbi +8 -0
  77. data/sig/openai/models/all_models.rbs +4 -0
  78. data/sig/openai/models/beta/beta_mcp_tool_call_error.rbs +75 -0
  79. data/sig/openai/models/beta/beta_response.rbs +8 -1
  80. data/sig/openai/models/beta/beta_response_input_item.rbs +4 -4
  81. data/sig/openai/models/beta/beta_response_item.rbs +4 -4
  82. data/sig/openai/models/beta/beta_response_output_item.rbs +4 -4
  83. data/sig/openai/models/beta/beta_response_output_text_annotation_added_event.rbs +149 -4
  84. data/sig/openai/models/beta/beta_responses_client_event.rbs +8 -1
  85. data/sig/openai/models/beta/beta_responses_server_event.rbs +99 -39
  86. data/sig/openai/models/beta/beta_web_search_tool.rbs +7 -0
  87. data/sig/openai/models/beta/response_compact_params.rbs +6 -0
  88. data/sig/openai/models/beta/response_create_params.rbs +8 -1
  89. data/sig/openai/models/chat_model.rbs +2 -0
  90. data/sig/openai/models/completion_usage.rbs +27 -6
  91. data/sig/openai/models/conversations/conversation_item.rbs +4 -4
  92. data/sig/openai/models/model.rbs +12 -2
  93. data/sig/openai/models/responses/mcp_tool_call_error.rbs +73 -0
  94. data/sig/openai/models/responses/response.rbs +2 -1
  95. data/sig/openai/models/responses/response_compact_params.rbs +6 -0
  96. data/sig/openai/models/responses/response_create_params.rbs +2 -1
  97. data/sig/openai/models/responses/response_input_item.rbs +4 -4
  98. data/sig/openai/models/responses/response_item.rbs +4 -4
  99. data/sig/openai/models/responses/response_output_item.rbs +4 -4
  100. data/sig/openai/models/responses/response_output_text_annotation_added_event.rbs +149 -4
  101. data/sig/openai/models/responses/responses_client_event.rbs +2 -1
  102. data/sig/openai/models/responses/responses_server_event.rbs +84 -36
  103. data/sig/openai/models/responses/web_search_tool.rbs +7 -0
  104. data/sig/openai/models/responses_model.rbs +4 -0
  105. data/sig/openai/providers.rbs +1 -0
  106. metadata +7 -1
@@ -12,6 +12,7 @@ module OpenAI
12
12
  Variants =
13
13
  T.type_alias do
14
14
  T.any(
15
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError,
15
16
  OpenAI::Beta::BetaResponseInjectCreatedEvent,
16
17
  OpenAI::Beta::BetaResponseInjectFailedEvent,
17
18
  OpenAI::Beta::BetaResponsesServerEvent::BetaResponseAudioWsDelta,
@@ -27,7 +28,6 @@ module OpenAI
27
28
  OpenAI::Beta::BetaResponsesServerEvent::BetaResponseContentPartWsAdded,
28
29
  OpenAI::Beta::BetaResponsesServerEvent::BetaResponseContentPartWsDone,
29
30
  OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsCreated,
30
- OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError,
31
31
  OpenAI::Beta::BetaResponsesServerEvent::BetaResponseFileSearchCallWsCompleted,
32
32
  OpenAI::Beta::BetaResponsesServerEvent::BetaResponseFileSearchCallInWsProgress,
33
33
  OpenAI::Beta::BetaResponsesServerEvent::BetaResponseFileSearchCallWsSearching,
@@ -940,72 +940,6 @@ module OpenAI
940
940
  end
941
941
  end
942
942
 
943
- class BetaResponseWsError < OpenAI::Models::Beta::BetaResponseErrorEvent
944
- OrHash =
945
- T.type_alias do
946
- T.any(
947
- OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError,
948
- OpenAI::Internal::AnyHash
949
- )
950
- end
951
-
952
- # The WebSocket lane that emitted this event. This field is present when the
953
- # originating `response.create` event supplied a `stream_id`.
954
- sig { returns(T.nilable(String)) }
955
- attr_reader :stream_id
956
-
957
- sig { params(stream_id: String).void }
958
- attr_writer :stream_id
959
-
960
- # Emitted when an error occurs.
961
- sig do
962
- params(
963
- code: T.nilable(String),
964
- message: String,
965
- param: T.nilable(String),
966
- sequence_number: Integer,
967
- agent:
968
- T.nilable(OpenAI::Beta::BetaResponseErrorEvent::Agent::OrHash),
969
- type: Symbol,
970
- stream_id: String
971
- ).returns(T.attached_class)
972
- end
973
- def self.new(
974
- # The error code.
975
- code:,
976
- # The error message.
977
- message:,
978
- # The error parameter.
979
- param:,
980
- # The sequence number of this event.
981
- sequence_number:,
982
- # The agent that owns this multi-agent streaming event.
983
- agent: nil,
984
- # The type of the event. Always `error`.
985
- type: :error,
986
- # The WebSocket lane that emitted this event.
987
- # This field is present when the originating response.create supplied a stream_id.
988
- stream_id: nil
989
- )
990
- end
991
-
992
- sig do
993
- override.returns(
994
- {
995
- code: T.nilable(String),
996
- message: String,
997
- param: T.nilable(String),
998
- sequence_number: Integer,
999
- type: Symbol,
1000
- agent: T.nilable(OpenAI::Beta::BetaResponseErrorEvent::Agent),
1001
- stream_id: String
1002
- }
1003
- )
1004
- end
1005
- def to_hash
1006
- end
1007
- end
1008
-
1009
943
  class BetaResponseFileSearchCallWsCompleted < OpenAI::Models::Beta::BetaResponseFileSearchCallCompletedEvent
1010
944
  OrHash =
1011
945
  T.type_alias do
@@ -3807,6 +3741,226 @@ module OpenAI
3807
3741
  end
3808
3742
  end
3809
3743
 
3744
+ class BetaResponseWsError < OpenAI::Internal::Type::BaseModel
3745
+ OrHash =
3746
+ T.type_alias do
3747
+ T.any(
3748
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError,
3749
+ OpenAI::Internal::AnyHash
3750
+ )
3751
+ end
3752
+
3753
+ # Details about the error.
3754
+ sig do
3755
+ returns(
3756
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Error
3757
+ )
3758
+ end
3759
+ attr_reader :error
3760
+
3761
+ sig do
3762
+ params(
3763
+ error:
3764
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Error::OrHash
3765
+ ).void
3766
+ end
3767
+ attr_writer :error
3768
+
3769
+ # The type of the event. Always `error`.
3770
+ sig { returns(Symbol) }
3771
+ attr_accessor :type
3772
+
3773
+ # The agent that owns this multi-agent streaming event.
3774
+ sig do
3775
+ returns(
3776
+ T.nilable(
3777
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Agent
3778
+ )
3779
+ )
3780
+ end
3781
+ attr_reader :agent
3782
+
3783
+ sig do
3784
+ params(
3785
+ agent:
3786
+ T.nilable(
3787
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Agent::OrHash
3788
+ )
3789
+ ).void
3790
+ end
3791
+ attr_writer :agent
3792
+
3793
+ # The sequence number of an error emitted by the response stream.
3794
+ sig { returns(T.nilable(Integer)) }
3795
+ attr_reader :sequence_number
3796
+
3797
+ sig { params(sequence_number: Integer).void }
3798
+ attr_writer :sequence_number
3799
+
3800
+ # The HTTP status code associated with a WebSocket protocol error.
3801
+ sig { returns(T.nilable(Integer)) }
3802
+ attr_reader :status
3803
+
3804
+ sig { params(status: Integer).void }
3805
+ attr_writer :status
3806
+
3807
+ # The WebSocket lane that emitted this event. This field is present when the
3808
+ # originating `response.create` event supplied a `stream_id`.
3809
+ sig { returns(T.nilable(String)) }
3810
+ attr_reader :stream_id
3811
+
3812
+ sig { params(stream_id: String).void }
3813
+ attr_writer :stream_id
3814
+
3815
+ # Emitted when an error occurs while processing a Responses WebSocket request.
3816
+ sig do
3817
+ params(
3818
+ error:
3819
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Error::OrHash,
3820
+ agent:
3821
+ T.nilable(
3822
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Agent::OrHash
3823
+ ),
3824
+ sequence_number: Integer,
3825
+ status: Integer,
3826
+ stream_id: String,
3827
+ type: Symbol
3828
+ ).returns(T.attached_class)
3829
+ end
3830
+ def self.new(
3831
+ # Details about the error.
3832
+ error:,
3833
+ # The agent that owns this multi-agent streaming event.
3834
+ agent: nil,
3835
+ # The sequence number of an error emitted by the response stream.
3836
+ sequence_number: nil,
3837
+ # The HTTP status code associated with a WebSocket protocol error.
3838
+ status: nil,
3839
+ # The WebSocket lane that emitted this event. This field is present when the
3840
+ # originating `response.create` event supplied a `stream_id`.
3841
+ stream_id: nil,
3842
+ # The type of the event. Always `error`.
3843
+ type: :error
3844
+ )
3845
+ end
3846
+
3847
+ sig do
3848
+ override.returns(
3849
+ {
3850
+ error:
3851
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Error,
3852
+ type: Symbol,
3853
+ agent:
3854
+ T.nilable(
3855
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Agent
3856
+ ),
3857
+ sequence_number: Integer,
3858
+ status: Integer,
3859
+ stream_id: String
3860
+ }
3861
+ )
3862
+ end
3863
+ def to_hash
3864
+ end
3865
+
3866
+ class Error < OpenAI::Internal::Type::BaseModel
3867
+ OrHash =
3868
+ T.type_alias do
3869
+ T.any(
3870
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Error,
3871
+ OpenAI::Internal::AnyHash
3872
+ )
3873
+ end
3874
+
3875
+ # The error code that was emitted, if any.
3876
+ sig { returns(T.nilable(String)) }
3877
+ attr_accessor :code
3878
+
3879
+ # The human-readable error message that was emitted.
3880
+ sig { returns(String) }
3881
+ attr_accessor :message
3882
+
3883
+ # The parameter name that was associated with the error, if any.
3884
+ sig { returns(T.nilable(String)) }
3885
+ attr_accessor :param
3886
+
3887
+ # The error type that was emitted.
3888
+ sig { returns(String) }
3889
+ attr_accessor :type
3890
+
3891
+ # The response headers that were emitted with the error, if any.
3892
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
3893
+ attr_reader :headers
3894
+
3895
+ sig { params(headers: T::Hash[Symbol, String]).void }
3896
+ attr_writer :headers
3897
+
3898
+ # Details about the error.
3899
+ sig do
3900
+ params(
3901
+ code: T.nilable(String),
3902
+ message: String,
3903
+ param: T.nilable(String),
3904
+ type: String,
3905
+ headers: T::Hash[Symbol, String]
3906
+ ).returns(T.attached_class)
3907
+ end
3908
+ def self.new(
3909
+ # The error code that was emitted, if any.
3910
+ code:,
3911
+ # The human-readable error message that was emitted.
3912
+ message:,
3913
+ # The parameter name that was associated with the error, if any.
3914
+ param:,
3915
+ # The error type that was emitted.
3916
+ type:,
3917
+ # The response headers that were emitted with the error, if any.
3918
+ headers: nil
3919
+ )
3920
+ end
3921
+
3922
+ sig do
3923
+ override.returns(
3924
+ {
3925
+ code: T.nilable(String),
3926
+ message: String,
3927
+ param: T.nilable(String),
3928
+ type: String,
3929
+ headers: T::Hash[Symbol, String]
3930
+ }
3931
+ )
3932
+ end
3933
+ def to_hash
3934
+ end
3935
+ end
3936
+
3937
+ class Agent < OpenAI::Internal::Type::BaseModel
3938
+ OrHash =
3939
+ T.type_alias do
3940
+ T.any(
3941
+ OpenAI::Beta::BetaResponsesServerEvent::BetaResponseWsError::Agent,
3942
+ OpenAI::Internal::AnyHash
3943
+ )
3944
+ end
3945
+
3946
+ # The canonical name of the agent that produced this item.
3947
+ sig { returns(String) }
3948
+ attr_accessor :agent_name
3949
+
3950
+ # The agent that owns this multi-agent streaming event.
3951
+ sig { params(agent_name: String).returns(T.attached_class) }
3952
+ def self.new(
3953
+ # The canonical name of the agent that produced this item.
3954
+ agent_name:
3955
+ )
3956
+ end
3957
+
3958
+ sig { override.returns({ agent_name: String }) }
3959
+ def to_hash
3960
+ end
3961
+ end
3962
+ end
3963
+
3810
3964
  sig do
3811
3965
  override.returns(
3812
3966
  T::Array[OpenAI::Beta::BetaResponsesServerEvent::Variants]
@@ -15,6 +15,15 @@ module OpenAI
15
15
  sig { returns(OpenAI::Beta::BetaWebSearchTool::Type::OrSymbol) }
16
16
  attr_accessor :type
17
17
 
18
+ # Allow live internet access for web search. Defaults to true when omitted. When
19
+ # false, the web search tool runs in offline/cache-only mode and will not fetch
20
+ # new external content.
21
+ sig { returns(T.nilable(T::Boolean)) }
22
+ attr_reader :external_web_access
23
+
24
+ sig { params(external_web_access: T::Boolean).void }
25
+ attr_writer :external_web_access
26
+
18
27
  # Filters for the search.
19
28
  sig { returns(T.nilable(OpenAI::Beta::BetaWebSearchTool::Filters)) }
20
29
  attr_reader :filters
@@ -64,6 +73,7 @@ module OpenAI
64
73
  sig do
65
74
  params(
66
75
  type: OpenAI::Beta::BetaWebSearchTool::Type::OrSymbol,
76
+ external_web_access: T::Boolean,
67
77
  filters:
68
78
  T.nilable(OpenAI::Beta::BetaWebSearchTool::Filters::OrHash),
69
79
  search_context_size:
@@ -75,6 +85,10 @@ module OpenAI
75
85
  def self.new(
76
86
  # The type of the web search tool. One of `web_search` or `web_search_2025_08_26`.
77
87
  type:,
88
+ # Allow live internet access for web search. Defaults to true when omitted. When
89
+ # false, the web search tool runs in offline/cache-only mode and will not fetch
90
+ # new external content.
91
+ external_web_access: nil,
78
92
  # Filters for the search.
79
93
  filters: nil,
80
94
  # High level guidance for the amount of context window space to use for the
@@ -89,6 +103,7 @@ module OpenAI
89
103
  override.returns(
90
104
  {
91
105
  type: OpenAI::Beta::BetaWebSearchTool::Type::OrSymbol,
106
+ external_web_access: T::Boolean,
92
107
  filters: T.nilable(OpenAI::Beta::BetaWebSearchTool::Filters),
93
108
  search_context_size:
94
109
  OpenAI::Beta::BetaWebSearchTool::SearchContextSize::OrSymbol,
@@ -305,6 +305,11 @@ module OpenAI
305
305
  :"gpt-5.5",
306
306
  OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol
307
307
  )
308
+ GPT_5_5_2026_04_23 =
309
+ T.let(
310
+ :"gpt-5.5-2026-04-23",
311
+ OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol
312
+ )
308
313
  GPT_5_4 =
309
314
  T.let(
310
315
  :"gpt-5.4",
@@ -739,6 +744,16 @@ module OpenAI
739
744
  :"computer-use-preview-2025-03-11",
740
745
  OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol
741
746
  )
747
+ GPT_5_5_PRO =
748
+ T.let(
749
+ :"gpt-5.5-pro",
750
+ OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol
751
+ )
752
+ GPT_5_5_PRO_2026_04_23 =
753
+ T.let(
754
+ :"gpt-5.5-pro-2026-04-23",
755
+ OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol
756
+ )
742
757
  GPT_5_CODEX =
743
758
  T.let(
744
759
  :"gpt-5-codex",
@@ -287,6 +287,10 @@ module OpenAI
287
287
  # Responses or Chat Completions. The response will show `service_tier=priority`
288
288
  # regardless of if you specify `service_tier=fast` or `priority` in your
289
289
  # request.
290
+ # - If set to 'ultrafast', then the request will be processed with the
291
+ # access-controlled Ultrafast Processing service tier. This tier is currently
292
+ # available for `gpt-5.6-sol`; a response served through it will show
293
+ # `service_tier=ultrafast`.
290
294
  # - When not set, the default behavior is 'auto'.
291
295
  #
292
296
  # When the `service_tier` parameter is set, the response body will include the
@@ -749,6 +753,10 @@ module OpenAI
749
753
  # Responses or Chat Completions. The response will show `service_tier=priority`
750
754
  # regardless of if you specify `service_tier=fast` or `priority` in your
751
755
  # request.
756
+ # - If set to 'ultrafast', then the request will be processed with the
757
+ # access-controlled Ultrafast Processing service tier. This tier is currently
758
+ # available for `gpt-5.6-sol`; a response served through it will show
759
+ # `service_tier=ultrafast`.
752
760
  # - When not set, the default behavior is 'auto'.
753
761
  #
754
762
  # When the `service_tier` parameter is set, the response body will include the
@@ -1068,6 +1076,11 @@ module OpenAI
1068
1076
  :"gpt-5.5",
1069
1077
  OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol
1070
1078
  )
1079
+ GPT_5_5_2026_04_23 =
1080
+ T.let(
1081
+ :"gpt-5.5-2026-04-23",
1082
+ OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol
1083
+ )
1071
1084
  GPT_5_4 =
1072
1085
  T.let(
1073
1086
  :"gpt-5.4",
@@ -1502,6 +1515,16 @@ module OpenAI
1502
1515
  :"computer-use-preview-2025-03-11",
1503
1516
  OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol
1504
1517
  )
1518
+ GPT_5_5_PRO =
1519
+ T.let(
1520
+ :"gpt-5.5-pro",
1521
+ OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol
1522
+ )
1523
+ GPT_5_5_PRO_2026_04_23 =
1524
+ T.let(
1525
+ :"gpt-5.5-pro-2026-04-23",
1526
+ OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol
1527
+ )
1505
1528
  GPT_5_CODEX =
1506
1529
  T.let(
1507
1530
  :"gpt-5-codex",
@@ -2559,6 +2582,10 @@ module OpenAI
2559
2582
  # Responses or Chat Completions. The response will show `service_tier=priority`
2560
2583
  # regardless of if you specify `service_tier=fast` or `priority` in your
2561
2584
  # request.
2585
+ # - If set to 'ultrafast', then the request will be processed with the
2586
+ # access-controlled Ultrafast Processing service tier. This tier is currently
2587
+ # available for `gpt-5.6-sol`; a response served through it will show
2588
+ # `service_tier=ultrafast`.
2562
2589
  # - When not set, the default behavior is 'auto'.
2563
2590
  #
2564
2591
  # When the `service_tier` parameter is set, the response body will include the
@@ -2604,6 +2631,11 @@ module OpenAI
2604
2631
  :fast,
2605
2632
  OpenAI::Beta::ResponseCreateParams::ServiceTier::TaggedSymbol
2606
2633
  )
2634
+ ULTRAFAST =
2635
+ T.let(
2636
+ :ultrafast,
2637
+ OpenAI::Beta::ResponseCreateParams::ServiceTier::TaggedSymbol
2638
+ )
2607
2639
 
2608
2640
  sig do
2609
2641
  override.returns(
@@ -12,6 +12,8 @@ module OpenAI
12
12
  GPT_5_6_TERRA = T.let(:"gpt-5.6-terra", OpenAI::ChatModel::TaggedSymbol)
13
13
  GPT_5_6_LUNA = T.let(:"gpt-5.6-luna", OpenAI::ChatModel::TaggedSymbol)
14
14
  GPT_5_5 = T.let(:"gpt-5.5", OpenAI::ChatModel::TaggedSymbol)
15
+ GPT_5_5_2026_04_23 =
16
+ T.let(:"gpt-5.5-2026-04-23", OpenAI::ChatModel::TaggedSymbol)
15
17
  GPT_5_4 = T.let(:"gpt-5.4", OpenAI::ChatModel::TaggedSymbol)
16
18
  GPT_5_4_MINI = T.let(:"gpt-5.4-mini", OpenAI::ChatModel::TaggedSymbol)
17
19
  GPT_5_4_NANO = T.let(:"gpt-5.4-nano", OpenAI::ChatModel::TaggedSymbol)
@@ -128,13 +128,21 @@ module OpenAI
128
128
  sig { params(rejected_prediction_tokens: Integer).void }
129
129
  attr_writer :rejected_prediction_tokens
130
130
 
131
+ # Text output tokens generated by the model.
132
+ sig { returns(T.nilable(Integer)) }
133
+ attr_reader :text_tokens
134
+
135
+ sig { params(text_tokens: Integer).void }
136
+ attr_writer :text_tokens
137
+
131
138
  # Breakdown of tokens used in a completion.
132
139
  sig do
133
140
  params(
134
141
  accepted_prediction_tokens: Integer,
135
142
  audio_tokens: Integer,
136
143
  reasoning_tokens: Integer,
137
- rejected_prediction_tokens: Integer
144
+ rejected_prediction_tokens: Integer,
145
+ text_tokens: Integer
138
146
  ).returns(T.attached_class)
139
147
  end
140
148
  def self.new(
@@ -149,7 +157,9 @@ module OpenAI
149
157
  # not appear in the completion. However, like reasoning tokens, these tokens are
150
158
  # still counted in the total completion tokens for purposes of billing, output,
151
159
  # and context window limits.
152
- rejected_prediction_tokens: nil
160
+ rejected_prediction_tokens: nil,
161
+ # Text output tokens generated by the model.
162
+ text_tokens: nil
153
163
  )
154
164
  end
155
165
 
@@ -159,7 +169,8 @@ module OpenAI
159
169
  accepted_prediction_tokens: Integer,
160
170
  audio_tokens: Integer,
161
171
  reasoning_tokens: Integer,
162
- rejected_prediction_tokens: Integer
172
+ rejected_prediction_tokens: Integer,
173
+ text_tokens: Integer
163
174
  }
164
175
  )
165
176
  end
@@ -197,12 +208,28 @@ module OpenAI
197
208
  sig { params(cached_tokens: Integer).void }
198
209
  attr_writer :cached_tokens
199
210
 
211
+ # Image input tokens present in the prompt.
212
+ sig { returns(T.nilable(Integer)) }
213
+ attr_reader :image_tokens
214
+
215
+ sig { params(image_tokens: Integer).void }
216
+ attr_writer :image_tokens
217
+
218
+ # Text input tokens present in the prompt.
219
+ sig { returns(T.nilable(Integer)) }
220
+ attr_reader :text_tokens
221
+
222
+ sig { params(text_tokens: Integer).void }
223
+ attr_writer :text_tokens
224
+
200
225
  # Breakdown of tokens used in the prompt.
201
226
  sig do
202
227
  params(
203
228
  audio_tokens: Integer,
204
229
  cache_write_tokens: Integer,
205
- cached_tokens: Integer
230
+ cached_tokens: Integer,
231
+ image_tokens: Integer,
232
+ text_tokens: Integer
206
233
  ).returns(T.attached_class)
207
234
  end
208
235
  def self.new(
@@ -211,7 +238,11 @@ module OpenAI
211
238
  # The unadjusted number of prompt tokens written to cache.
212
239
  cache_write_tokens: nil,
213
240
  # Cached tokens present in the prompt.
214
- cached_tokens: nil
241
+ cached_tokens: nil,
242
+ # Image input tokens present in the prompt.
243
+ image_tokens: nil,
244
+ # Text input tokens present in the prompt.
245
+ text_tokens: nil
215
246
  )
216
247
  end
217
248
 
@@ -220,7 +251,9 @@ module OpenAI
220
251
  {
221
252
  audio_tokens: Integer,
222
253
  cache_write_tokens: Integer,
223
- cached_tokens: Integer
254
+ cached_tokens: Integer,
255
+ image_tokens: Integer,
256
+ text_tokens: Integer
224
257
  }
225
258
  )
226
259
  end
@@ -1109,7 +1109,9 @@ module OpenAI
1109
1109
  attr_accessor :approval_request_id
1110
1110
 
1111
1111
  # The error from the tool call, if any.
1112
- sig { returns(T.nilable(String)) }
1112
+ sig do
1113
+ returns(T.nilable(OpenAI::Responses::McpToolCallError::Variants))
1114
+ end
1113
1115
  attr_accessor :error
1114
1116
 
1115
1117
  # The output from the tool call.
@@ -1143,7 +1145,14 @@ module OpenAI
1143
1145
  name: String,
1144
1146
  server_label: String,
1145
1147
  approval_request_id: T.nilable(String),
1146
- error: T.nilable(String),
1148
+ error:
1149
+ T.nilable(
1150
+ T.any(
1151
+ OpenAI::Responses::McpToolCallError::McpProtocolError::OrHash,
1152
+ OpenAI::Responses::McpToolCallError::McpToolExecutionError::OrHash,
1153
+ OpenAI::Responses::McpToolCallError::HTTPError::OrHash
1154
+ )
1155
+ ),
1147
1156
  output: T.nilable(String),
1148
1157
  status:
1149
1158
  OpenAI::Conversations::ConversationItem::McpCall::Status::OrSymbol,
@@ -1184,7 +1193,7 @@ module OpenAI
1184
1193
  server_label: String,
1185
1194
  type: Symbol,
1186
1195
  approval_request_id: T.nilable(String),
1187
- error: T.nilable(String),
1196
+ error: T.nilable(OpenAI::Responses::McpToolCallError::Variants),
1188
1197
  output: T.nilable(String),
1189
1198
  status:
1190
1199
  OpenAI::Conversations::ConversationItem::McpCall::Status::TaggedSymbol
@@ -21,12 +21,17 @@ module OpenAI
21
21
  sig { returns(String) }
22
22
  attr_accessor :owned_by
23
23
 
24
+ # The date when the model will shut down, or null if not announced.
25
+ sig { returns(T.nilable(Date)) }
26
+ attr_accessor :shutdown_date
27
+
24
28
  # Describes an OpenAI model offering that can be used with the API.
25
29
  sig do
26
30
  params(
27
31
  id: String,
28
32
  created: Integer,
29
33
  owned_by: String,
34
+ shutdown_date: T.nilable(Date),
30
35
  object: Symbol
31
36
  ).returns(T.attached_class)
32
37
  end
@@ -37,6 +42,8 @@ module OpenAI
37
42
  created:,
38
43
  # The organization that owns the model.
39
44
  owned_by:,
45
+ # The date when the model will shut down, or null if not announced.
46
+ shutdown_date: nil,
40
47
  # The object type, which is always "model".
41
48
  object: :model
42
49
  )
@@ -44,7 +51,13 @@ module OpenAI
44
51
 
45
52
  sig do
46
53
  override.returns(
47
- { id: String, created: Integer, object: Symbol, owned_by: String }
54
+ {
55
+ id: String,
56
+ created: Integer,
57
+ object: Symbol,
58
+ owned_by: String,
59
+ shutdown_date: T.nilable(Date)
60
+ }
48
61
  )
49
62
  end
50
63
  def to_hash