openai 0.99.0 → 0.101.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/README.md +1 -1
  4. data/bedrock.md +17 -1
  5. data/lib/openai/client.rb +13 -0
  6. data/lib/openai/helpers/agents/session_stream.rb +11 -36
  7. data/lib/openai/helpers/agents/tools.rb +34 -4
  8. data/lib/openai/helpers/beta/agents/creation_stream.rb +26 -0
  9. data/lib/openai/helpers/beta/agents/function_tool.rb +11 -4
  10. data/lib/openai/helpers/beta/agents/tool_dispatcher.rb +74 -0
  11. data/lib/openai/helpers/beta/agents/tool_error.rb +28 -0
  12. data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +125 -3
  13. data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +125 -3
  14. data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +125 -3
  15. data/lib/openai/models/admin/organization/usage_completions_params.rb +9 -4
  16. data/lib/openai/models/admin/organization/usage_completions_response.rb +125 -3
  17. data/lib/openai/models/admin/organization/usage_costs_params.rb +16 -4
  18. data/lib/openai/models/admin/organization/usage_costs_response.rb +125 -3
  19. data/lib/openai/models/admin/organization/usage_embeddings_response.rb +125 -3
  20. data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +125 -3
  21. data/lib/openai/models/admin/organization/usage_images_response.rb +125 -3
  22. data/lib/openai/models/admin/organization/usage_moderations_response.rb +125 -3
  23. data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +125 -3
  24. data/lib/openai/models/admin/organization/usage_web_search_calls_params.rb +9 -4
  25. data/lib/openai/models/admin/organization/usage_web_search_calls_response.rb +125 -3
  26. data/lib/openai/models/beta/agents/environments/template_create_params.rb +6 -6
  27. data/lib/openai/models/beta/agents/environments/template_update_params.rb +3 -6
  28. data/lib/openai/models/beta/agents/sessions/turns/item_list_params.rb +79 -0
  29. data/lib/openai/models/beta/beta_response_computer_tool_call_output_item.rb +2 -2
  30. data/lib/openai/models/beta/beta_response_error.rb +12 -1
  31. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +1166 -3
  32. data/lib/openai/models/beta/beta_responses_server_event.rb +12 -1
  33. data/lib/openai/models/beta/beta_tool.rb +12 -9
  34. data/lib/openai/models/beta/beta_tool_search_output_namespace_tool.rb +176 -0
  35. data/lib/openai/models/beta/environment_param.rb +6 -6
  36. data/lib/openai/models/beta/session_turn_error.rb +9 -0
  37. data/lib/openai/models/chat/chat_completion_chunk.rb +85 -18
  38. data/lib/openai/models/decision.rb +313 -0
  39. data/lib/openai/models/decision_create_params.rb +233 -0
  40. data/lib/openai/models/decision_input_image.rb +53 -0
  41. data/lib/openai/models/decision_input_message.rb +60 -0
  42. data/lib/openai/models/decision_input_part.rb +20 -0
  43. data/lib/openai/models/decision_input_text.rb +21 -0
  44. data/lib/openai/models/error_object.rb +12 -1
  45. data/lib/openai/models/eval_create_params.rb +1 -1
  46. data/lib/openai/models/eval_create_response.rb +1 -1
  47. data/lib/openai/models/eval_list_response.rb +1 -1
  48. data/lib/openai/models/eval_retrieve_response.rb +1 -1
  49. data/lib/openai/models/eval_update_response.rb +1 -1
  50. data/lib/openai/models/fine_tuning/job_list_params.rb +14 -4
  51. data/lib/openai/models/graders/score_model_grader.rb +2 -2
  52. data/lib/openai/models/image_edit_params.rb +12 -9
  53. data/lib/openai/models/realtime/realtime_client_event.rb +9 -0
  54. data/lib/openai/models/realtime/session_update_event.rb +16 -0
  55. data/lib/openai/models/responses/response_computer_tool_call_output_item.rb +2 -2
  56. data/lib/openai/models/responses/response_error.rb +12 -1
  57. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +1166 -3
  58. data/lib/openai/models/responses/responses_server_event.rb +12 -1
  59. data/lib/openai/models/responses/tool.rb +12 -9
  60. data/lib/openai/models/responses/tool_search_output_namespace_tool.rb +174 -0
  61. data/lib/openai/models/video_create_error.rb +12 -1
  62. data/lib/openai/models.rb +12 -0
  63. data/lib/openai/providers/bedrock.rb +20 -1
  64. data/lib/openai/resources/admin/organization/usage.rb +15 -6
  65. data/lib/openai/resources/beta/agents/environments/templates.rb +3 -4
  66. data/lib/openai/resources/beta/agents/sessions/turns/items.rb +68 -0
  67. data/lib/openai/resources/beta/agents/sessions/turns.rb +4 -0
  68. data/lib/openai/resources/beta/agents/sessions.rb +22 -2
  69. data/lib/openai/resources/decisions.rb +59 -0
  70. data/lib/openai/resources/fine_tuning/jobs.rb +7 -2
  71. data/lib/openai/resources/images.rb +8 -6
  72. data/lib/openai/version.rb +1 -1
  73. data/lib/openai.rb +11 -0
  74. data/rbi/openai/client.rbi +3 -0
  75. data/rbi/openai/helpers/agents.rbi +2 -0
  76. data/rbi/openai/helpers/beta/agents/function_tool.rbi +8 -3
  77. data/rbi/openai/helpers/beta/agents/tool_error.rbi +19 -0
  78. data/rbi/openai/helpers/beta/agents.rbi +12 -0
  79. data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +194 -1
  80. data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +194 -1
  81. data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +194 -1
  82. data/rbi/openai/models/admin/organization/usage_completions_params.rbi +9 -4
  83. data/rbi/openai/models/admin/organization/usage_completions_response.rbi +194 -1
  84. data/rbi/openai/models/admin/organization/usage_costs_params.rbi +16 -4
  85. data/rbi/openai/models/admin/organization/usage_costs_response.rbi +194 -1
  86. data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +194 -1
  87. data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +194 -1
  88. data/rbi/openai/models/admin/organization/usage_images_response.rbi +194 -1
  89. data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +194 -1
  90. data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +194 -1
  91. data/rbi/openai/models/admin/organization/usage_web_search_calls_params.rbi +12 -4
  92. data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +194 -1
  93. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +6 -6
  94. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +3 -6
  95. data/rbi/openai/models/beta/agents/sessions/turns/item_list_params.rbi +139 -0
  96. data/rbi/openai/models/beta/beta_response_computer_tool_call_output_item.rbi +2 -2
  97. data/rbi/openai/models/beta/beta_response_error.rbi +12 -0
  98. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +1893 -18
  99. data/rbi/openai/models/beta/beta_responses_server_event.rbi +12 -0
  100. data/rbi/openai/models/beta/beta_tool.rbi +12 -9
  101. data/rbi/openai/models/beta/beta_tool_search_output_namespace_tool.rbi +272 -0
  102. data/rbi/openai/models/beta/environment_param.rbi +6 -6
  103. data/rbi/openai/models/beta/session_turn_error.rbi +18 -0
  104. data/rbi/openai/models/chat/chat_completion_chunk.rbi +123 -17
  105. data/rbi/openai/models/decision.rbi +586 -0
  106. data/rbi/openai/models/decision_create_params.rbi +435 -0
  107. data/rbi/openai/models/decision_input_image.rbi +81 -0
  108. data/rbi/openai/models/decision_input_message.rbi +96 -0
  109. data/rbi/openai/models/decision_input_part.rbi +24 -0
  110. data/rbi/openai/models/decision_input_text.rbi +49 -0
  111. data/rbi/openai/models/error_object.rbi +12 -0
  112. data/rbi/openai/models/eval_create_params.rbi +1 -1
  113. data/rbi/openai/models/eval_create_response.rbi +1 -1
  114. data/rbi/openai/models/eval_list_response.rbi +1 -1
  115. data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
  116. data/rbi/openai/models/eval_update_response.rbi +1 -1
  117. data/rbi/openai/models/fine_tuning/job_list_params.rbi +14 -4
  118. data/rbi/openai/models/graders/score_model_grader.rbi +2 -2
  119. data/rbi/openai/models/image_edit_params.rbi +12 -9
  120. data/rbi/openai/models/realtime/session_update_event.rbi +16 -0
  121. data/rbi/openai/models/responses/response_computer_tool_call_output_item.rbi +2 -2
  122. data/rbi/openai/models/responses/response_error.rbi +12 -0
  123. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +1901 -18
  124. data/rbi/openai/models/responses/responses_server_event.rbi +12 -0
  125. data/rbi/openai/models/responses/tool.rbi +12 -9
  126. data/rbi/openai/models/responses/tool_search_output_namespace_tool.rbi +272 -0
  127. data/rbi/openai/models/video_create_error.rbi +12 -0
  128. data/rbi/openai/models.rbi +12 -0
  129. data/rbi/openai/resources/admin/organization/usage.rbi +15 -6
  130. data/rbi/openai/resources/beta/agents/environments/templates.rbi +3 -4
  131. data/rbi/openai/resources/beta/agents/sessions/turns/items.rbi +62 -0
  132. data/rbi/openai/resources/beta/agents/sessions/turns.rbi +3 -0
  133. data/rbi/openai/resources/beta/agents/sessions.rbi +2 -0
  134. data/rbi/openai/resources/decisions.rbi +57 -0
  135. data/rbi/openai/resources/fine_tuning/jobs.rbi +7 -2
  136. data/rbi/openai/resources/images.rbi +8 -6
  137. data/sig/openai/client.rbs +2 -0
  138. data/sig/openai/helpers/agents.rbs +3 -0
  139. data/sig/openai/helpers/beta/agents/function_tool.rbs +5 -2
  140. data/sig/openai/helpers/beta/agents/tool_error.rbs +17 -0
  141. data/sig/openai/helpers/beta/agents.rbs +5 -0
  142. data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +87 -2
  143. data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +87 -2
  144. data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +87 -2
  145. data/sig/openai/models/admin/organization/usage_completions_params.rbs +14 -6
  146. data/sig/openai/models/admin/organization/usage_completions_response.rbs +87 -2
  147. data/sig/openai/models/admin/organization/usage_costs_params.rbs +25 -7
  148. data/sig/openai/models/admin/organization/usage_costs_response.rbs +87 -2
  149. data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +87 -2
  150. data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +87 -2
  151. data/sig/openai/models/admin/organization/usage_images_response.rbs +87 -2
  152. data/sig/openai/models/admin/organization/usage_moderations_response.rbs +87 -2
  153. data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +87 -2
  154. data/sig/openai/models/admin/organization/usage_web_search_calls_params.rbs +19 -7
  155. data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +87 -2
  156. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +4 -4
  157. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +2 -4
  158. data/sig/openai/models/beta/agents/sessions/turns/item_list_params.rbs +91 -0
  159. data/sig/openai/models/beta/beta_response_computer_tool_call_output_item.rbs +2 -2
  160. data/sig/openai/models/beta/beta_response_error.rbs +10 -0
  161. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +993 -4
  162. data/sig/openai/models/beta/beta_responses_server_event.rbs +10 -0
  163. data/sig/openai/models/beta/beta_tool.rbs +8 -6
  164. data/sig/openai/models/beta/beta_tool_search_output_namespace_tool.rbs +162 -0
  165. data/sig/openai/models/beta/environment_param.rbs +4 -4
  166. data/sig/openai/models/beta/session_turn_error.rbs +12 -0
  167. data/sig/openai/models/chat/chat_completion_chunk.rbs +96 -12
  168. data/sig/openai/models/decision.rbs +296 -0
  169. data/sig/openai/models/decision_create_params.rbs +227 -0
  170. data/sig/openai/models/decision_input_image.rbs +51 -0
  171. data/sig/openai/models/decision_input_message.rbs +57 -0
  172. data/sig/openai/models/decision_input_part.rbs +12 -0
  173. data/sig/openai/models/decision_input_text.rbs +15 -0
  174. data/sig/openai/models/error_object.rbs +10 -0
  175. data/sig/openai/models/eval_create_params.rbs +1 -1
  176. data/sig/openai/models/eval_create_response.rbs +1 -1
  177. data/sig/openai/models/eval_list_response.rbs +1 -1
  178. data/sig/openai/models/eval_retrieve_response.rbs +1 -1
  179. data/sig/openai/models/eval_update_response.rbs +1 -1
  180. data/sig/openai/models/fine_tuning/job_list_params.rbs +14 -4
  181. data/sig/openai/models/graders/score_model_grader.rbs +3 -3
  182. data/sig/openai/models/image_edit_params.rbs +8 -6
  183. data/sig/openai/models/responses/response_computer_tool_call_output_item.rbs +2 -2
  184. data/sig/openai/models/responses/response_error.rbs +10 -0
  185. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +993 -4
  186. data/sig/openai/models/responses/responses_server_event.rbs +10 -0
  187. data/sig/openai/models/responses/tool.rbs +8 -6
  188. data/sig/openai/models/responses/tool_search_output_namespace_tool.rbs +160 -0
  189. data/sig/openai/models/video_create_error.rbs +10 -0
  190. data/sig/openai/models.rbs +12 -0
  191. data/sig/openai/resources/beta/agents/sessions/turns/items.rbs +24 -0
  192. data/sig/openai/resources/beta/agents/sessions/turns.rbs +2 -0
  193. data/sig/openai/resources/beta/agents/sessions.rbs +1 -0
  194. data/sig/openai/resources/decisions.rbs +15 -0
  195. metadata +38 -1
