openai 0.78.0 → 0.79.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 (175) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +80 -0
  3. data/README.md +241 -8
  4. data/SECURITY.md +6 -22
  5. data/azure.md +110 -0
  6. data/bedrock.md +132 -0
  7. data/examples/mtls_custom_http_client.rb +61 -0
  8. data/lib/openai/auth/workload_identity.rb +13 -2
  9. data/lib/openai/auth/workload_identity_auth.rb +2 -1
  10. data/lib/openai/client.rb +29 -6
  11. data/lib/openai/errors.rb +11 -1
  12. data/lib/openai/helpers/streaming/chat_completion_stream.rb +3 -3
  13. data/lib/openai/helpers/streaming/response_stream.rb +5 -6
  14. data/lib/openai/helpers/structured_output/base_model.rb +20 -19
  15. data/lib/openai/helpers/structured_output/json_schema_converter.rb +12 -5
  16. data/lib/openai/http_client.rb +99 -7
  17. data/lib/openai/internal/conversation_cursor_page.rb +5 -6
  18. data/lib/openai/internal/cursor_page.rb +3 -3
  19. data/lib/openai/internal/logging.rb +419 -0
  20. data/lib/openai/internal/next_cursor_page.rb +5 -6
  21. data/lib/openai/internal/page.rb +2 -2
  22. data/lib/openai/internal/provider.rb +7 -1
  23. data/lib/openai/internal/read_io_adapter.rb +42 -18
  24. data/lib/openai/internal/stream.rb +2 -2
  25. data/lib/openai/internal/transport/base_client.rb +137 -37
  26. data/lib/openai/internal/type/array_of.rb +6 -4
  27. data/lib/openai/internal/type/base_model.rb +39 -1
  28. data/lib/openai/internal/type/base_page.rb +19 -2
  29. data/lib/openai/internal/type/base_stream.rb +39 -7
  30. data/lib/openai/internal/type/hash_of.rb +3 -3
  31. data/lib/openai/internal/util.rb +52 -27
  32. data/lib/openai/models/admin/organization/audit_log_list_params.rb +3 -1
  33. data/lib/openai/models/admin/organization/audit_log_list_response.rb +33 -11
  34. data/lib/openai/models/admin/organization/groups/role_list_response.rb +5 -1
  35. data/lib/openai/models/admin/organization/groups/role_retrieve_response.rb +5 -1
  36. data/lib/openai/models/admin/organization/projects/groups/role_list_response.rb +6 -1
  37. data/lib/openai/models/admin/organization/projects/groups/role_retrieve_response.rb +6 -1
  38. data/lib/openai/models/admin/organization/projects/service_account_create_response.rb +3 -1
  39. data/lib/openai/models/admin/organization/projects/users/role_list_response.rb +6 -1
  40. data/lib/openai/models/admin/organization/projects/users/role_retrieve_response.rb +6 -1
  41. data/lib/openai/models/admin/organization/users/role_list_response.rb +5 -1
  42. data/lib/openai/models/admin/organization/users/role_retrieve_response.rb +5 -1
  43. data/lib/openai/models/all_models.rb +3 -0
  44. data/lib/openai/models/audio/transcription_create_params.rb +7 -1
  45. data/lib/openai/models/audio/translation_create_params.rb +7 -1
  46. data/lib/openai/models/beta/beta_response.rb +9 -0
  47. data/lib/openai/models/beta/beta_response_stream_event.rb +1 -1
  48. data/lib/openai/models/beta/beta_responses_client_event.rb +28 -3
  49. data/lib/openai/models/beta/beta_responses_server_event.rb +1037 -61
  50. data/lib/openai/models/beta/response_compact_params.rb +9 -0
  51. data/lib/openai/models/beta/response_create_params.rb +9 -0
  52. data/lib/openai/models/containers/file_create_params.rb +4 -0
  53. data/lib/openai/models/content_provenance_check_create_params.rb +4 -0
  54. data/lib/openai/models/file_create_params.rb +4 -0
  55. data/lib/openai/models/image_create_variation_params.rb +4 -0
  56. data/lib/openai/models/image_edit_params.rb +8 -0
  57. data/lib/openai/models/responses/response_compact_params.rb +9 -0
  58. data/lib/openai/models/responses/response_stream_event.rb +1 -1
  59. data/lib/openai/models/responses/responses_client_event.rb +13 -1
  60. data/lib/openai/models/responses/responses_server_event.rb +1027 -54
  61. data/lib/openai/models/responses_model.rb +3 -0
  62. data/lib/openai/models/skill_create_params.rb +4 -0
  63. data/lib/openai/models/skills/version_create_params.rb +4 -0
  64. data/lib/openai/models/uploads/part_create_params.rb +4 -0
  65. data/lib/openai/models/vector_store_search_response.rb +3 -1
  66. data/lib/openai/models/video_create_character_params.rb +4 -0
  67. data/lib/openai/models/video_create_params.rb +4 -0
  68. data/lib/openai/models/video_edit_params.rb +4 -0
  69. data/lib/openai/models/video_extend_params.rb +4 -0
  70. data/lib/openai/models.rb +9 -1
  71. data/lib/openai/net_http_client.rb +20 -6
  72. data/lib/openai/providers/azure.rb +216 -0
  73. data/lib/openai/providers/bedrock.rb +3 -1
  74. data/lib/openai/resources/admin/organization/projects/groups/roles.rb +1 -1
  75. data/lib/openai/resources/admin/organization/projects/groups.rb +1 -1
  76. data/lib/openai/resources/admin/organization/projects/users/roles.rb +1 -1
  77. data/lib/openai/resources/admin/organization/projects.rb +4 -2
  78. data/lib/openai/resources/audio/transcriptions.rb +8 -0
  79. data/lib/openai/resources/audio/translations.rb +4 -0
  80. data/lib/openai/resources/beta/responses.rb +1 -1
  81. data/lib/openai/resources/beta/threads/runs/steps.rb +2 -2
  82. data/lib/openai/resources/containers/files.rb +4 -0
  83. data/lib/openai/resources/content_provenance_checks.rb +4 -0
  84. data/lib/openai/resources/conversations/items.rb +1 -1
  85. data/lib/openai/resources/evals/runs/output_items.rb +1 -1
  86. data/lib/openai/resources/files.rb +4 -0
  87. data/lib/openai/resources/images.rb +12 -0
  88. data/lib/openai/resources/responses.rb +3 -2
  89. data/lib/openai/resources/skills/versions.rb +4 -0
  90. data/lib/openai/resources/skills.rb +4 -0
  91. data/lib/openai/resources/uploads/parts.rb +4 -0
  92. data/lib/openai/resources/vector_stores/file_batches.rb +1 -1
  93. data/lib/openai/resources/videos.rb +38 -0
  94. data/lib/openai/resources/webhooks.rb +18 -6
  95. data/lib/openai/version.rb +1 -1
  96. data/lib/openai.rb +111 -107
  97. data/rbi/openai/auth.rbi +4 -4
  98. data/rbi/openai/client.rbi +13 -3
  99. data/rbi/openai/errors.rbi +7 -0
  100. data/rbi/openai/helpers/streaming/events.rbi +12 -0
  101. data/rbi/openai/http_client.rbi +62 -2
  102. data/rbi/openai/internal/logging.rbi +192 -0
  103. data/rbi/openai/internal/provider.rbi +3 -0
  104. data/rbi/openai/internal/read_io_adapter.rbi +6 -1
  105. data/rbi/openai/internal/transport/base_client.rbi +61 -7
  106. data/rbi/openai/internal/type/base_model.rbi +24 -1
  107. data/rbi/openai/internal/type/base_page.rbi +13 -2
  108. data/rbi/openai/internal/type/base_stream.rbi +15 -4
  109. data/rbi/openai/internal/util.rbi +26 -2
  110. data/rbi/openai/models/admin/organization/audit_log_list_params.rbi +5 -0
  111. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +5 -0
  112. data/rbi/openai/models/all_models.rbi +15 -0
  113. data/rbi/openai/models/audio/transcription_create_params.rbi +14 -2
  114. data/rbi/openai/models/audio/translation_create_params.rbi +14 -2
  115. data/rbi/openai/models/beta/beta_response.rbi +15 -0
  116. data/rbi/openai/models/beta/beta_response_stream_event.rbi +1 -1
  117. data/rbi/openai/models/beta/beta_responses_client_event.rbi +37 -1
  118. data/rbi/openai/models/beta/beta_responses_server_event.rbi +3791 -54
  119. data/rbi/openai/models/beta/response_compact_params.rbi +15 -0
  120. data/rbi/openai/models/beta/response_create_params.rbi +15 -0
  121. data/rbi/openai/models/containers/file_create_params.rbi +8 -0
  122. data/rbi/openai/models/content_provenance_check_create_params.rbi +8 -0
  123. data/rbi/openai/models/file_create_params.rbi +8 -0
  124. data/rbi/openai/models/image_create_variation_params.rbi +8 -0
  125. data/rbi/openai/models/image_edit_params.rbi +16 -0
  126. data/rbi/openai/models/responses/response_compact_params.rbi +15 -0
  127. data/rbi/openai/models/responses/response_stream_event.rbi +1 -1
  128. data/rbi/openai/models/responses/responses_client_event.rbi +19 -0
  129. data/rbi/openai/models/responses/responses_server_event.rbi +3282 -53
  130. data/rbi/openai/models/responses_model.rbi +15 -0
  131. data/rbi/openai/models/skill_create_params.rbi +8 -0
  132. data/rbi/openai/models/skills/version_create_params.rbi +8 -0
  133. data/rbi/openai/models/uploads/part_create_params.rbi +8 -0
  134. data/rbi/openai/models/video_create_character_params.rbi +8 -0
  135. data/rbi/openai/models/video_create_params.rbi +8 -0
  136. data/rbi/openai/models/video_edit_params.rbi +8 -0
  137. data/rbi/openai/models/video_extend_params.rbi +8 -0
  138. data/rbi/openai/net_http_client.rbi +2 -2
  139. data/rbi/openai/providers.rbi +9 -0
  140. data/rbi/openai/resources/audio/transcriptions.rbi +14 -2
  141. data/rbi/openai/resources/audio/translations.rbi +7 -1
  142. data/rbi/openai/resources/containers/files.rbi +4 -0
  143. data/rbi/openai/resources/content_provenance_checks.rbi +4 -0
  144. data/rbi/openai/resources/files.rbi +4 -0
  145. data/rbi/openai/resources/images.rbi +20 -0
  146. data/rbi/openai/resources/skills/versions.rbi +4 -0
  147. data/rbi/openai/resources/skills.rbi +4 -0
  148. data/rbi/openai/resources/uploads/parts.rbi +4 -0
  149. data/rbi/openai/resources/videos.rbi +16 -0
  150. data/sig/openai/client.rbs +6 -2
  151. data/sig/openai/errors.rbs +5 -0
  152. data/sig/openai/http_client.rbs +37 -2
  153. data/sig/openai/internal/logging.rbs +88 -0
  154. data/sig/openai/internal/provider.rbs +3 -1
  155. data/sig/openai/internal/read_io_adapter.rbs +3 -1
  156. data/sig/openai/internal/transport/base_client.rbs +33 -5
  157. data/sig/openai/internal/type/base_model.rbs +13 -0
  158. data/sig/openai/internal/type/base_page.rbs +8 -1
  159. data/sig/openai/internal/type/base_stream.rbs +8 -2
  160. data/sig/openai/internal/util.rbs +12 -0
  161. data/sig/openai/models/admin/organization/audit_log_list_params.rbs +2 -0
  162. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +2 -0
  163. data/sig/openai/models/all_models.rbs +6 -0
  164. data/sig/openai/models/beta/beta_response.rbs +6 -0
  165. data/sig/openai/models/beta/beta_responses_client_event.rbs +13 -0
  166. data/sig/openai/models/beta/beta_responses_server_event.rbs +1946 -54
  167. data/sig/openai/models/beta/response_compact_params.rbs +6 -0
  168. data/sig/openai/models/beta/response_create_params.rbs +6 -0
  169. data/sig/openai/models/responses/response_compact_params.rbs +6 -0
  170. data/sig/openai/models/responses/responses_client_event.rbs +7 -0
  171. data/sig/openai/models/responses/responses_server_event.rbs +1786 -53
  172. data/sig/openai/models/responses_model.rbs +6 -0
  173. data/sig/openai/net_http_client.rbs +2 -2
  174. data/sig/openai/providers.rbs +6 -0
  175. metadata +24 -1