@@ -7,8 +7,11 @@ module OpenAI
7
7
  # @!attribute tools
8
8
  # The loaded tool definitions returned by the tool search output.
9
9
  #
10
- # @return [Array<OpenAI::Models::Beta::BetaFunctionTool, OpenAI::Models::Beta::BetaFileSearchTool, OpenAI::Models::Beta::BetaComputerTool, OpenAI::Models::Beta::BetaComputerUsePreviewTool, OpenAI::Models::Beta::BetaTool::Mcp, OpenAI::Models::Beta::BetaTool::CodeInterpreter, OpenAI::Models::Beta::BetaTool::ProgrammaticToolCalling, OpenAI::Models::Beta::BetaTool::ImageGeneration, OpenAI::Models::Beta::BetaTool::LocalShell, OpenAI::Models::Beta::BetaFunctionShellTool, OpenAI::Models::Beta::BetaCustomTool, OpenAI::Models::Beta::BetaNamespaceTool, OpenAI::Models::Beta::BetaToolSearchTool, OpenAI::Models::Beta::BetaApplyPatchTool, OpenAI::Models::Beta::BetaWebSearchTool, OpenAI::Models::Beta::BetaWebSearchPreviewTool>]
11
- required :tools, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Beta::BetaTool] }
10
+ # @return [Array<OpenAI::Models::Beta::BetaFunctionTool, OpenAI::Models::Beta::BetaFileSearchTool, OpenAI::Models::Beta::BetaComputerTool, OpenAI::Models::Beta::BetaComputerUsePreviewTool, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ProgrammaticToolCalling, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::LocalShell, OpenAI::Models::Beta::BetaFunctionShellTool, OpenAI::Models::Beta::BetaCustomTool, OpenAI::Models::Beta::BetaToolSearchOutputNamespaceTool, OpenAI::Models::Beta::BetaToolSearchTool, OpenAI::Models::Beta::BetaApplyPatchTool, OpenAI::Models::Beta::BetaWebSearchTool, OpenAI::Models::Beta::BetaWebSearchPreviewTool>]
11
+ required(
12
+ :tools,
13
+ -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool] }
14
+ )
12
15
 
13
16
  # @!attribute type
14
17
  # The item type. Always `tool_search_output`.