data/lib/openai.rb CHANGED
@@ -18,9 +18,12 @@ require "time"
18
18
  require "uri"
19
19
  # We already ship the preferred sorbet manifests in the package itself.
20
20
  # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
21
+ # Thor removes the selected subcommand from `ARGV` before loading an application,
22
+ # so the DSL loader is the reliable fallback for detecting `tapioca dsl`.
23
+ tapioca_dsl = ARGV.any?(/dsl/) || caller.any?(%r{tapioca[\\/]loaders[\\/]dsl})
21
24
  if Object.const_defined?(:Tapioca) &&
22
25
  caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
23
- ARGV.none?(/dsl/)
26
+ !tapioca_dsl
24
27
  return
25
28
  end
26
29
 
@@ -57,6 +60,7 @@ require_relative "openai/http_client"
57
60
  require_relative "openai/net_http_client"
58
61
  require_relative "openai/provider"
59
62
  require_relative "openai/internal/provider"
63
+ require_relative "openai/providers/azure"
60
64
  require_relative "openai/providers/bedrock"
61
65
  require_relative "openai/internal/transport/base_client"
62
66
  require_relative "openai/client"
@@ -78,6 +82,59 @@ require_relative "openai/structured_output"
78
82
  require_relative "openai/models/beta/beta_response_custom_tool_call"