@@ -47,7 +50,7 @@ module OpenAI
47
50
  optional :status, enum: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Status }, nil?: true
48
51
 
49
52
  # @!method initialize(tools:, id: nil, agent: nil, call_id: nil, execution: nil, status: nil, type: :tool_search_output)
50
- # @param tools [Array<OpenAI::Models::Beta::BetaFunctionTool, OpenAI::Models::Beta::BetaFileSearchTool, OpenAI::Models::Beta::BetaComputerTool, OpenAI::Models::Beta::BetaComputerUsePreviewTool, OpenAI::Models::Beta::BetaTool::Mcp, OpenAI::Models::Beta::BetaTool::CodeInterpreter, OpenAI::Models::Beta::BetaTool::ProgrammaticToolCalling, OpenAI::Models::Beta::BetaTool::ImageGeneration, OpenAI::Models::Beta::BetaTool::LocalShell, OpenAI::Models::Beta::BetaFunctionShellTool, OpenAI::Models::Beta::BetaCustomTool, OpenAI::Models::Beta::BetaNamespaceTool, OpenAI::Models::Beta::BetaToolSearchTool, OpenAI::Models::Beta::BetaApplyPatchTool, OpenAI::Models::Beta::BetaWebSearchTool, OpenAI::Models::Beta::BetaWebSearchPreviewTool>]
53
+ # @param tools [Array<OpenAI::Models::Beta::BetaFunctionTool, OpenAI::Models::Beta::BetaFileSearchTool, OpenAI::Models::Beta::BetaComputerTool, OpenAI::Models::Beta::BetaComputerUsePreviewTool, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ProgrammaticToolCalling, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::LocalShell, OpenAI::Models::Beta::BetaFunctionShellTool, OpenAI::Models::Beta::BetaCustomTool, OpenAI::Models::Beta::BetaToolSearchOutputNamespaceTool, OpenAI::Models::Beta::BetaToolSearchTool, OpenAI::Models::Beta::BetaApplyPatchTool, OpenAI::Models::Beta::BetaWebSearchTool, OpenAI::Models::Beta::BetaWebSearchPreviewTool>]
51
54
  # The loaded tool definitions returned by the tool search output.
52
55
  #
53
56
  # @param id [String, nil]
@@ -68,6 +71,1166 @@ module OpenAI
68
71
  # @param type [Symbol, :tool_search_output]
69
72
  # The item type. Always `tool_search_output`.
70
73
 
74
+ # A tool definition returned by a tool search output.
75
+ module Tool
76
+ extend OpenAI::Internal::Type::Union
77
+
78
+ # Defines a function in your own code the model can choose to call. Learn more about [function calling](https://developers.openai.com/api/docs/guides/function-calling).
79
+ variant -> { OpenAI::Beta::BetaFunctionTool }
80
+
81
+ # A tool that searches for relevant content from uploaded files. Learn more about the [file search tool](https://developers.openai.com/api/docs/guides/tools-file-search).
82
+ variant -> { OpenAI::Beta::BetaFileSearchTool }
83
+
84
+ # A tool that controls a virtual computer. Learn more about the [computer tool](https://developers.openai.com/api/docs/guides/tools-computer-use).
85
+ variant -> { OpenAI::Beta::BetaComputerTool }
86
+
87
+ # A tool that controls a virtual computer. Learn more about the [computer tool](https://developers.openai.com/api/docs/guides/tools-computer-use).
88
+ variant -> { OpenAI::Beta::BetaComputerUsePreviewTool }
89
+
90
+ # Give the model access to additional tools via remote Model Context Protocol
91
+ # (MCP) servers. [Learn more about MCP](https://developers.openai.com/api/docs/guides/tools-connectors-mcp).
92
+ variant -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp }
93
+
94
+ # A tool that runs Python code to help generate a response to a prompt.
95
+ variant -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter }
96
+
97
+ variant -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ProgrammaticToolCalling }
98
+
99
+ # A tool that generates images using the GPT image models.
100
+ variant -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration }
101
+
102
+ # A tool that allows the model to execute shell commands in a local environment.
103
+ variant -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::LocalShell }
104
+
105
+ # A tool that allows the model to execute shell commands.
106
+ variant -> { OpenAI::Beta::BetaFunctionShellTool }
107
+
108
+ # A custom tool that processes input using a specified format. Learn more about [custom tools](https://developers.openai.com/api/docs/guides/function-calling#custom-tools)
109
+ variant -> { OpenAI::Beta::BetaCustomTool }
110
+
111
+ # Groups function/custom tools under a shared namespace.
112
+ variant -> { OpenAI::Beta::BetaToolSearchOutputNamespaceTool }
113
+
114
+ # Hosted or BYOT tool search configuration for deferred tools.
115
+ variant -> { OpenAI::Beta::BetaToolSearchTool }
116
+
117
+ # Allows the assistant to create, delete, or update files using unified diffs.
118
+ variant -> { OpenAI::Beta::BetaApplyPatchTool }
119
+
120
+ # Search the Internet for sources related to the prompt. Learn more about the
121
+ # [web search tool](https://developers.openai.com/api/docs/guides/tools-web-search).
122
+ variant -> { OpenAI::Beta::BetaWebSearchTool }
123
+
124
+ # This tool searches the web for relevant results to use in a response. Learn more about the [web search tool](https://developers.openai.com/api/docs/guides/tools-web-search).
125
+ variant -> { OpenAI::Beta::BetaWebSearchPreviewTool }
126
+
127
+ class Mcp < OpenAI::Internal::Type::BaseModel
128
+ # @!attribute server_label
129
+ # A label for this MCP server, used to identify it in tool calls.
130
+ #
131
+ # @return [String]
132
+ required :server_label, String
133
+
134
+ # @!attribute type
135
+ # The type of the MCP tool. Always `mcp`.
136
+ #
137
+ # @return [Symbol, :mcp]
138
+ required :type, const: :mcp
139
+
140
+ # @!attribute allowed_callers
141
+ # The tool invocation context(s).
142
+ #
143
+ # @return [Array<Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedCaller>, nil]
144
+ optional(
145
+ :allowed_callers,
146
+ -> {
147
+ OpenAI::Internal::Type::ArrayOf[
148
+ enum: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedCaller
149
+ ]
150
+ },
151
+ nil?: true
152
+ )
153
+
154
+ # @!attribute allowed_tools
155
+ # List of allowed tool names or a filter object.
156
+ #
157
+ # @return [Array<String>, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedTools::McpToolFilter, nil]
158
+ optional(
159
+ :allowed_tools,
160
+ union: -> {
161
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedTools
162
+ },
163
+ nil?: true
164
+ )
165
+
166
+ # @!attribute authorization
167
+ # An OAuth access token that can be used with a remote MCP server, either with a
168
+ # custom MCP server URL or a service connector. Your application must handle the
169
+ # OAuth authorization flow and provide the token here.
170
+ #
171
+ # @return [String, nil]
172
+ optional :authorization, String
173
+
174
+ # @!attribute connector_id
175
+ # @deprecated
176
+ #
177
+ # Identifier for service connectors, like those available in ChatGPT. One of
178
+ # `server_url`, `connector_id`, or `tunnel_id` must be provided. Learn more about
179
+ # service connectors
180
+ # [here](https://developers.openai.com/api/docs/guides/tools-connectors-mcp#connectors).
181
+ #
182
+ # This field is deprecated for models released after September 1, 2026. Use
183
+ # `server_url` to connect to a remote MCP server, or `tunnel_id` to connect
184
+ # through a Secure MCP Tunnel.
185
+ #
186
+ # Currently supported `connector_id` values are:
187
+ #
188
+ # - Dropbox: `connector_dropbox`
189
+ # - Gmail: `connector_gmail`
190
+ # - Google Calendar: `connector_googlecalendar`
191
+ # - Google Drive: `connector_googledrive`
192
+ # - Microsoft Teams: `connector_microsoftteams`
193
+ # - Outlook Calendar: `connector_outlookcalendar`
194
+ # - Outlook Email: `connector_outlookemail`
195
+ # - SharePoint: `connector_sharepoint`
196
+ #
197
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::ConnectorID, nil]
198
+ optional(
199
+ :connector_id,
200
+ enum: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::ConnectorID }
201
+ )
202
+
203
+ # @!attribute defer_loading
204
+ # Whether this MCP tool is deferred and discovered via tool search.
205
+ #
206
+ # @return [Boolean, nil]
207
+ optional :defer_loading, OpenAI::Internal::Type::Boolean
208
+
209
+ # @!attribute headers
210
+ # Optional HTTP headers to send to the MCP server. Use for authentication or other
211
+ # purposes.
212
+ #
213
+ # @return [Hash{Symbol=>String}, nil]
214
+ optional :headers, OpenAI::Internal::Type::HashOf[String], nil?: true
215
+
216
+ # @!attribute require_approval
217
+ # Specify which of the MCP server's tools require approval.
218
+ #
219
+ # @return [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter, Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalSetting, nil]
220
+ optional(
221
+ :require_approval,
222
+ union: -> {
223
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval
224
+ },
225
+ nil?: true
226
+ )
227
+
228
+ # @!attribute server_description
229
+ # Optional description of the MCP server, used to provide more context.
230
+ #
231
+ # @return [String, nil]
232
+ optional :server_description, String
233
+
234
+ # @!attribute server_url
235
+ # The URL for the MCP server. One of `server_url`, `connector_id`, or `tunnel_id`
236
+ # must be provided.
237
+ #
238
+ # @return [String, nil]
239
+ optional :server_url, String
240
+
241
+ # @!attribute tunnel_id
242
+ # The Secure MCP Tunnel ID to use instead of a direct server URL. One of
243
+ # `server_url`, `connector_id`, or `tunnel_id` must be provided.
244
+ #
245
+ # @return [String, nil]
246
+ optional :tunnel_id, String
247
+
248
+ # @!method initialize(server_label:, allowed_callers: nil, allowed_tools: nil, authorization: nil, connector_id: nil, defer_loading: nil, headers: nil, require_approval: nil, server_description: nil, server_url: nil, tunnel_id: nil, type: :mcp)
249
+ # Give the model access to additional tools via remote Model Context Protocol
250
+ # (MCP) servers.
251
+ # [Learn more about MCP](https://developers.openai.com/api/docs/guides/tools-connectors-mcp).
252
+ #
253
+ # @param server_label [String]
254
+ # A label for this MCP server, used to identify it in tool calls.
255
+ #
256
+ # @param allowed_callers [Array<Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedCaller>, nil]
257
+ # The tool invocation context(s).
258
+ #
259
+ # @param allowed_tools [Array<String>, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedTools::McpToolFilter, nil]
260
+ # List of allowed tool names or a filter object.
261
+ #
262
+ # @param authorization [String]
263
+ # An OAuth access token that can be used with a remote MCP server, either with a
264
+ # custom MCP server URL or a service connector. Your application must handle the
265
+ # OAuth authorization flow and provide the token here.
266
+ #
267
+ # @param connector_id [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::ConnectorID]
268
+ # Identifier for service connectors, like those available in ChatGPT. One of
269
+ # `server_url`, `connector_id`, or `tunnel_id` must be provided. Learn more about
270
+ # service connectors
271
+ # [here](https://developers.openai.com/api/docs/guides/tools-connectors-mcp#connectors).
272
+ #
273
+ # This field is deprecated for models released after September 1, 2026. Use
274
+ # `server_url` to connect to a remote MCP server, or `tunnel_id` to connect
275
+ # through a Secure MCP Tunnel.
276
+ #
277
+ # Currently supported `connector_id` values are:
278
+ #
279
+ # - Dropbox: `connector_dropbox`
280
+ # - Gmail: `connector_gmail`
281
+ # - Google Calendar: `connector_googlecalendar`
282
+ # - Google Drive: `connector_googledrive`
283
+ # - Microsoft Teams: `connector_microsoftteams`
284
+ # - Outlook Calendar: `connector_outlookcalendar`
285
+ # - Outlook Email: `connector_outlookemail`
286
+ # - SharePoint: `connector_sharepoint`
287
+ #
288
+ # @param defer_loading [Boolean]
289
+ # Whether this MCP tool is deferred and discovered via tool search.
290
+ #
291
+ # @param headers [Hash{Symbol=>String}, nil]
292
+ # Optional HTTP headers to send to the MCP server. Use for authentication or other
293
+ # purposes.
294
+ #
295
+ # @param require_approval [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter, Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalSetting, nil]
296
+ # Specify which of the MCP server's tools require approval.
297
+ #
298
+ # @param server_description [String]
299
+ # Optional description of the MCP server, used to provide more context.
300
+ #
301
+ # @param server_url [String]
302
+ # The URL for the MCP server. One of `server_url`, `connector_id`, or `tunnel_id`
303
+ # must be provided.
304
+ #
305
+ # @param tunnel_id [String]
306
+ # The Secure MCP Tunnel ID to use instead of a direct server URL. One of
307
+ # `server_url`, `connector_id`, or `tunnel_id` must be provided.
308
+ #
309
+ # @param type [Symbol, :mcp]
310
+ # The type of the MCP tool. Always `mcp`.
311
+ module AllowedCaller
312
+ extend OpenAI::Internal::Type::Enum
313
+
314
+ DIRECT = :direct
315
+ PROGRAMMATIC = :programmatic
316
+
317
+ # @!method self.values
318
+ # @return [Array<Symbol>]
319
+ end
320
+
321
+ # List of allowed tool names or a filter object.
322
+ #
323
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp#allowed_tools
324
+ module AllowedTools
325
+ extend OpenAI::Internal::Type::Union
326
+
327
+ # A string array of allowed tool names
328
+ variant(
329
+ -> {
330
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedTools::StringArray
331
+ }
332
+ )
333
+
334
+ # A filter object to specify which tools are allowed.
335
+ variant(
336
+ -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedTools::McpToolFilter }
337
+ )
338
+
339
+ class McpToolFilter < OpenAI::Internal::Type::BaseModel
340
+ # @!attribute read_only
341
+ # Indicates whether or not a tool modifies data or is read-only. If an MCP server
342
+ # is
343
+ # [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint),
344
+ # it will match this filter.
345
+ #
346
+ # @return [Boolean, nil]
347
+ optional :read_only, OpenAI::Internal::Type::Boolean
348
+
349
+ # @!attribute tool_names
350
+ # List of allowed tool names.
351
+ #
352
+ # @return [Array<String>, nil]
353
+ optional :tool_names, OpenAI::Internal::Type::ArrayOf[String]
354
+
355
+ # @!method initialize(read_only: nil, tool_names: nil)
356
+ # A filter object to specify which tools are allowed.
357
+ #
358
+ # @param read_only [Boolean]
359
+ # Indicates whether or not a tool modifies data or is read-only. If an MCP server
360
+ # is
361
+ # [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint),
362
+ # it will match this filter.
363
+ #
364
+ # @param tool_names [Array<String>]
365
+ # List of allowed tool names.
366
+ end
367
+
368
+ # @!method self.variants
369
+ # @return [Array(Array<String>, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::AllowedTools::McpToolFilter)]
370
+
371
+ # @type [OpenAI::Internal::Type::Converter]
372
+ StringArray = OpenAI::Internal::Type::ArrayOf[String]
373
+ end
374
+
375
+ # @deprecated
376
+ #
377
+ # Identifier for service connectors, like those available in ChatGPT. One of
378
+ # `server_url`, `connector_id`, or `tunnel_id` must be provided. Learn more about
379
+ # service connectors
380
+ # [here](https://developers.openai.com/api/docs/guides/tools-connectors-mcp#connectors).
381
+ #
382
+ # This field is deprecated for models released after September 1, 2026. Use
383
+ # `server_url` to connect to a remote MCP server, or `tunnel_id` to connect
384
+ # through a Secure MCP Tunnel.
385
+ #
386
+ # Currently supported `connector_id` values are:
387
+ #
388
+ # - Dropbox: `connector_dropbox`
389
+ # - Gmail: `connector_gmail`
390
+ # - Google Calendar: `connector_googlecalendar`
391
+ # - Google Drive: `connector_googledrive`
392
+ # - Microsoft Teams: `connector_microsoftteams`
393
+ # - Outlook Calendar: `connector_outlookcalendar`
394
+ # - Outlook Email: `connector_outlookemail`
395
+ # - SharePoint: `connector_sharepoint`
396
+ #
397
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp#connector_id
398
+ module ConnectorID
399
+ extend OpenAI::Internal::Type::Enum
400
+
401
+ CONNECTOR_DROPBOX = :connector_dropbox
402
+ CONNECTOR_GMAIL = :connector_gmail
403
+ CONNECTOR_GOOGLECALENDAR = :connector_googlecalendar
404
+ CONNECTOR_GOOGLEDRIVE = :connector_googledrive
405
+ CONNECTOR_MICROSOFTTEAMS = :connector_microsoftteams
406
+ CONNECTOR_OUTLOOKCALENDAR = :connector_outlookcalendar
407
+ CONNECTOR_OUTLOOKEMAIL = :connector_outlookemail
408
+ CONNECTOR_SHAREPOINT = :connector_sharepoint
409
+
410
+ # @!method self.values
411
+ # @return [Array<Symbol>]
412
+ end
413
+
414
+ # Specify which of the MCP server's tools require approval.
415
+ #
416
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp#require_approval
417
+ module RequireApproval
418
+ extend OpenAI::Internal::Type::Union
419
+
420
+ # Specify which of the MCP server's tools require approval. Can be
421
+ # `always`, `never`, or a filter object associated with tools
422
+ # that require approval.
423
+ variant(
424
+ -> {
425
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter
426
+ }
427
+ )
428
+
429
+ # Specify a single approval policy for all tools. One of `always` or
430
+ # `never`. When set to `always`, all tools will require approval. When
431
+ # set to `never`, all tools will not require approval.
432
+ variant(
433
+ enum: -> {
434
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalSetting
435
+ }
436
+ )
437
+
438
+ class McpToolApprovalFilter < OpenAI::Internal::Type::BaseModel
439
+ # @!attribute always
440
+ # A filter object to specify which tools are allowed.
441
+ #
442
+ # @return [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter::Always, nil]
443
+ optional(
444
+ :always,
445
+ -> {
446
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter::Always
447
+ }
448
+ )
449
+
450
+ # @!attribute never
451
+ # A filter object to specify which tools are allowed.
452
+ #
453
+ # @return [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter::Never, nil]
454
+ optional(
455
+ :never,
456
+ -> {
457
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter::Never
458
+ }
459
+ )
460
+
461
+ # @!method initialize(always: nil, never: nil)
462
+ # Specify which of the MCP server's tools require approval. Can be `always`,
463
+ # `never`, or a filter object associated with tools that require approval.
464
+ #
465
+ # @param always [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter::Always]
466
+ # A filter object to specify which tools are allowed.
467
+ #
468
+ # @param never [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter::Never]
469
+ # A filter object to specify which tools are allowed.
470
+
471
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter#always
472
+ class Always < OpenAI::Internal::Type::BaseModel
473
+ # @!attribute read_only
474
+ # Indicates whether or not a tool modifies data or is read-only. If an MCP server
475
+ # is
476
+ # [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint),
477
+ # it will match this filter.
478
+ #
479
+ # @return [Boolean, nil]
480
+ optional :read_only, OpenAI::Internal::Type::Boolean
481
+
482
+ # @!attribute tool_names
483
+ # List of allowed tool names.
484
+ #
485
+ # @return [Array<String>, nil]
486
+ optional :tool_names, OpenAI::Internal::Type::ArrayOf[String]
487
+
488
+ # @!method initialize(read_only: nil, tool_names: nil)
489
+ # A filter object to specify which tools are allowed.
490
+ #
491
+ # @param read_only [Boolean]
492
+ # Indicates whether or not a tool modifies data or is read-only. If an MCP server
493
+ # is
494
+ # [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint),
495
+ # it will match this filter.
496
+ #
497
+ # @param tool_names [Array<String>]
498
+ # List of allowed tool names.
499
+ end
500
+
501
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter#never
502
+ class Never < OpenAI::Internal::Type::BaseModel
503
+ # @!attribute read_only
504
+ # Indicates whether or not a tool modifies data or is read-only. If an MCP server
505
+ # is
506
+ # [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint),
507
+ # it will match this filter.
508
+ #
509
+ # @return [Boolean, nil]
510
+ optional :read_only, OpenAI::Internal::Type::Boolean
511
+
512
+ # @!attribute tool_names
513
+ # List of allowed tool names.
514
+ #
515
+ # @return [Array<String>, nil]
516
+ optional :tool_names, OpenAI::Internal::Type::ArrayOf[String]
517
+
518
+ # @!method initialize(read_only: nil, tool_names: nil)
519
+ # A filter object to specify which tools are allowed.
520
+ #
521
+ # @param read_only [Boolean]
522
+ # Indicates whether or not a tool modifies data or is read-only. If an MCP server
523
+ # is
524
+ # [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint),
525
+ # it will match this filter.
526
+ #
527
+ # @param tool_names [Array<String>]
528
+ # List of allowed tool names.
529
+ end
530
+ end
531
+
532
+ # Specify a single approval policy for all tools. One of `always` or `never`. When
533
+ # set to `always`, all tools will require approval. When set to `never`, all tools
534
+ # will not require approval.
535
+ module McpToolApprovalSetting
536
+ extend OpenAI::Internal::Type::Enum
537
+
538
+ ALWAYS = :always
539
+ NEVER = :never
540
+
541
+ # @!method self.values
542
+ # @return [Array<Symbol>]
543
+ end
544
+
545
+ # @!method self.variants
546
+ # @return [Array(OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalFilter, Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp::RequireApproval::McpToolApprovalSetting)]
547
+ end
548
+ end
549
+
550
+ class CodeInterpreter < OpenAI::Internal::Type::BaseModel
551
+ # @!attribute container
552
+ # The code interpreter container. Can be a container ID or an object that
553
+ # specifies uploaded file IDs to make available to your code, along with an
554
+ # optional `memory_limit` setting.
555
+ #
556
+ # @return [String, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto]
557
+ required(
558
+ :container,
559
+ union: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container }
560
+ )
561
+
562
+ # @!attribute type
563
+ # The type of the code interpreter tool. Always `code_interpreter`.
564
+ #
565
+ # @return [Symbol, :code_interpreter]
566
+ required :type, const: :code_interpreter
567
+
568
+ # @!attribute allowed_callers
569
+ # The tool invocation context(s).
570
+ #
571
+ # @return [Array<Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::AllowedCaller>, nil]
572
+ optional(
573
+ :allowed_callers,
574
+ -> {
575
+ OpenAI::Internal::Type::ArrayOf[
576
+ enum: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::AllowedCaller
577
+ ]
578
+ },
579
+ nil?: true
580
+ )
581
+
582
+ # @!method initialize(container:, allowed_callers: nil, type: :code_interpreter)
583
+ # A tool that runs Python code to help generate a response to a prompt.
584
+ #
585
+ # @param container [String, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto]
586
+ # The code interpreter container. Can be a container ID or an object that
587
+ # specifies uploaded file IDs to make available to your code, along with an
588
+ # optional `memory_limit` setting.
589
+ #
590
+ # @param allowed_callers [Array<Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::AllowedCaller>, nil]
591
+ # The tool invocation context(s).
592
+ #
593
+ # @param type [Symbol, :code_interpreter]
594
+ # The type of the code interpreter tool. Always `code_interpreter`.
595
+
596
+ # The code interpreter container. Can be a container ID or an object that
597
+ # specifies uploaded file IDs to make available to your code, along with an
598
+ # optional `memory_limit` setting.
599
+ #
600
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter#container
601
+ module Container
602
+ extend OpenAI::Internal::Type::Union
603
+
604
+ # The container ID.
605
+ variant String
606
+
607
+ # Configuration for a code interpreter container. Optionally specify the IDs of the files to run the code on.
608
+ variant(
609
+ -> {
610
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto
611
+ }
612
+ )
613
+
614
+ class CodeInterpreterToolAuto < OpenAI::Internal::Type::BaseModel
615
+ # @!attribute type
616
+ # Always `auto`.
617
+ #
618
+ # @return [Symbol, :auto]
619
+ required :type, const: :auto
620
+
621
+ # @!attribute file_ids
622
+ # An optional list of uploaded files to make available to your code.
623
+ #
624
+ # @return [Array<String>, nil]
625
+ optional :file_ids, OpenAI::Internal::Type::ArrayOf[String]
626
+
627
+ # @!attribute memory_limit
628
+ # The memory limit for the code interpreter container.
629
+ #
630
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto::MemoryLimit, nil]
631
+ optional(
632
+ :memory_limit,
633
+ enum: -> {
634
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto::MemoryLimit
635
+ },
636
+ nil?: true
637
+ )
638
+
639
+ # @!attribute network_policy
640
+ # Network access policy for the container.
641
+ #
642
+ # @return [OpenAI::Models::Beta::BetaContainerNetworkPolicyDisabled, OpenAI::Models::Beta::BetaContainerNetworkPolicyAllowlist, nil]
643
+ optional(
644
+ :network_policy,
645
+ union: -> {
646
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto::NetworkPolicy
647
+ }
648
+ )
649
+
650
+ # @!method initialize(file_ids: nil, memory_limit: nil, network_policy: nil, type: :auto)
651
+ # Configuration for a code interpreter container. Optionally specify the IDs of
652
+ # the files to run the code on.
653
+ #
654
+ # @param file_ids [Array<String>]
655
+ # An optional list of uploaded files to make available to your code.
656
+ #
657
+ # @param memory_limit [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto::MemoryLimit, nil]
658
+ # The memory limit for the code interpreter container.
659
+ #
660
+ # @param network_policy [OpenAI::Models::Beta::BetaContainerNetworkPolicyDisabled, OpenAI::Models::Beta::BetaContainerNetworkPolicyAllowlist]
661
+ # Network access policy for the container.
662
+ #
663
+ # @param type [Symbol, :auto]
664
+ # Always `auto`.
665
+
666
+ # The memory limit for the code interpreter container.
667
+ #
668
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto#memory_limit
669
+ module MemoryLimit
670
+ extend OpenAI::Internal::Type::Enum
671
+
672
+ MEMORY_LIMIT_1G = :"1g"
673
+ MEMORY_LIMIT_4G = :"4g"
674
+ MEMORY_LIMIT_16G = :"16g"
675
+ MEMORY_LIMIT_64G = :"64g"
676
+
677
+ # @!method self.values
678
+ # @return [Array<Symbol>]
679
+ end
680
+
681
+ # Network access policy for the container.
682
+ #
683
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto#network_policy
684
+ module NetworkPolicy
685
+ extend OpenAI::Internal::Type::Union
686
+
687
+ discriminator :type
688
+
689
+ variant :disabled, -> { OpenAI::Beta::BetaContainerNetworkPolicyDisabled }
690
+
691
+ variant :allowlist, -> { OpenAI::Beta::BetaContainerNetworkPolicyAllowlist }
692
+
693
+ # @!method self.variants
694
+ # @return [Array(OpenAI::Models::Beta::BetaContainerNetworkPolicyDisabled, OpenAI::Models::Beta::BetaContainerNetworkPolicyAllowlist)]
695
+ end
696
+ end
697
+
698
+ # @!method self.variants
699
+ # @return [Array(String, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter::Container::CodeInterpreterToolAuto)]
700
+ end
701
+
702
+ module AllowedCaller
703
+ extend OpenAI::Internal::Type::Enum
704
+
705
+ DIRECT = :direct
706
+ PROGRAMMATIC = :programmatic
707
+
708
+ # @!method self.values
709
+ # @return [Array<Symbol>]
710
+ end
711
+ end
712
+
713
+ class ProgrammaticToolCalling < OpenAI::Internal::Type::BaseModel
714
+ # @!attribute type
715
+ # The type of the tool. Always `programmatic_tool_calling`.
716
+ #
717
+ # @return [Symbol, :programmatic_tool_calling]
718
+ required :type, const: :programmatic_tool_calling
719
+
720
+ # @!method initialize(type: :programmatic_tool_calling)
721
+ # @param type [Symbol, :programmatic_tool_calling]
722
+ # The type of the tool. Always `programmatic_tool_calling`.
723
+ end
724
+
725
+ class ImageGeneration < OpenAI::Internal::Type::BaseModel
726
+ # @!attribute type
727
+ # The type of the image generation tool. Always `image_generation`.
728
+ #
729
+ # @return [Symbol, :image_generation]
730
+ required :type, const: :image_generation
731
+
732
+ # @!attribute action
733
+ # Whether to generate a new image or edit an existing image. Default: `auto`.
734
+ #
735
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Action, nil]
736
+ optional(
737
+ :action,
738
+ enum: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Action }
739
+ )
740
+
741
+ # @!attribute background
742
+ # Allows to set transparency for the background of the generated image(s). Must be
743
+ # one of `transparent`, `opaque`, or `auto` (default value). When `auto` is used,
744
+ # the model will automatically determine the best background for the image.
745
+ #
746
+ # `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`, including their `2026-09-08`
747
+ # snapshots, support `opaque` and `transparent` backgrounds. Transparent
748
+ # backgrounds are available for supported GPT Image models. For `gpt-image-2` and
749
+ # `gpt-image-2-2026-04-21`, this support is in preview. When using `transparent`,
750
+ # set the output format to `png` or `webp`.
751
+ #
752
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Background, nil]
753
+ optional(
754
+ :background,
755
+ enum: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Background }
756
+ )
757
+
758
+ # @!attribute input_fidelity
759
+ # Control how much effort the model will exert to match the style and features,
760
+ # especially facial features, of input images. Supports `high` and `low` on
761
+ # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
762
+ # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
763
+ #
764
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputFidelity, nil]
765
+ optional(
766
+ :input_fidelity,
767
+ enum: -> {
768
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputFidelity
769
+ },
770
+ nil?: true
771
+ )
772
+
773
+ # @!attribute input_image_mask
774
+ # Optional mask for inpainting. Contains `image_url` (string, optional) and
775
+ # `file_id` (string, optional).
776
+ #
777
+ # @return [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputImageMask, nil]
778
+ optional(
779
+ :input_image_mask,
780
+ -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputImageMask }
781
+ )
782
+
783
+ # @!attribute model
784
+ # The image generation model to use. One of `gpt-image-1`, `gpt-image-1-mini`,
785
+ # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
786
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
787
+ # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
788
+ # `chatgpt-image-latest`. Default: `gpt-image-1`.
789
+ #
790
+ # @return [String, Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model, nil]
791
+ optional(
792
+ :model,
793
+ union: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model }
794
+ )
795
+
796
+ # @!attribute moderation
797
+ # Moderation level for the generated image. Default: `auto`.
798
+ #
799
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Moderation, nil]
800
+ optional(
801
+ :moderation,
802
+ enum: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Moderation }
803
+ )
804
+
805
+ # @!attribute output_compression
806
+ # Compression level for the output image. Default: 100.
807
+ #
808
+ # @return [Integer, nil]
809
+ optional :output_compression, Integer
810
+
811
+ # @!attribute output_format
812
+ # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
813
+ # Default: `png`.
814
+ #
815
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::OutputFormat, nil]
816
+ optional(
817
+ :output_format,
818
+ enum: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::OutputFormat }
819
+ )
820
+
821
+ # @!attribute partial_images
822
+ # Number of partial images to generate in streaming mode, from 0 (default value)
823
+ # to 3.
824
+ #
825
+ # @return [Integer, nil]
826
+ optional :partial_images, Integer
827
+
828
+ # @!attribute quality
829
+ # The quality of the generated image. The GPT image models support `low`,
830
+ # `medium`, and `high`. `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`,
831
+ # including their `2026-09-08` snapshots, also support `xhigh` and `max`. Default:
832
+ # `auto`.
833
+ #
834
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Quality, nil]
835
+ optional(
836
+ :quality,
837
+ enum: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Quality }
838
+ )
839
+
840
+ # @!attribute size
841
+ # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
842
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
843
+ # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
844
+ # resolutions are supported as `WIDTHxHEIGHT` strings, for example `1536x864`.
845
+ # Width and height must both be divisible by 16 and the requested aspect ratio
846
+ # must be between 1:3 and 3:1. Resolutions above `2560x1440` are experimental, and
847
+ # the maximum supported resolution is `3840x2160`. The requested size must also
848
+ # satisfy the model's current pixel and edge limits. The standard sizes
849
+ # `1024x1024`, `1536x1024`, and `1024x1536` are supported by the GPT image models;
850
+ # `auto` is supported for models that allow automatic sizing.
851
+ #
852
+ # @return [String, Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size, nil]
853
+ optional(
854
+ :size,
855
+ union: -> { OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size }
856
+ )
857
+
858
+ # @!method initialize(action: nil, background: nil, input_fidelity: nil, input_image_mask: nil, model: nil, moderation: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, size: nil, type: :image_generation)
859
+ # A tool that generates images using the GPT image models.
860
+ #
861
+ # @param action [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Action]
862
+ # Whether to generate a new image or edit an existing image. Default: `auto`.
863
+ #
864
+ # @param background [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Background]
865
+ # Allows to set transparency for the background of the generated image(s). Must be
866
+ # one of `transparent`, `opaque`, or `auto` (default value). When `auto` is used,
867
+ # the model will automatically determine the best background for the image.
868
+ #
869
+ # `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`, including their `2026-09-08`
870
+ # snapshots, support `opaque` and `transparent` backgrounds. Transparent
871
+ # backgrounds are available for supported GPT Image models. For `gpt-image-2` and
872
+ # `gpt-image-2-2026-04-21`, this support is in preview. When using `transparent`,
873
+ # set the output format to `png` or `webp`.
874
+ #
875
+ # @param input_fidelity [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputFidelity, nil]
876
+ # Control how much effort the model will exert to match the style and features,
877
+ # especially facial features, of input images. Supports `high` and `low` on
878
+ # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
879
+ # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
880
+ #
881
+ # @param input_image_mask [OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputImageMask]
882
+ # Optional mask for inpainting. Contains `image_url` (string, optional) and
883
+ # `file_id` (string, optional).
884
+ #
885
+ # @param model [String, Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model]
886
+ # The image generation model to use. One of `gpt-image-1`, `gpt-image-1-mini`,
887
+ # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
888
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
889
+ # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
890
+ # `chatgpt-image-latest`. Default: `gpt-image-1`.
891
+ #
892
+ # @param moderation [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Moderation]
893
+ # Moderation level for the generated image. Default: `auto`.
894
+ #
895
+ # @param output_compression [Integer]
896
+ # Compression level for the output image. Default: 100.
897
+ #
898
+ # @param output_format [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::OutputFormat]
899
+ # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
900
+ # Default: `png`.
901
+ #
902
+ # @param partial_images [Integer]
903
+ # Number of partial images to generate in streaming mode, from 0 (default value)
904
+ # to 3.
905
+ #
906
+ # @param quality [Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Quality]
907
+ # The quality of the generated image. The GPT image models support `low`,
908
+ # `medium`, and `high`. `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`,
909
+ # including their `2026-09-08` snapshots, also support `xhigh` and `max`. Default:
910
+ # `auto`.
911
+ #
912
+ # @param size [String, Symbol, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size]
913
+ # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
914
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
915
+ # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
916
+ # resolutions are supported as `WIDTHxHEIGHT` strings, for example `1536x864`.
917
+ # Width and height must both be divisible by 16 and the requested aspect ratio
918
+ # must be between 1:3 and 3:1. Resolutions above `2560x1440` are experimental, and
919
+ # the maximum supported resolution is `3840x2160`. The requested size must also
920
+ # satisfy the model's current pixel and edge limits. The standard sizes
921
+ # `1024x1024`, `1536x1024`, and `1024x1536` are supported by the GPT image models;
922
+ # `auto` is supported for models that allow automatic sizing.
923
+ #
924
+ # @param type [Symbol, :image_generation]
925
+ # The type of the image generation tool. Always `image_generation`.
926
+
927
+ # Whether to generate a new image or edit an existing image. Default: `auto`.
928
+ #
929
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#action
930
+ module Action
931
+ extend OpenAI::Internal::Type::Enum
932
+
933
+ GENERATE = :generate
934
+ EDIT = :edit
935
+ AUTO = :auto
936
+
937
+ # @!method self.values
938
+ # @return [Array<Symbol>]
939
+ end
940
+
941
+ # Allows to set transparency for the background of the generated image(s). Must be
942
+ # one of `transparent`, `opaque`, or `auto` (default value). When `auto` is used,
943
+ # the model will automatically determine the best background for the image.
944
+ #
945
+ # `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`, including their `2026-09-08`
946
+ # snapshots, support `opaque` and `transparent` backgrounds. Transparent
947
+ # backgrounds are available for supported GPT Image models. For `gpt-image-2` and
948
+ # `gpt-image-2-2026-04-21`, this support is in preview. When using `transparent`,
949
+ # set the output format to `png` or `webp`.
950
+ #
951
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#background
952
+ module Background
953
+ extend OpenAI::Internal::Type::Enum
954
+
955
+ TRANSPARENT = :transparent
956
+ OPAQUE = :opaque
957
+ AUTO = :auto
958
+
959
+ # @!method self.values
960
+ # @return [Array<Symbol>]
961
+ end
962
+
963
+ # Control how much effort the model will exert to match the style and features,
964
+ # especially facial features, of input images. Supports `high` and `low` on
965
+ # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
966
+ # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
967
+ #
968
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#input_fidelity
969
+ module InputFidelity
970
+ extend OpenAI::Internal::Type::Enum
971
+
972
+ HIGH = :high
973
+ LOW = :low
974
+
975
+ # @!method self.values
976
+ # @return [Array<Symbol>]
977
+ end
978
+
979
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#input_image_mask
980
+ class InputImageMask < OpenAI::Internal::Type::BaseModel
981
+ # @!attribute file_id
982
+ # File ID for the mask image.
983
+ #
984
+ # @return [String, nil]
985
+ optional :file_id, String
986
+
987
+ # @!attribute image_url
988
+ # Base64-encoded mask image.
989
+ #
990
+ # @return [String, nil]
991
+ optional :image_url, String
992
+
993
+ # @!method initialize(file_id: nil, image_url: nil)
994
+ # Optional mask for inpainting. Contains `image_url` (string, optional) and
995
+ # `file_id` (string, optional).
996
+ #
997
+ # @param file_id [String]
998
+ # File ID for the mask image.
999
+ #
1000
+ # @param image_url [String]
1001
+ # Base64-encoded mask image.
1002
+ end
1003
+
1004
+ # The image generation model to use. One of `gpt-image-1`, `gpt-image-1-mini`,
1005
+ # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
1006
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
1007
+ # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
1008
+ # `chatgpt-image-latest`. Default: `gpt-image-1`.
1009
+ #
1010
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#model
1011
+ module Model
1012
+ extend OpenAI::Internal::Type::Union
1013
+
1014
+ variant String
1015
+
1016
+ variant(
1017
+ const: -> {
1018
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_1
1019
+ }
1020
+ )
1021
+
1022
+ variant(
1023
+ const: -> {
1024
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_1_MINI
1025
+ }
1026
+ )
1027
+
1028
+ variant(
1029
+ const: -> {
1030
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_2
1031
+ }
1032
+ )
1033
+
1034
+ variant(
1035
+ const: -> {
1036
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_2_2026_04_21
1037
+ }
1038
+ )
1039
+
1040
+ variant(
1041
+ const: -> {
1042
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_2_5_SUNBURST
1043
+ }
1044
+ )
1045
+
1046
+ variant(
1047
+ const: -> {
1048
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_2_5_SUNBURST_2026_09_08
1049
+ }
1050
+ )
1051
+
1052
+ variant(
1053
+ const: -> {
1054
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_2_5_FLARE
1055
+ }
1056
+ )
1057
+
1058
+ variant(
1059
+ const: -> {
1060
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_2_5_FLARE_2026_09_08
1061
+ }
1062
+ )
1063
+
1064
+ variant(
1065
+ const: -> {
1066
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::GPT_IMAGE_1_5
1067
+ }
1068
+ )
1069
+
1070
+ variant(
1071
+ const: -> {
1072
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::CHATGPT_IMAGE_LATEST
1073
+ }
1074
+ )
1075
+
1076
+ # @!method self.variants
1077
+ # @return [Array(String, Symbol)]
1078
+
1079
+ define_sorbet_constant!(:Variants) do
1080
+ T.type_alias {
1081
+ T.any(
1082
+ String,
1083
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::TaggedSymbol
1084
+ )
1085
+ }
1086
+ end
1087
+
1088
+ # @!group
1089
+
1090
+ GPT_IMAGE_1 = :"gpt-image-1"
1091
+ GPT_IMAGE_1_MINI = :"gpt-image-1-mini"
1092
+ GPT_IMAGE_2 = :"gpt-image-2"
1093
+ GPT_IMAGE_2_2026_04_21 = :"gpt-image-2-2026-04-21"
1094
+ GPT_IMAGE_2_5_SUNBURST = :"gpt-image-2.5-sunburst"
1095
+ GPT_IMAGE_2_5_SUNBURST_2026_09_08 = :"gpt-image-2.5-sunburst-2026-09-08"
1096
+ GPT_IMAGE_2_5_FLARE = :"gpt-image-2.5-flare"
1097
+ GPT_IMAGE_2_5_FLARE_2026_09_08 = :"gpt-image-2.5-flare-2026-09-08"
1098
+ GPT_IMAGE_1_5 = :"gpt-image-1.5"
1099
+ CHATGPT_IMAGE_LATEST = :"chatgpt-image-latest"
1100
+
1101
+ # @!endgroup
1102
+ end
1103
+
1104
+ # Moderation level for the generated image. Default: `auto`.
1105
+ #
1106
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#moderation
1107
+ module Moderation
1108
+ extend OpenAI::Internal::Type::Enum
1109
+
1110
+ AUTO = :auto
1111
+ LOW = :low
1112
+
1113
+ # @!method self.values
1114
+ # @return [Array<Symbol>]
1115
+ end
1116
+
1117
+ # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1118
+ # Default: `png`.
1119
+ #
1120
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#output_format
1121
+ module OutputFormat
1122
+ extend OpenAI::Internal::Type::Enum
1123
+
1124
+ PNG = :png
1125
+ WEBP = :webp
1126
+ JPEG = :jpeg
1127
+
1128
+ # @!method self.values
1129
+ # @return [Array<Symbol>]
1130
+ end
1131
+
1132
+ # The quality of the generated image. The GPT image models support `low`,
1133
+ # `medium`, and `high`. `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`,
1134
+ # including their `2026-09-08` snapshots, also support `xhigh` and `max`. Default:
1135
+ # `auto`.
1136
+ #
1137
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#quality
1138
+ module Quality
1139
+ extend OpenAI::Internal::Type::Enum
1140
+
1141
+ LOW = :low
1142
+ MEDIUM = :medium
1143
+ HIGH = :high
1144
+ XHIGH = :xhigh
1145
+ MAX = :max
1146
+ AUTO = :auto
1147
+
1148
+ # @!method self.values
1149
+ # @return [Array<Symbol>]
1150
+ end
1151
+
1152
+ # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
1153
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
1154
+ # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
1155
+ # resolutions are supported as `WIDTHxHEIGHT` strings, for example `1536x864`.
1156
+ # Width and height must both be divisible by 16 and the requested aspect ratio
1157
+ # must be between 1:3 and 3:1. Resolutions above `2560x1440` are experimental, and
1158
+ # the maximum supported resolution is `3840x2160`. The requested size must also
1159
+ # satisfy the model's current pixel and edge limits. The standard sizes
1160
+ # `1024x1024`, `1536x1024`, and `1024x1536` are supported by the GPT image models;
1161
+ # `auto` is supported for models that allow automatic sizing.
1162
+ #
1163
+ # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration#size
1164
+ module Size
1165
+ extend OpenAI::Internal::Type::Union
1166
+
1167
+ variant String
1168
+
1169
+ variant(
1170
+ const: -> {
1171
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size::SIZE_1024X1024
1172
+ }
1173
+ )
1174
+
1175
+ variant(
1176
+ const: -> {
1177
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size::SIZE_1024X1536
1178
+ }
1179
+ )
1180
+
1181
+ variant(
1182
+ const: -> {
1183
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size::SIZE_1536X1024
1184
+ }
1185
+ )
1186
+
1187
+ variant(
1188
+ const: -> {
1189
+ OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size::AUTO
1190
+ }
1191
+ )
1192
+
1193
+ # @!method self.variants
1194
+ # @return [Array(String, Symbol)]
1195
+
1196
+ define_sorbet_constant!(:Variants) do
1197
+ T.type_alias {
1198
+ T.any(
1199
+ String,
1200
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size::TaggedSymbol
1201
+ )
1202
+ }
1203
+ end
1204
+
1205
+ # @!group
1206
+
1207
+ SIZE_1024X1024 = :"1024x1024"
1208
+ SIZE_1024X1536 = :"1024x1536"
1209
+ SIZE_1536X1024 = :"1536x1024"
1210
+ AUTO = :auto
1211
+
1212
+ # @!endgroup
1213
+ end
1214
+ end
1215
+
1216
+ class LocalShell < OpenAI::Internal::Type::BaseModel
1217
+ # @!attribute type
1218
+ # The type of the local shell tool. Always `local_shell`.
1219
+ #
1220
+ # @return [Symbol, :local_shell]
1221
+ required :type, const: :local_shell
1222
+
1223
+ # @!method initialize(type: :local_shell)
1224
+ # A tool that allows the model to execute shell commands in a local environment.
1225
+ #
1226
+ # @param type [Symbol, :local_shell]
1227
+ # The type of the local shell tool. Always `local_shell`.
1228
+ end
1229
+
1230
+ # @!method self.variants
1231
+ # @return [Array(OpenAI::Models::Beta::BetaFunctionTool, OpenAI::Models::Beta::BetaFileSearchTool, OpenAI::Models::Beta::BetaComputerTool, OpenAI::Models::Beta::BetaComputerUsePreviewTool, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::Mcp, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::CodeInterpreter, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ProgrammaticToolCalling, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam::Tool::LocalShell, OpenAI::Models::Beta::BetaFunctionShellTool, OpenAI::Models::Beta::BetaCustomTool, OpenAI::Models::Beta::BetaToolSearchOutputNamespaceTool, OpenAI::Models::Beta::BetaToolSearchTool, OpenAI::Models::Beta::BetaApplyPatchTool, OpenAI::Models::Beta::BetaWebSearchTool, OpenAI::Models::Beta::BetaWebSearchPreviewTool)]
1232
+ end
1233
+
71
1234
  # @see OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam#agent
72
1235
  class Agent < OpenAI::Internal::Type::BaseModel
73
1236
  # @!attribute agent_name