79
83
  require_relative "openai/models/beta/beta_response_custom_tool_call_output"
80
84
  require_relative "openai/models/beta/beta_response_function_tool_call"
85
+ require_relative "openai/models/beta/beta_response_custom_tool_call_input_done_event"
86
+ require_relative "openai/models/beta/beta_response_custom_tool_call_input_delta_event"
87
+ require_relative "openai/models/beta/beta_response_queued_event"
88
+ require_relative "openai/models/beta/beta_response_output_text_annotation_added_event"
89
+ require_relative "openai/models/beta/beta_response_mcp_list_tools_in_progress_event"
90
+ require_relative "openai/models/beta/beta_response_mcp_list_tools_failed_event"
91
+ require_relative "openai/models/beta/beta_response_mcp_list_tools_completed_event"
92
+ require_relative "openai/models/beta/beta_response_mcp_call_in_progress_event"
93
+ require_relative "openai/models/beta/beta_response_mcp_call_failed_event"
94
+ require_relative "openai/models/beta/beta_response_mcp_call_completed_event"
95
+ require_relative "openai/models/beta/beta_response_mcp_call_arguments_done_event"
96
+ require_relative "openai/models/beta/beta_response_mcp_call_arguments_delta_event"
97
+ require_relative "openai/models/beta/beta_response_image_gen_call_partial_image_event"
98
+ require_relative "openai/models/beta/beta_response_image_gen_call_in_progress_event"
99
+ require_relative "openai/models/beta/beta_response_image_gen_call_generating_event"
100
+ require_relative "openai/models/beta/beta_response_image_gen_call_completed_event"
101
+ require_relative "openai/models/beta/beta_response_web_search_call_searching_event"
102
+ require_relative "openai/models/beta/beta_response_web_search_call_in_progress_event"
103
+ require_relative "openai/models/beta/beta_response_web_search_call_completed_event"
104
+ require_relative "openai/models/beta/beta_response_text_done_event"
105
+ require_relative "openai/models/beta/beta_response_text_delta_event"
106
+ require_relative "openai/models/beta/beta_response_refusal_done_event"
107
+ require_relative "openai/models/beta/beta_response_refusal_delta_event"
108
+ require_relative "openai/models/beta/beta_response_reasoning_text_done_event"
109
+ require_relative "openai/models/beta/beta_response_reasoning_text_delta_event"
110
+ require_relative "openai/models/beta/beta_response_reasoning_summary_text_done_event"
111
+ require_relative "openai/models/beta/beta_response_reasoning_summary_text_delta_event"
112
+ require_relative "openai/models/beta/beta_response_reasoning_summary_part_done_event"
113
+ require_relative "openai/models/beta/beta_response_reasoning_summary_part_added_event"
114
+ require_relative "openai/models/beta/beta_response_output_item_done_event"
115
+ require_relative "openai/models/beta/beta_response_output_item_added_event"
116
+ require_relative "openai/models/beta/beta_response_incomplete_event"
117
+ require_relative "openai/models/beta/beta_response_failed_event"
118
+ require_relative "openai/models/beta/beta_response_in_progress_event"
119
+ require_relative "openai/models/beta/beta_response_function_call_arguments_done_event"
120
+ require_relative "openai/models/beta/beta_response_function_call_arguments_delta_event"
121
+ require_relative "openai/models/beta/beta_response_file_search_call_searching_event"
122
+ require_relative "openai/models/beta/beta_response_file_search_call_in_progress_event"
123
+ require_relative "openai/models/beta/beta_response_file_search_call_completed_event"
124
+ require_relative "openai/models/beta/beta_response_error_event"
125
+ require_relative "openai/models/beta/beta_response_created_event"
126
+ require_relative "openai/models/beta/beta_response_content_part_done_event"
127
+ require_relative "openai/models/beta/beta_response_content_part_added_event"
128
+ require_relative "openai/models/beta/beta_response_completed_event"
129
+ require_relative "openai/models/beta/beta_response_code_interpreter_call_interpreting_event"
130
+ require_relative "openai/models/beta/beta_response_code_interpreter_call_in_progress_event"
131
+ require_relative "openai/models/beta/beta_response_code_interpreter_call_completed_event"
132
+ require_relative "openai/models/beta/beta_response_code_interpreter_call_code_done_event"
133
+ require_relative "openai/models/beta/beta_response_code_interpreter_call_code_delta_event"
134
+ require_relative "openai/models/beta/beta_response_audio_transcript_done_event"
135
+ require_relative "openai/models/beta/beta_response_audio_transcript_delta_event"
136
+ require_relative "openai/models/beta/beta_response_audio_done_event"
137
+ require_relative "openai/models/beta/beta_response_audio_delta_event"
81
138
  require_relative "openai/models/reasoning_effort"
82
139
  require_relative "openai/models/chat/chat_completion_message"
83
140
  require_relative "openai/models/responses/response_input_file"
@@ -93,6 +150,59 @@ require_relative "openai/models/realtime/realtime_session_create_request"
93
150
  require_relative "openai/models/responses/response_custom_tool_call"
94
151
  require_relative "openai/models/responses/response_custom_tool_call_output"
95
152
  require_relative "openai/models/responses/response_function_tool_call"
153
+ require_relative "openai/models/responses/response_custom_tool_call_input_done_event"
154
+ require_relative "openai/models/responses/response_custom_tool_call_input_delta_event"
155
+ require_relative "openai/models/responses/response_queued_event"
156
+ require_relative "openai/models/responses/response_output_text_annotation_added_event"
157
+ require_relative "openai/models/responses/response_mcp_list_tools_in_progress_event"
158
+ require_relative "openai/models/responses/response_mcp_list_tools_failed_event"
159
+ require_relative "openai/models/responses/response_mcp_list_tools_completed_event"
160
+ require_relative "openai/models/responses/response_mcp_call_in_progress_event"
161
+ require_relative "openai/models/responses/response_mcp_call_failed_event"
162
+ require_relative "openai/models/responses/response_mcp_call_completed_event"
163
+ require_relative "openai/models/responses/response_mcp_call_arguments_done_event"
164
+ require_relative "openai/models/responses/response_mcp_call_arguments_delta_event"
165
+ require_relative "openai/models/responses/response_image_gen_call_partial_image_event"
166
+ require_relative "openai/models/responses/response_image_gen_call_in_progress_event"
167
+ require_relative "openai/models/responses/response_image_gen_call_generating_event"
168
+ require_relative "openai/models/responses/response_image_gen_call_completed_event"
169
+ require_relative "openai/models/responses/response_web_search_call_searching_event"
170
+ require_relative "openai/models/responses/response_web_search_call_in_progress_event"
171
+ require_relative "openai/models/responses/response_web_search_call_completed_event"
172
+ require_relative "openai/models/responses/response_text_done_event"
173
+ require_relative "openai/models/responses/response_text_delta_event"
174
+ require_relative "openai/models/responses/response_refusal_done_event"
175
+ require_relative "openai/models/responses/response_refusal_delta_event"
176
+ require_relative "openai/models/responses/response_reasoning_text_done_event"
177
+ require_relative "openai/models/responses/response_reasoning_text_delta_event"
178
+ require_relative "openai/models/responses/response_reasoning_summary_text_done_event"
179
+ require_relative "openai/models/responses/response_reasoning_summary_text_delta_event"
180
+ require_relative "openai/models/responses/response_reasoning_summary_part_done_event"
181
+ require_relative "openai/models/responses/response_reasoning_summary_part_added_event"
182
+ require_relative "openai/models/responses/response_output_item_done_event"
183
+ require_relative "openai/models/responses/response_output_item_added_event"
184
+ require_relative "openai/models/responses/response_incomplete_event"
185
+ require_relative "openai/models/responses/response_failed_event"
186
+ require_relative "openai/models/responses/response_in_progress_event"
187
+ require_relative "openai/models/responses/response_function_call_arguments_done_event"
188
+ require_relative "openai/models/responses/response_function_call_arguments_delta_event"
189
+ require_relative "openai/models/responses/response_file_search_call_searching_event"
190
+ require_relative "openai/models/responses/response_file_search_call_in_progress_event"
191
+ require_relative "openai/models/responses/response_file_search_call_completed_event"
192
+ require_relative "openai/models/responses/response_error_event"
193
+ require_relative "openai/models/responses/response_created_event"
194
+ require_relative "openai/models/responses/response_content_part_done_event"
195
+ require_relative "openai/models/responses/response_content_part_added_event"
196
+ require_relative "openai/models/responses/response_completed_event"
197
+ require_relative "openai/models/responses/response_code_interpreter_call_interpreting_event"
198
+ require_relative "openai/models/responses/response_code_interpreter_call_in_progress_event"
199
+ require_relative "openai/models/responses/response_code_interpreter_call_completed_event"
200
+ require_relative "openai/models/responses/response_code_interpreter_call_code_done_event"
201
+ require_relative "openai/models/responses/response_code_interpreter_call_code_delta_event"
202
+ require_relative "openai/models/responses/response_audio_transcript_done_event"
203
+ require_relative "openai/models/responses/response_audio_transcript_delta_event"
204
+ require_relative "openai/models/responses/response_audio_done_event"
205
+ require_relative "openai/models/responses/response_audio_delta_event"
96
206
  require_relative "openai/models/admin/organization/admin_api_key_create_params"
97
207
  require_relative "openai/models/admin/organization/admin_api_key_create_response"
98
208
  require_relative "openai/models/admin/organization/admin_api_key_delete_params"
@@ -358,43 +468,21 @@ require_relative "openai/models/beta/beta_namespace_tool"
358
468
  require_relative "openai/models/beta/beta_response"
359
469
  require_relative "openai/models/beta/beta_response_apply_patch_tool_call"
360
470
  require_relative "openai/models/beta/beta_response_apply_patch_tool_call_output"
361
- require_relative "openai/models/beta/beta_response_audio_delta_event"
362
- require_relative "openai/models/beta/beta_response_audio_done_event"
363
- require_relative "openai/models/beta/beta_response_audio_transcript_delta_event"
364
- require_relative "openai/models/beta/beta_response_audio_transcript_done_event"
365
- require_relative "openai/models/beta/beta_response_code_interpreter_call_code_delta_event"
366
- require_relative "openai/models/beta/beta_response_code_interpreter_call_code_done_event"
367
- require_relative "openai/models/beta/beta_response_code_interpreter_call_completed_event"
368
- require_relative "openai/models/beta/beta_response_code_interpreter_call_in_progress_event"
369
- require_relative "openai/models/beta/beta_response_code_interpreter_call_interpreting_event"
370
471
  require_relative "openai/models/beta/beta_response_code_interpreter_tool_call"
371
472
  require_relative "openai/models/beta/beta_response_compaction_item"
372
473
  require_relative "openai/models/beta/beta_response_compaction_item_param"
373
- require_relative "openai/models/beta/beta_response_completed_event"
374
474
  require_relative "openai/models/beta/beta_response_computer_tool_call"
375
475
  require_relative "openai/models/beta/beta_response_computer_tool_call_output_item"
376
476
  require_relative "openai/models/beta/beta_response_computer_tool_call_output_screenshot"
377
477
  require_relative "openai/models/beta/beta_response_container_reference"
378
478
  require_relative "openai/models/beta/beta_response_content"
379
- require_relative "openai/models/beta/beta_response_content_part_added_event"
380
- require_relative "openai/models/beta/beta_response_content_part_done_event"
381
479
  require_relative "openai/models/beta/beta_response_conversation_param"
382
- require_relative "openai/models/beta/beta_response_created_event"
383
- require_relative "openai/models/beta/beta_response_custom_tool_call_input_delta_event"
384
- require_relative "openai/models/beta/beta_response_custom_tool_call_input_done_event"
385
480
  require_relative "openai/models/beta/beta_response_custom_tool_call_item"
386
481
  require_relative "openai/models/beta/beta_response_custom_tool_call_output_item"
387
482
  require_relative "openai/models/beta/beta_response_error"
388
- require_relative "openai/models/beta/beta_response_error_event"
389
- require_relative "openai/models/beta/beta_response_failed_event"
390
- require_relative "openai/models/beta/beta_response_file_search_call_completed_event"
391
- require_relative "openai/models/beta/beta_response_file_search_call_in_progress_event"
392
- require_relative "openai/models/beta/beta_response_file_search_call_searching_event"
393
483
  require_relative "openai/models/beta/beta_response_file_search_tool_call"
394
484
  require_relative "openai/models/beta/beta_response_format_text_config"
395
485
  require_relative "openai/models/beta/beta_response_format_text_json_schema_config"
396
- require_relative "openai/models/beta/beta_response_function_call_arguments_delta_event"
397
- require_relative "openai/models/beta/beta_response_function_call_arguments_done_event"
398
486
  require_relative "openai/models/beta/beta_response_function_call_output_item"
399
487
  require_relative "openai/models/beta/beta_response_function_call_output_item_list"
400
488
  require_relative "openai/models/beta/beta_response_function_shell_call_output_content"
@@ -403,16 +491,10 @@ require_relative "openai/models/beta/beta_response_function_shell_tool_call_outp
403
491
  require_relative "openai/models/beta/beta_response_function_tool_call_item"
404
492
  require_relative "openai/models/beta/beta_response_function_tool_call_output_item"
405
493
  require_relative "openai/models/beta/beta_response_function_web_search"
406
- require_relative "openai/models/beta/beta_response_image_gen_call_completed_event"
407
- require_relative "openai/models/beta/beta_response_image_gen_call_generating_event"
408
- require_relative "openai/models/beta/beta_response_image_gen_call_in_progress_event"
409
- require_relative "openai/models/beta/beta_response_image_gen_call_partial_image_event"
410
494
  require_relative "openai/models/beta/beta_response_includable"
411
- require_relative "openai/models/beta/beta_response_incomplete_event"
412
495
  require_relative "openai/models/beta/beta_response_inject_created_event"
413
496
  require_relative "openai/models/beta/beta_response_inject_event"
414
497
  require_relative "openai/models/beta/beta_response_inject_failed_event"
415
- require_relative "openai/models/beta/beta_response_in_progress_event"
416
498
  require_relative "openai/models/beta/beta_response_input"
417
499
  require_relative "openai/models/beta/beta_response_input_audio"
418
500
  require_relative "openai/models/beta/beta_response_input_content"
@@ -427,47 +509,22 @@ require_relative "openai/models/beta/beta_response_input_text"
427
509
  require_relative "openai/models/beta/beta_response_input_text_content"
428
510
  require_relative "openai/models/beta/beta_response_item"
429
511
  require_relative "openai/models/beta/beta_response_local_environment"
430
- require_relative "openai/models/beta/beta_response_mcp_call_arguments_delta_event"
431
- require_relative "openai/models/beta/beta_response_mcp_call_arguments_done_event"
432
- require_relative "openai/models/beta/beta_response_mcp_call_completed_event"
433
- require_relative "openai/models/beta/beta_response_mcp_call_failed_event"
434
- require_relative "openai/models/beta/beta_response_mcp_call_in_progress_event"
435
- require_relative "openai/models/beta/beta_response_mcp_list_tools_completed_event"
436
- require_relative "openai/models/beta/beta_response_mcp_list_tools_failed_event"
437
- require_relative "openai/models/beta/beta_response_mcp_list_tools_in_progress_event"
438
512
  require_relative "openai/models/beta/beta_response_output_audio"
439
513
  require_relative "openai/models/beta/beta_response_output_item"
440
- require_relative "openai/models/beta/beta_response_output_item_added_event"
441
- require_relative "openai/models/beta/beta_response_output_item_done_event"
442
514
  require_relative "openai/models/beta/beta_response_output_message"
443
515
  require_relative "openai/models/beta/beta_response_output_refusal"
444
516
  require_relative "openai/models/beta/beta_response_output_text"
445
- require_relative "openai/models/beta/beta_response_output_text_annotation_added_event"
446
517
  require_relative "openai/models/beta/beta_response_prompt"
447
- require_relative "openai/models/beta/beta_response_queued_event"
448
518
  require_relative "openai/models/beta/beta_response_reasoning_item"
449
- require_relative "openai/models/beta/beta_response_reasoning_summary_part_added_event"
450
- require_relative "openai/models/beta/beta_response_reasoning_summary_part_done_event"
451
- require_relative "openai/models/beta/beta_response_reasoning_summary_text_delta_event"
452
- require_relative "openai/models/beta/beta_response_reasoning_summary_text_done_event"
453
- require_relative "openai/models/beta/beta_response_reasoning_text_delta_event"
454
- require_relative "openai/models/beta/beta_response_reasoning_text_done_event"
455
- require_relative "openai/models/beta/beta_response_refusal_delta_event"
456
- require_relative "openai/models/beta/beta_response_refusal_done_event"
457
519
  require_relative "openai/models/beta/beta_responses_client_event"
458
520
  require_relative "openai/models/beta/beta_responses_server_event"
459
521
  require_relative "openai/models/beta/beta_response_status"
460
522
  require_relative "openai/models/beta/beta_response_stream_event"
461
523
  require_relative "openai/models/beta/beta_response_text_config"
462
- require_relative "openai/models/beta/beta_response_text_delta_event"
463
- require_relative "openai/models/beta/beta_response_text_done_event"
464
524
  require_relative "openai/models/beta/beta_response_tool_search_call"
465
525
  require_relative "openai/models/beta/beta_response_tool_search_output_item"
466
526
  require_relative "openai/models/beta/beta_response_tool_search_output_item_param"
467
527
  require_relative "openai/models/beta/beta_response_usage"
468
- require_relative "openai/models/beta/beta_response_web_search_call_completed_event"
469
- require_relative "openai/models/beta/beta_response_web_search_call_in_progress_event"
470
- require_relative "openai/models/beta/beta_response_web_search_call_searching_event"
471
528
  require_relative "openai/models/beta/beta_skill_reference"
472
529
  require_relative "openai/models/beta/beta_tool"
473
530
  require_relative "openai/models/beta/beta_tool_choice_allowed"
@@ -954,47 +1011,25 @@ require_relative "openai/models/responses/namespace_tool"
954
1011
  require_relative "openai/models/responses/response"
955
1012
  require_relative "openai/models/responses/response_apply_patch_tool_call"
956
1013
  require_relative "openai/models/responses/response_apply_patch_tool_call_output"
957
- require_relative "openai/models/responses/response_audio_delta_event"
958
- require_relative "openai/models/responses/response_audio_done_event"
959
- require_relative "openai/models/responses/response_audio_transcript_delta_event"
960
- require_relative "openai/models/responses/response_audio_transcript_done_event"
961
1014
  require_relative "openai/models/responses/response_cancel_params"
962
- require_relative "openai/models/responses/response_code_interpreter_call_code_delta_event"
963
- require_relative "openai/models/responses/response_code_interpreter_call_code_done_event"
964
- require_relative "openai/models/responses/response_code_interpreter_call_completed_event"
965
- require_relative "openai/models/responses/response_code_interpreter_call_in_progress_event"
966
- require_relative "openai/models/responses/response_code_interpreter_call_interpreting_event"
967
1015
  require_relative "openai/models/responses/response_code_interpreter_tool_call"
968
1016
  require_relative "openai/models/responses/response_compaction_item"
969
1017
  require_relative "openai/models/responses/response_compaction_item_param"
970
1018
  require_relative "openai/models/responses/response_compact_params"
971
- require_relative "openai/models/responses/response_completed_event"
972
1019
  require_relative "openai/models/responses/response_computer_tool_call"
973
1020
  require_relative "openai/models/responses/response_computer_tool_call_output_item"
974
1021
  require_relative "openai/models/responses/response_computer_tool_call_output_screenshot"
975
1022
  require_relative "openai/models/responses/response_container_reference"
976
1023
  require_relative "openai/models/responses/response_content"
977
- require_relative "openai/models/responses/response_content_part_added_event"
978
- require_relative "openai/models/responses/response_content_part_done_event"
979
1024
  require_relative "openai/models/responses/response_conversation_param"
980
- require_relative "openai/models/responses/response_created_event"
981
1025
  require_relative "openai/models/responses/response_create_params"
982
- require_relative "openai/models/responses/response_custom_tool_call_input_delta_event"
983
- require_relative "openai/models/responses/response_custom_tool_call_input_done_event"
984
1026
  require_relative "openai/models/responses/response_custom_tool_call_item"
985
1027
  require_relative "openai/models/responses/response_custom_tool_call_output_item"
986
1028
  require_relative "openai/models/responses/response_delete_params"
987
1029
  require_relative "openai/models/responses/response_error"
988
- require_relative "openai/models/responses/response_error_event"
989
- require_relative "openai/models/responses/response_failed_event"
990
- require_relative "openai/models/responses/response_file_search_call_completed_event"
991
- require_relative "openai/models/responses/response_file_search_call_in_progress_event"
992
- require_relative "openai/models/responses/response_file_search_call_searching_event"
993
1030
  require_relative "openai/models/responses/response_file_search_tool_call"
994
1031
  require_relative "openai/models/responses/response_format_text_config"
995
1032
  require_relative "openai/models/responses/response_format_text_json_schema_config"
996
- require_relative "openai/models/responses/response_function_call_arguments_delta_event"
997
- require_relative "openai/models/responses/response_function_call_arguments_done_event"
998
1033
  require_relative "openai/models/responses/response_function_call_output_item"
999
1034
  require_relative "openai/models/responses/response_function_call_output_item_list"
1000
1035
  require_relative "openai/models/responses/response_function_shell_call_output_content"
@@ -1003,13 +1038,7 @@ require_relative "openai/models/responses/response_function_shell_tool_call_outp
1003
1038
  require_relative "openai/models/responses/response_function_tool_call_item"
1004
1039
  require_relative "openai/models/responses/response_function_tool_call_output_item"
1005
1040
  require_relative "openai/models/responses/response_function_web_search"
1006
- require_relative "openai/models/responses/response_image_gen_call_completed_event"
1007
- require_relative "openai/models/responses/response_image_gen_call_generating_event"
1008
- require_relative "openai/models/responses/response_image_gen_call_in_progress_event"
1009
- require_relative "openai/models/responses/response_image_gen_call_partial_image_event"
1010
1041
  require_relative "openai/models/responses/response_includable"
1011
- require_relative "openai/models/responses/response_incomplete_event"
1012
- require_relative "openai/models/responses/response_in_progress_event"
1013
1042
  require_relative "openai/models/responses/response_input"
1014
1043
  require_relative "openai/models/responses/response_input_audio"
1015
1044
  require_relative "openai/models/responses/response_input_content"
@@ -1022,46 +1051,21 @@ require_relative "openai/models/responses/response_input_text_content"
1022
1051
  require_relative "openai/models/responses/response_item"
1023
1052
  require_relative "openai/models/responses/response_item_list"
1024
1053
  require_relative "openai/models/responses/response_local_environment"
1025
- require_relative "openai/models/responses/response_mcp_call_arguments_delta_event"
1026
- require_relative "openai/models/responses/response_mcp_call_arguments_done_event"
1027
- require_relative "openai/models/responses/response_mcp_call_completed_event"
1028
- require_relative "openai/models/responses/response_mcp_call_failed_event"
1029
- require_relative "openai/models/responses/response_mcp_call_in_progress_event"
1030
- require_relative "openai/models/responses/response_mcp_list_tools_completed_event"
1031
- require_relative "openai/models/responses/response_mcp_list_tools_failed_event"
1032
- require_relative "openai/models/responses/response_mcp_list_tools_in_progress_event"
1033
1054
  require_relative "openai/models/responses/response_output_audio"
1034
1055
  require_relative "openai/models/responses/response_output_item"
1035
- require_relative "openai/models/responses/response_output_item_added_event"
1036
- require_relative "openai/models/responses/response_output_item_done_event"
1037
1056
  require_relative "openai/models/responses/response_output_message"
1038
- require_relative "openai/models/responses/response_output_text_annotation_added_event"
1039
1057
  require_relative "openai/models/responses/response_prompt"
1040
- require_relative "openai/models/responses/response_queued_event"
1041
1058
  require_relative "openai/models/responses/response_reasoning_item"
1042
- require_relative "openai/models/responses/response_reasoning_summary_part_added_event"
1043
- require_relative "openai/models/responses/response_reasoning_summary_part_done_event"
1044
- require_relative "openai/models/responses/response_reasoning_summary_text_delta_event"
1045
- require_relative "openai/models/responses/response_reasoning_summary_text_done_event"
1046
- require_relative "openai/models/responses/response_reasoning_text_delta_event"
1047
- require_relative "openai/models/responses/response_reasoning_text_done_event"
1048
- require_relative "openai/models/responses/response_refusal_delta_event"
1049
- require_relative "openai/models/responses/response_refusal_done_event"
1050
1059
  require_relative "openai/models/responses/response_retrieve_params"
1051
1060
  require_relative "openai/models/responses/responses_client_event"
1052
1061
  require_relative "openai/models/responses/responses_server_event"
1053
1062
  require_relative "openai/models/responses/response_status"
1054
1063
  require_relative "openai/models/responses/response_stream_event"
1055
1064
  require_relative "openai/models/responses/response_text_config"
1056
- require_relative "openai/models/responses/response_text_delta_event"
1057
- require_relative "openai/models/responses/response_text_done_event"
1058
1065
  require_relative "openai/models/responses/response_tool_search_call"
1059
1066
  require_relative "openai/models/responses/response_tool_search_output_item"
1060
1067
  require_relative "openai/models/responses/response_tool_search_output_item_param"
1061
1068
  require_relative "openai/models/responses/response_usage"
1062
- require_relative "openai/models/responses/response_web_search_call_completed_event"
1063
- require_relative "openai/models/responses/response_web_search_call_in_progress_event"
1064
- require_relative "openai/models/responses/response_web_search_call_searching_event"
1065
1069
  require_relative "openai/models/responses/skill_reference"
1066
1070
  require_relative "openai/models/responses/tool"
1067
1071
  require_relative "openai/models/responses/tool_choice_allowed"
data/rbi/openai/auth.rbi CHANGED
@@ -35,17 +35,17 @@ module OpenAI
35
35
 
36
36
  sig do
37
37
  params(
38
- identity_provider_id: T.any(String, Symbol),
39
- service_account_id: T.any(String, Symbol),
40
38
  provider: SubjectTokenProvider,
39
+ identity_provider_id: T.nilable(T.any(String, Symbol)),
40
+ service_account_id: T.nilable(T.any(String, Symbol)),
41
41
  client_id: T.nilable(T.any(String, Symbol)),
42
42
  refresh_buffer_seconds: Integer
43
43
  ).void
44
44
  end
45
45
  def initialize(
46
- identity_provider_id:,
47
- service_account_id:,
48
46
  provider:,
47
+ identity_provider_id: ENV["IDENTITY_PROVIDER_ID"],
48
+ service_account_id: ENV["SERVICE_ACCOUNT_ID"],
49
49
  client_id: nil,
50
50
  refresh_buffer_seconds: 1200
51
51
  )
@@ -159,11 +159,15 @@ module OpenAI
159
159
  webhook_secret: T.nilable(String),
160
160
  provider: T.nilable(OpenAI::Provider),
161
161
  base_url: T.nilable(String),
162
+ default_headers: T.nilable(T::Hash[String, T.nilable(String)]),
162
163
  max_retries: Integer,
163
- timeout: Float,
164
+ timeout: T.nilable(Float),
164
165
  initial_retry_delay: Float,
165
166
  max_retry_delay: Float,
166
- http_client: T.untyped
167
+ http_client: T.untyped,
168
+ logger: T.untyped,
169
+ log_level: T.nilable(T.any(Symbol, String)),
170
+ on_retry: T.nilable(T.proc.params(event: OpenAI::RetryEvent).void)
167
171
  ).returns(T.attached_class)
168
172
  end
169
173
  def self.new(
@@ -182,12 +186,18 @@ module OpenAI
182
186
  # Override the default base URL for the API, e.g.,
183
187
  # `"https://api.example.com/v2/"`. Defaults to `ENV["OPENAI_BASE_URL"]`
184
188
  base_url: ENV["OPENAI_BASE_URL"],
189
+ # Extra headers to send with every request. Explicit values override
190
+ # `ENV["OPENAI_CUSTOM_HEADERS"]`.
191
+ default_headers: nil,
185
192
  # Max number of retries to attempt after a failed retryable request.
186
193
  max_retries: OpenAI::Client::DEFAULT_MAX_RETRIES,
187
194
  timeout: OpenAI::Client::DEFAULT_TIMEOUT_IN_SECONDS,
188
195
  initial_retry_delay: OpenAI::Client::DEFAULT_INITIAL_RETRY_DELAY,
189
196
  max_retry_delay: OpenAI::Client::DEFAULT_MAX_RETRY_DELAY,
190
- http_client: nil
197
+ http_client: nil,
198
+ logger: nil,
199
+ log_level: nil,
200
+ on_retry: nil
191
201
  )
192
202
  end
193
203
  end
@@ -48,6 +48,13 @@ module OpenAI
48
48
  sig { returns(T.nilable(String)) }
49
49
  attr_accessor :type
50
50
 
51
+ # The ID of the API request, returned via the `x-request-id` response
52
+ # header. This is nil when no HTTP response was received or the response
53
+ # did not include the header.
54
+ sig { returns(T.nilable(String)) }
55
+ def request_id
56
+ end
57
+
51
58
  # @api private
52
59
  sig do
53
60
  params(
@@ -142,6 +142,18 @@ module OpenAI
142
142
  end
143
143
 
144
144
  class ChatCompletionStream
145
+ sig { returns(Integer) }
146
+ def status
147
+ end
148
+
149
+ sig { returns(T::Hash[String, String]) }
150
+ def headers
151
+ end
152
+
153
+ sig { returns(OpenAI::ResponseMetadata) }
154
+ def last_response
155
+ end
156
+
145
157
  sig { returns(T.untyped) }
146
158
  def each
147
159
  end
@@ -1,6 +1,63 @@
1
1
  # typed: strong
2
2
 
3
3
  module OpenAI
4
+ class ResponseMetadata
5
+ sig { returns(Integer) }
6
+ attr_reader :status
7
+
8
+ sig { returns(T::Hash[String, String]) }
9
+ attr_reader :headers
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ attr_reader :request_id
13
+
14
+ # @api private
15
+ sig do
16
+ params(status: Integer, headers: T::Hash[String, String]).returns(
17
+ T.attached_class
18
+ )
19
+ end
20
+ def self.new(status:, headers:)
21
+ end
22
+ end
23
+
24
+ class RetryEvent
25
+ sig { returns(Integer) }
26
+ attr_reader :attempt
27
+
28
+ sig { returns(Integer) }
29
+ attr_reader :max_attempts
30
+
31
+ sig { returns(Float) }
32
+ attr_reader :delay
33
+
34
+ sig { returns(T.nilable(OpenAI::ResponseMetadata)) }
35
+ attr_reader :response
36
+
37
+ sig { returns(T.nilable(OpenAI::Errors::APIConnectionError)) }
38
+ attr_reader :error
39
+
40
+ sig do
41
+ params(
42
+ attempt: Integer,
43
+ max_attempts: Integer,
44
+ delay: Float,
45
+ response: T.nilable(OpenAI::ResponseMetadata),
46
+ error: T.nilable(OpenAI::Errors::APIConnectionError)
47
+ ).returns(T.attached_class)
48
+ end
49
+ def self.new(attempt:, max_attempts:, delay:, response:, error:)
50
+ end
51
+
52
+ sig { returns(T.nilable(Integer)) }
53
+ def status
54
+ end
55
+
56
+ sig { returns(T.nilable(String)) }
57
+ def request_id
58
+ end
59
+ end
60
+
4
61
  class HTTPClient
5
62
  class Request
6
63
  sig { returns(Symbol) }
@@ -15,7 +72,7 @@ module OpenAI
15
72
  sig { returns(T.anything) }
16
73
  attr_reader :body
17
74
 
18
- sig { returns(Float) }
75
+ sig { returns(T.nilable(Float)) }
19
76
  attr_reader :timeout
20
77
 
21
78
  sig do
@@ -24,7 +81,7 @@ module OpenAI
24
81
  url: URI::Generic,
25
82
  headers: T::Hash[String, String],
26
83
  body: T.anything,
27
- timeout: Float
84
+ timeout: T.nilable(Float)
28
85
  ).returns(T.attached_class)
29
86
  end
30
87
  def self.new(method:, url:, headers:, body:, timeout:)
@@ -41,6 +98,9 @@ module OpenAI
41
98
  sig { returns(T::Enumerable[String]) }
42
99
  attr_reader :body
43
100
 
101
+ sig { returns(OpenAI::ResponseMetadata) }
102
+ attr_reader :metadata
103
+
44
104
  sig do
45
105
  params(
46
106
  status: Integer,