openai 0.97.0 → 0.99.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 (244) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +76 -1
  4. data/lib/openai/helpers/agents/session_stream.rb +60 -3
  5. data/lib/openai/helpers/beta/agents/artifacts.rb +72 -0
  6. data/lib/openai/helpers/beta/agents/creation_stream.rb +69 -0
  7. data/lib/openai/helpers/beta/agents/files.rb +236 -0
  8. data/lib/openai/helpers/beta/agents/function_tool.rb +65 -0
  9. data/lib/openai/helpers/beta/agents/model_adapter.rb +27 -0
  10. data/lib/openai/helpers/beta/agents/result.rb +170 -0
  11. data/lib/openai/helpers/beta/agents/typed_output.rb +191 -0
  12. data/lib/openai/helpers/live/websocket.rb +7 -1
  13. data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +1 -1
  14. data/lib/openai/helpers/responses_websocket/connection.rb +7 -1
  15. data/lib/openai/helpers/responses_websocket/session.rb +5 -1
  16. data/lib/openai/helpers/responses_websocket/transports/async_websocket.rb +12 -2
  17. data/lib/openai/internal/transport/base_client.rb +18 -0
  18. data/lib/openai/internal/type/array_of.rb +1 -1
  19. data/lib/openai/internal/type/base_model.rb +6 -3
  20. data/lib/openai/internal/type/converter.rb +50 -3
  21. data/lib/openai/internal/type/hash_of.rb +1 -1
  22. data/lib/openai/internal/type/union.rb +6 -6
  23. data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +16 -3
  24. data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +16 -3
  25. data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +16 -3
  26. data/lib/openai/models/admin/organization/usage_completions_response.rb +16 -3
  27. data/lib/openai/models/admin/organization/usage_costs_response.rb +16 -3
  28. data/lib/openai/models/admin/organization/usage_embeddings_response.rb +16 -3
  29. data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +16 -3
  30. data/lib/openai/models/admin/organization/usage_images_response.rb +16 -3
  31. data/lib/openai/models/admin/organization/usage_moderations_response.rb +16 -3
  32. data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +16 -3
  33. data/lib/openai/models/admin/organization/usage_web_search_calls_response.rb +16 -3
  34. data/lib/openai/models/all_models.rb +42 -0
  35. data/lib/openai/models/audio/speech_create_params.rb +6 -0
  36. data/lib/openai/models/audio/voice.rb +75 -0
  37. data/lib/openai/models/audio/voice_create_params.rb +217 -0
  38. data/lib/openai/models/beta/agent_create_params.rb +0 -3
  39. data/lib/openai/models/beta/agent_update_params.rb +0 -3
  40. data/lib/openai/models/beta/agents/session_create_params.rb +0 -3
  41. data/lib/openai/models/beta/agents/session_update_params.rb +0 -3
  42. data/lib/openai/models/beta/agents/sessions/session_trace.rb +64 -0
  43. data/lib/openai/models/beta/agents/sessions/trace_list_params.rb +68 -0
  44. data/lib/openai/models/beta/agents/vaults/credential.rb +8 -4
  45. data/lib/openai/models/beta/beta_response.rb +220 -0
  46. data/lib/openai/models/beta/beta_response_output_text.rb +2 -2
  47. data/lib/openai/models/beta/beta_response_output_text_annotation_added_event.rb +2 -2
  48. data/lib/openai/models/beta/beta_responses_client_event.rb +220 -0
  49. data/lib/openai/models/beta/beta_tool.rb +3 -9
  50. data/lib/openai/models/beta/environment.rb +33 -1
  51. data/lib/openai/models/beta/environment_param.rb +24 -1
  52. data/lib/openai/models/beta/response_compact_params.rb +220 -0
  53. data/lib/openai/models/beta/response_create_params.rb +220 -0
  54. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  55. data/lib/openai/models/chat/chat_completion_audio_param.rb +6 -3
  56. data/lib/openai/models/chat/chat_completion_content_part_image.rb +1 -0
  57. data/lib/openai/models/chat_model.rb +178 -0
  58. data/lib/openai/models/image.rb +14 -14
  59. data/lib/openai/models/image_create_variation_params.rb +7 -7
  60. data/lib/openai/models/image_edit_params.rb +76 -87
  61. data/lib/openai/models/image_generate_params.rb +51 -62
  62. data/lib/openai/models/image_model.rb +5 -3
  63. data/lib/openai/models/live/fork_server_event.rb +14 -3
  64. data/lib/openai/models/live/server_event.rb +14 -3
  65. data/lib/openai/models/realtime/realtime_audio_config_output.rb +9 -6
  66. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +9 -6
  67. data/lib/openai/models/realtime/translations/client_secret_create_params.rb +28 -0
  68. data/lib/openai/models/responses/response_compact_params.rb +220 -0
  69. data/lib/openai/models/responses/response_output_text.rb +2 -2
  70. data/lib/openai/models/responses/response_output_text_annotation_added_event.rb +2 -2
  71. data/lib/openai/models/responses/tool.rb +3 -9
  72. data/lib/openai/models/responses_model.rb +42 -0
  73. data/lib/openai/models/webhooks/agent_session_action_required_webhook_event.rb +109 -0
  74. data/lib/openai/models/webhooks/agent_session_created_webhook_event.rb +106 -0
  75. data/lib/openai/models/webhooks/agent_session_failed_webhook_event.rb +86 -0
  76. data/lib/openai/models/webhooks/agent_session_idle_webhook_event.rb +86 -0
  77. data/lib/openai/models/webhooks/agent_session_in_progress_webhook_event.rb +86 -0
  78. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +18 -2
  79. data/lib/openai/models/webhooks/webhook_create_params.rb +5 -0
  80. data/lib/openai/models/webhooks/webhook_test_params.rb +5 -0
  81. data/lib/openai/models/webhooks/webhook_update_params.rb +5 -0
  82. data/lib/openai/resources/audio/speech.rb +2 -0
  83. data/lib/openai/resources/audio/voices.rb +53 -0
  84. data/lib/openai/resources/audio.rb +5 -0
  85. data/lib/openai/resources/beta/agents/environments/files.rb +31 -0
  86. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +8 -0
  87. data/lib/openai/resources/beta/agents/sessions/events.rb +6 -5
  88. data/lib/openai/resources/beta/agents/sessions/traces.rb +58 -0
  89. data/lib/openai/resources/beta/agents/sessions.rb +18 -5
  90. data/lib/openai/resources/evals/runs.rb +1 -1
  91. data/lib/openai/resources/images.rb +71 -103
  92. data/lib/openai/resources/realtime/translations/client_secrets.rb +58 -0
  93. data/lib/openai/resources/realtime/translations.rb +20 -0
  94. data/lib/openai/resources/realtime.rb +4 -0
  95. data/lib/openai/resources/webhooks.rb +1 -1
  96. data/lib/openai/version.rb +1 -1
  97. data/lib/openai.rb +17 -1
  98. data/rbi/openai/helpers/agents.rbi +20 -1
  99. data/rbi/openai/helpers/beta/agents/artifacts.rbi +29 -0
  100. data/rbi/openai/helpers/beta/agents/files.rbi +65 -0
  101. data/rbi/openai/helpers/beta/agents/function_tool.rbi +40 -0
  102. data/rbi/openai/helpers/beta/agents/model_adapter.rbi +22 -0
  103. data/rbi/openai/helpers/beta/agents.rbi +146 -0
  104. data/rbi/openai/internal/transport/base_client.rbi +12 -0
  105. data/rbi/openai/internal/type/base_model.rbi +2 -2
  106. data/rbi/openai/internal/type/converter.rbi +21 -3
  107. data/rbi/openai/internal/type/union.rbi +6 -2
  108. data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +19 -2
  109. data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +19 -2
  110. data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +19 -2
  111. data/rbi/openai/models/admin/organization/usage_completions_response.rbi +19 -2
  112. data/rbi/openai/models/admin/organization/usage_costs_response.rbi +19 -2
  113. data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +19 -2
  114. data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +19 -2
  115. data/rbi/openai/models/admin/organization/usage_images_response.rbi +19 -2
  116. data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +19 -2
  117. data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +19 -2
  118. data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +19 -2
  119. data/rbi/openai/models/audio/speech_create_params.rbi +6 -0
  120. data/rbi/openai/models/audio/voice.rbi +111 -0
  121. data/rbi/openai/models/audio/voice_create_params.rbi +321 -0
  122. data/rbi/openai/models/beta/agent_create_params.rbi +0 -3
  123. data/rbi/openai/models/beta/agent_update_params.rbi +0 -3
  124. data/rbi/openai/models/beta/agents/session_create_params.rbi +0 -3
  125. data/rbi/openai/models/beta/agents/session_update_params.rbi +0 -3
  126. data/rbi/openai/models/beta/agents/sessions/session_trace.rbi +97 -0
  127. data/rbi/openai/models/beta/agents/sessions/trace_list_params.rbi +121 -0
  128. data/rbi/openai/models/beta/agents/vaults/credential.rbi +5 -5
  129. data/rbi/openai/models/beta/beta_response_output_text.rbi +2 -2
  130. data/rbi/openai/models/beta/beta_response_output_text_annotation_added_event.rbi +2 -2
  131. data/rbi/openai/models/beta/beta_tool.rbi +3 -9
  132. data/rbi/openai/models/beta/environment.rbi +29 -0
  133. data/rbi/openai/models/beta/environment_param.rbi +31 -0
  134. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  135. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +6 -3
  136. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +1 -0
  137. data/rbi/openai/models/image.rbi +14 -14
  138. data/rbi/openai/models/image_create_variation_params.rbi +6 -6
  139. data/rbi/openai/models/image_edit_params.rbi +61 -82
  140. data/rbi/openai/models/image_generate_params.rbi +30 -61
  141. data/rbi/openai/models/image_model.rbi +3 -3
  142. data/rbi/openai/models/live/fork_server_event.rbi +14 -2
  143. data/rbi/openai/models/live/server_event.rbi +14 -2
  144. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +9 -6
  145. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +9 -6
  146. data/rbi/openai/models/realtime/translations/client_secret_create_params.rbi +68 -0
  147. data/rbi/openai/models/responses/response_output_text.rbi +2 -2
  148. data/rbi/openai/models/responses/response_output_text_annotation_added_event.rbi +2 -2
  149. data/rbi/openai/models/responses/tool.rbi +3 -9
  150. data/rbi/openai/models/webhooks/agent_session_action_required_webhook_event.rbi +222 -0
  151. data/rbi/openai/models/webhooks/agent_session_created_webhook_event.rbi +202 -0
  152. data/rbi/openai/models/webhooks/agent_session_failed_webhook_event.rbi +151 -0
  153. data/rbi/openai/models/webhooks/agent_session_idle_webhook_event.rbi +151 -0
  154. data/rbi/openai/models/webhooks/agent_session_in_progress_webhook_event.rbi +151 -0
  155. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +7 -1
  156. data/rbi/openai/models/webhooks/webhook_create_params.rbi +20 -0
  157. data/rbi/openai/models/webhooks/webhook_test_params.rbi +20 -0
  158. data/rbi/openai/models/webhooks/webhook_update_params.rbi +20 -0
  159. data/rbi/openai/resources/audio/speech.rbi +2 -0
  160. data/rbi/openai/resources/audio/voices.rbi +49 -0
  161. data/rbi/openai/resources/audio.rbi +4 -0
  162. data/rbi/openai/resources/beta/agents/environments/files.rbi +31 -0
  163. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +8 -0
  164. data/rbi/openai/resources/beta/agents/sessions/events.rbi +6 -5
  165. data/rbi/openai/resources/beta/agents/sessions/traces.rbi +54 -0
  166. data/rbi/openai/resources/beta/agents/sessions.rbi +6 -1
  167. data/rbi/openai/resources/images.rbi +69 -103
  168. data/rbi/openai/resources/realtime/translations/client_secrets.rbi +54 -0
  169. data/rbi/openai/resources/realtime/translations.rbi +22 -0
  170. data/rbi/openai/resources/realtime.rbi +3 -0
  171. data/rbi/openai/resources/webhooks.rbi +5 -0
  172. data/sig/openai/helpers/agents.rbs +7 -0
  173. data/sig/openai/helpers/beta/agents/artifacts.rbs +20 -0
  174. data/sig/openai/helpers/beta/agents/files.rbs +41 -0
  175. data/sig/openai/helpers/beta/agents/function_tool.rbs +24 -0
  176. data/sig/openai/helpers/beta/agents/model_adapter.rbs +16 -0
  177. data/sig/openai/helpers/beta/agents.rbs +71 -0
  178. data/sig/openai/helpers/structured_output.rbs +12 -0
  179. data/sig/openai/internal/transport/base_client.rbs +8 -0
  180. data/sig/openai/internal/type/base_model.rbs +3 -1
  181. data/sig/openai/internal/type/converter.rbs +16 -2
  182. data/sig/openai/internal/type/union.rbs +2 -1
  183. data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +20 -3
  184. data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +20 -3
  185. data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +20 -3
  186. data/sig/openai/models/admin/organization/usage_completions_response.rbs +20 -3
  187. data/sig/openai/models/admin/organization/usage_costs_response.rbs +20 -3
  188. data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +20 -3
  189. data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +20 -3
  190. data/sig/openai/models/admin/organization/usage_images_response.rbs +20 -3
  191. data/sig/openai/models/admin/organization/usage_moderations_response.rbs +20 -3
  192. data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +20 -3
  193. data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +20 -3
  194. data/sig/openai/models/audio/speech_create_params.rbs +4 -0
  195. data/sig/openai/models/audio/voice.rbs +70 -0
  196. data/sig/openai/models/audio/voice_create_params.rbs +203 -0
  197. data/sig/openai/models/beta/agent_create_params.rbs +1 -5
  198. data/sig/openai/models/beta/agent_update_params.rbs +1 -5
  199. data/sig/openai/models/beta/agents/session_create_params.rbs +1 -5
  200. data/sig/openai/models/beta/agents/session_update_params.rbs +1 -5
  201. data/sig/openai/models/beta/agents/sessions/session_trace.rbs +65 -0
  202. data/sig/openai/models/beta/agents/sessions/trace_list_params.rbs +81 -0
  203. data/sig/openai/models/beta/agents/vaults/credential.rbs +5 -5
  204. data/sig/openai/models/beta/beta_response_output_text.rbs +2 -2
  205. data/sig/openai/models/beta/beta_response_output_text_annotation_added_event.rbs +2 -2
  206. data/sig/openai/models/beta/beta_tool.rbs +3 -9
  207. data/sig/openai/models/beta/environment.rbs +22 -0
  208. data/sig/openai/models/beta/environment_param.rbs +25 -0
  209. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  210. data/sig/openai/models/chat/chat_completion_audio_param.rbs +4 -2
  211. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +2 -1
  212. data/sig/openai/models/image.rbs +21 -21
  213. data/sig/openai/models/image_create_variation_params.rbs +4 -4
  214. data/sig/openai/models/image_edit_params.rbs +46 -60
  215. data/sig/openai/models/image_generate_params.rbs +23 -45
  216. data/sig/openai/models/image_model.rbs +6 -6
  217. data/sig/openai/models/live/fork_server_event.rbs +17 -2
  218. data/sig/openai/models/live/server_event.rbs +17 -2
  219. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +9 -6
  220. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +9 -6
  221. data/sig/openai/models/realtime/translations/client_secret_create_params.rbs +39 -0
  222. data/sig/openai/models/responses/response_output_text.rbs +2 -2
  223. data/sig/openai/models/responses/response_output_text_annotation_added_event.rbs +2 -2
  224. data/sig/openai/models/responses/tool.rbs +3 -9
  225. data/sig/openai/models/webhooks/agent_session_action_required_webhook_event.rbs +114 -0
  226. data/sig/openai/models/webhooks/agent_session_created_webhook_event.rbs +115 -0
  227. data/sig/openai/models/webhooks/agent_session_failed_webhook_event.rbs +89 -0
  228. data/sig/openai/models/webhooks/agent_session_idle_webhook_event.rbs +89 -0
  229. data/sig/openai/models/webhooks/agent_session_in_progress_webhook_event.rbs +89 -0
  230. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +6 -1
  231. data/sig/openai/models/webhooks/webhook_create_params.rbs +10 -0
  232. data/sig/openai/models/webhooks/webhook_test_params.rbs +10 -0
  233. data/sig/openai/models/webhooks/webhook_update_params.rbs +10 -0
  234. data/sig/openai/resources/audio/voices.rbs +14 -0
  235. data/sig/openai/resources/audio.rbs +2 -0
  236. data/sig/openai/resources/beta/agents/environments/files.rbs +17 -0
  237. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +4 -0
  238. data/sig/openai/resources/beta/agents/sessions/traces.rbs +21 -0
  239. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  240. data/sig/openai/resources/realtime/translations/client_secrets.rbs +17 -0
  241. data/sig/openai/resources/realtime/translations.rbs +11 -0
  242. data/sig/openai/resources/realtime.rbs +2 -0
  243. data/sig/openai/resources/webhooks.rbs +6 -1
  244. metadata +61 -1
@@ -203,7 +203,7 @@ module OpenAI
203
203
  # @param headers [Hash] The webhook headers
204
204
  # @param webhook_secret [String, nil] The webhook secret (optional, will use client webhook secret or ENV["OPENAI_WEBHOOK_SECRET"] if not provided)
205
205
  #
206
- # @return [OpenAI::Models::Webhooks::BatchCancelledWebhookEvent, OpenAI::Models::Webhooks::BatchCompletedWebhookEvent, OpenAI::Models::Webhooks::BatchExpiredWebhookEvent, OpenAI::Models::Webhooks::BatchFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunCanceledWebhookEvent, OpenAI::Models::Webhooks::EvalRunFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunSucceededWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobCancelledWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobFailedWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobSucceededWebhookEvent, OpenAI::Models::Webhooks::LiveCallIncomingWebhookEvent, OpenAI::Models::Webhooks::LiveTransportIncomingWebhookEvent, OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent, OpenAI::Models::Webhooks::ResponseCancelledWebhookEvent, OpenAI::Models::Webhooks::ResponseCompletedWebhookEvent, OpenAI::Models::Webhooks::ResponseFailedWebhookEvent, OpenAI::Models::Webhooks::ResponseIncompleteWebhookEvent, OpenAI::Models::Webhooks::SafetyAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyDeactivationIssuedWebhookEvent, OpenAI::Models::Webhooks::SafetyOrgAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyWarningIssuedWebhookEvent]
206
+ # @return [OpenAI::Models::Webhooks::AgentSessionActionRequiredWebhookEvent, OpenAI::Models::Webhooks::AgentSessionCreatedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionFailedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionIdleWebhookEvent, OpenAI::Models::Webhooks::AgentSessionInProgressWebhookEvent, OpenAI::Models::Webhooks::BatchCancelledWebhookEvent, OpenAI::Models::Webhooks::BatchCompletedWebhookEvent, OpenAI::Models::Webhooks::BatchExpiredWebhookEvent, OpenAI::Models::Webhooks::BatchFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunCanceledWebhookEvent, OpenAI::Models::Webhooks::EvalRunFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunSucceededWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobCancelledWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobFailedWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobSucceededWebhookEvent, OpenAI::Models::Webhooks::LiveCallIncomingWebhookEvent, OpenAI::Models::Webhooks::LiveTransportIncomingWebhookEvent, OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent, OpenAI::Models::Webhooks::ResponseCancelledWebhookEvent, OpenAI::Models::Webhooks::ResponseCompletedWebhookEvent, OpenAI::Models::Webhooks::ResponseFailedWebhookEvent, OpenAI::Models::Webhooks::ResponseIncompleteWebhookEvent, OpenAI::Models::Webhooks::SafetyAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyDeactivationIssuedWebhookEvent, OpenAI::Models::Webhooks::SafetyOrgAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyWarningIssuedWebhookEvent]
207
207
  #
208
208
  # @raise [ArgumentError] if signature verification fails
209
209
  def unwrap(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.97.0"
4
+ VERSION = "0.99.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -163,6 +163,7 @@ require_relative "openai/models/graders/python_grader"
163
163
  require_relative "openai/models/graders/text_similarity_grader"
164
164
  require_relative "openai/models/fine_tuning/fine_tuning_job_wandb_integration_object"
165
165
  require_relative "openai/models/realtime/realtime_session_create_request"
166
+ require_relative "openai/models/realtime/realtime_translation_client_secret_create_request"
166
167
  require_relative "openai/models/responses/response_custom_tool_call"
167
168
  require_relative "openai/models/responses/response_custom_tool_call_output"
168
169
  require_relative "openai/models/responses/response_function_tool_call"
@@ -453,6 +454,8 @@ require_relative "openai/models/audio/translation"
453
454
  require_relative "openai/models/audio/translation_create_params"
454
455
  require_relative "openai/models/audio/translation_create_response"
455
456
  require_relative "openai/models/audio/translation_verbose"
457
+ require_relative "openai/models/audio/voice"
458
+ require_relative "openai/models/audio/voice_create_params"
456
459
  require_relative "openai/models/audio_model"
457
460
  require_relative "openai/models/audio_response_format"
458
461
  require_relative "openai/models/auto_file_chunking_strategy_param"
@@ -515,12 +518,14 @@ require_relative "openai/models/beta/agents/sessions/event_stream_params"
515
518
  require_relative "openai/models/beta/agents/sessions/item_list_params"
516
519
  require_relative "openai/models/beta/agents/sessions/session_artifact"
517
520
  require_relative "openai/models/beta/agents/sessions/session_artifact_deleted"
521
+ require_relative "openai/models/beta/agents/sessions/session_trace"
518
522
  require_relative "openai/models/beta/agents/sessions/subagent_list_params"
519
523
  require_relative "openai/models/beta/agents/sessions/subagent_retrieve_params"
520
524
  require_relative "openai/models/beta/agents/sessions/subagents/item_list_params"
521
525
  require_relative "openai/models/beta/agents/sessions/subagents/turn_list_params"
522
526
  require_relative "openai/models/beta/agents/sessions/subagents/turn_retrieve_params"
523
527
  require_relative "openai/models/beta/agents/sessions/subagents/turns/item_list_params"
528
+ require_relative "openai/models/beta/agents/sessions/trace_list_params"
524
529
  require_relative "openai/models/beta/agents/sessions/turn"
525
530
  require_relative "openai/models/beta/agents/sessions/turn_list_params"
526
531
  require_relative "openai/models/beta/agents/sessions/turn_retrieve_params"
@@ -1204,7 +1209,6 @@ require_relative "openai/models/realtime/realtime_transcription_session_create_r
1204
1209
  require_relative "openai/models/realtime/realtime_transcription_session_create_response"
1205
1210
  require_relative "openai/models/realtime/realtime_transcription_session_turn_detection"
1206
1211
  require_relative "openai/models/realtime/realtime_translation_client_event"
1207
- require_relative "openai/models/realtime/realtime_translation_client_secret_create_request"
1208
1212
  require_relative "openai/models/realtime/realtime_translation_client_secret_create_response"
1209
1213
  require_relative "openai/models/realtime/realtime_translation_input_audio_buffer_append_event"
1210
1214
  require_relative "openai/models/realtime/realtime_translation_input_transcript_delta_event"
@@ -1247,6 +1251,7 @@ require_relative "openai/models/realtime/session_updated_event"
1247
1251
  require_relative "openai/models/realtime/session_update_event"
1248
1252
  require_relative "openai/models/realtime/transcription_session_update"
1249
1253
  require_relative "openai/models/realtime/transcription_session_updated_event"
1254
+ require_relative "openai/models/realtime/translations/client_secret_create_params"
1250
1255
  require_relative "openai/models/reasoning"
1251
1256
  require_relative "openai/models/response_format_json_object"
1252
1257
  require_relative "openai/models/response_format_json_schema"
@@ -1432,6 +1437,11 @@ require_relative "openai/models/video_remix_params"
1432
1437
  require_relative "openai/models/video_retrieve_params"
1433
1438
  require_relative "openai/models/video_seconds"
1434
1439
  require_relative "openai/models/video_size"
1440
+ require_relative "openai/models/webhooks/agent_session_action_required_webhook_event"
1441
+ require_relative "openai/models/webhooks/agent_session_created_webhook_event"
1442
+ require_relative "openai/models/webhooks/agent_session_failed_webhook_event"
1443
+ require_relative "openai/models/webhooks/agent_session_idle_webhook_event"
1444
+ require_relative "openai/models/webhooks/agent_session_in_progress_webhook_event"
1435
1445
  require_relative "openai/models/webhooks/batch_cancelled_webhook_event"
1436
1446
  require_relative "openai/models/webhooks/batch_completed_webhook_event"
1437
1447
  require_relative "openai/models/webhooks/batch_expired_webhook_event"
@@ -1507,6 +1517,7 @@ require_relative "openai/resources/audio"
1507
1517
  require_relative "openai/resources/audio/speech"
1508
1518
  require_relative "openai/resources/audio/transcriptions"
1509
1519
  require_relative "openai/resources/audio/translations"
1520
+ require_relative "openai/resources/audio/voices"
1510
1521
  require_relative "openai/resources/batches"
1511
1522
  require_relative "openai/resources/beta"
1512
1523
  require_relative "openai/resources/beta/agents"
@@ -1521,6 +1532,7 @@ require_relative "openai/resources/beta/agents/sessions/subagents"
1521
1532
  require_relative "openai/resources/beta/agents/sessions/subagents/items"
1522
1533
  require_relative "openai/resources/beta/agents/sessions/subagents/turns"
1523
1534
  require_relative "openai/resources/beta/agents/sessions/subagents/turns/items"
1535
+ require_relative "openai/resources/beta/agents/sessions/traces"
1524
1536
  require_relative "openai/resources/beta/agents/sessions/turns"
1525
1537
  require_relative "openai/resources/beta/agents/vaults"
1526
1538
  require_relative "openai/resources/beta/agents/vaults/credentials"
@@ -1570,6 +1582,8 @@ require_relative "openai/resources/moderations"
1570
1582
  require_relative "openai/resources/realtime"
1571
1583
  require_relative "openai/resources/realtime/calls"
1572
1584
  require_relative "openai/resources/realtime/client_secrets"
1585
+ require_relative "openai/resources/realtime/translations"
1586
+ require_relative "openai/resources/realtime/translations/client_secrets"
1573
1587
  require_relative "openai/resources/responses"
1574
1588
  require_relative "openai/resources/responses/input_items"
1575
1589
  require_relative "openai/resources/responses/input_tokens"
@@ -1599,5 +1613,7 @@ require_relative "openai/helpers/realtime"
1599
1613
  require_relative "openai/helpers/responses_websocket"
1600
1614
  require_relative "openai/helpers/live/websocket"
1601
1615
 
1616
+ require_relative "openai/helpers/beta/agents/creation_stream"
1602
1617
  require_relative "openai/helpers/agents/session_stream"
1618
+ require_relative "openai/helpers/beta/agents/function_tool"
1603
1619
  require_relative "openai/helpers/agents/message"
@@ -26,6 +26,16 @@ module OpenAI
26
26
  def each(&block)
27
27
  end
28
28
 
29
+ # @beta
30
+ sig { returns(OpenAI::Helpers::Beta::Agents::TurnResult) }
31
+ def get_final_result
32
+ end
33
+
34
+ # @beta
35
+ sig { returns(T.self_type) }
36
+ def with_result_collection
37
+ end
38
+
29
39
  sig { void }
30
40
  def close
31
41
  end
@@ -47,12 +57,21 @@ module OpenAI
47
57
  input: T.any(String, T::Array[OpenAI::Models::Beta::AgentSessionInputMessageParam::OrHash]),
48
58
  tool_handlers: T::Hash[String, OpenAI::Helpers::Agents::ToolHandler],
49
59
  idempotency_key: T.nilable(String),
60
+ output_type: T.nilable(T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)),
50
61
  request_options: T.nilable(OpenAI::RequestOptions::OrHash),
51
62
  block: T.nilable(T.proc.params(stream: OpenAI::Helpers::Agents::SessionStream).void)
52
63
  )
53
64
  .returns(OpenAI::Helpers::Agents::SessionStream)
54
65
  end
55
- def stream(session_id, input:, tool_handlers: {}, idempotency_key: nil, request_options: {}, &block)
66
+ def stream(
67
+ session_id,
68
+ input:,
69
+ tool_handlers: {},
70
+ idempotency_key: nil,
71
+ output_type: nil,
72
+ request_options: {},
73
+ &block
74
+ )
56
75
  end
57
76
  end
58
77
  end
@@ -0,0 +1,29 @@
1
+ # typed: strong
2
+ module OpenAI
3
+ module Helpers
4
+ module Beta
5
+ module Agents
6
+ class ResultArtifacts
7
+ sig {
8
+ params(
9
+ artifacts: OpenAI::Resources::Beta::Agents::Sessions::Artifacts,
10
+ client: OpenAI::Client,
11
+ result: TurnResult
12
+ )
13
+ .void
14
+ }
15
+ def initialize(artifacts:, client:, result:)
16
+ end
17
+
18
+ sig {
19
+ params(path: String, to: T.untyped, request_options: OpenAI::RequestOptions::OrHash).returns(
20
+ OpenAI::Models::Beta::Agents::Sessions::SessionArtifact
21
+ )
22
+ }
23
+ def download(path:, to:, request_options: {})
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,65 @@
1
+ # typed: strong
2
+ module OpenAI
3
+ module Helpers
4
+ module Beta
5
+ module Agents
6
+ class PreparedFiles
7
+ sig { returns(T::Array[OpenAI::Models::Beta::HostedEnvironmentFileParam::FileID]) }
8
+ attr_reader :files
9
+ sig { returns(T::Array[String]) }
10
+ attr_reader :upload_ids
11
+ sig { params(files: T::Array[T::Hash[Symbol, T.untyped]]).void }
12
+ def initialize(files)
13
+ end
14
+ end
15
+
16
+ class FilePreparationError < OpenAI::Errors::Error
17
+ sig { returns(PreparedFiles) }
18
+ attr_reader :prepared
19
+ sig { params(prepared: PreparedFiles).returns(T.attached_class) }
20
+ def self.new(prepared:)
21
+ end
22
+ end
23
+ # @api private
24
+ class FilePreparation
25
+ sig {
26
+ params(client: OpenAI::Client, environment_files: OpenAI::Resources::Beta::Agents::Environments::Files).void
27
+ }
28
+ def initialize(client:, environment_files:)
29
+ end
30
+
31
+ sig {
32
+ params(files: T::Hash[String, T.any(String, Pathname)], request_options: OpenAI::RequestOptions::OrHash)
33
+ .returns(PreparedFiles)
34
+ }
35
+ def prepare(files, request_options: {})
36
+ end
37
+
38
+ sig {
39
+ params(
40
+ directory: T.any(String, Pathname),
41
+ destination: String,
42
+ include: T::Array[String],
43
+ request_options: OpenAI::RequestOptions::OrHash
44
+ )
45
+ .returns(PreparedFiles)
46
+ }
47
+ def prepare_directory(directory, destination:, include:, request_options: {})
48
+ end
49
+
50
+ sig {
51
+ params(
52
+ environment_id: String,
53
+ file: T.any(String, Pathname),
54
+ path: String,
55
+ request_options: OpenAI::RequestOptions::OrHash
56
+ )
57
+ .returns(PreparedFiles)
58
+ }
59
+ def upload(environment_id, file:, path:, request_options: {})
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Helpers
5
+ module Beta
6
+ module Agents
7
+ class FunctionTool
8
+ sig { returns(String) }
9
+ attr_reader :name
10
+
11
+ sig do
12
+ params(
13
+ name: String,
14
+ arguments: T.class_of(OpenAI::BaseModel),
15
+ description: String,
16
+ handler: T.proc.params(arguments: T.untyped).returns(OpenAI::Helpers::Agents::ToolOutput)
17
+ )
18
+ .void
19
+ end
20
+ def initialize(name:, arguments:, description: "", &handler)
21
+ end
22
+
23
+ sig { returns(OpenAI::Internal::AnyHash) }
24
+ def definition
25
+ end
26
+
27
+ sig { returns(T::Hash[String, OpenAI::Helpers::Agents::ToolHandler]) }
28
+ def handlers
29
+ end
30
+
31
+ sig {
32
+ params(arguments: T.any(String, OpenAI::Internal::AnyHash)).returns(OpenAI::Helpers::Agents::ToolOutput)
33
+ }
34
+ def call(arguments)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Helpers
5
+ module Beta
6
+ module Agents
7
+ module ModelAdapter
8
+ sig { params(model: T.untyped, parameter: String).void }
9
+ def self.validate!(model, parameter:)
10
+ end
11
+
12
+ sig do
13
+ params(model: T.class_of(OpenAI::BaseModel), value: T.untyped, memoize: T::Boolean)
14
+ .returns(T.nilable(OpenAI::BaseModel))
15
+ end
16
+ def self.coerce(model, value, memoize: false)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,146 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Helpers
5
+ module Beta
6
+ module Agents
7
+ class TurnResult
8
+ sig { returns(OpenAI::Models::Beta::Agents::Sessions::Turn) }
9
+ def turn
10
+ end
11
+
12
+ sig { returns(T::Array[OpenAI::Models::Beta::AgentSessionMessage]) }
13
+ def messages
14
+ end
15
+
16
+ sig { returns(String) }
17
+ def session_id
18
+ end
19
+
20
+ sig { returns(String) }
21
+ def turn_id
22
+ end
23
+
24
+ sig { returns(String) }
25
+ def output_text
26
+ end
27
+
28
+ sig { returns(T.untyped) }
29
+ def output_parsed
30
+ end
31
+
32
+ sig {
33
+ params(output_type: T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)).returns(ParsedTurnResult)
34
+ }
35
+ def parse(output_type:)
36
+ end
37
+ end
38
+
39
+ class ResultError < OpenAI::Errors::Error
40
+ sig { returns(Symbol) }
41
+ def reason
42
+ end
43
+
44
+ sig { returns(T.nilable(String)) }
45
+ def session_id
46
+ end
47
+
48
+ sig { returns(T.nilable(OpenAI::Models::Beta::Agents::Sessions::Turn)) }
49
+ def turn
50
+ end
51
+
52
+ sig { returns(T::Array[OpenAI::Models::Beta::AgentSessionMessage]) }
53
+ def messages
54
+ end
55
+
56
+ sig {
57
+ returns(
58
+ T::Array[T.any(OpenAI::Models::Beta::AgentSession::RequiredAction::Variants, OpenAI::Internal::AnyHash)]
59
+ )
60
+ }
61
+ def required_actions
62
+ end
63
+
64
+ sig { returns(T.nilable(String)) }
65
+ def turn_id
66
+ end
67
+ end
68
+
69
+ # @api private
70
+ class ResultCollector
71
+ sig { params(session_id: T.nilable(String), handler_names: T::Array[String]).void }
72
+ def initialize(session_id: nil, handler_names: [])
73
+ end
74
+
75
+ sig { void }
76
+ def enable
77
+ end
78
+
79
+ sig {
80
+ params(event: T.any(OpenAI::Models::Beta::AgentSessionEvent::Variants, OpenAI::Internal::AnyHash)).void
81
+ }
82
+ def observe(event)
83
+ end
84
+
85
+ sig { returns(T.nilable(T::Boolean)) }
86
+ def stopped?
87
+ end
88
+
89
+ sig { params(error: StandardError).void }
90
+ def observe_error(error)
91
+ end
92
+
93
+ sig { returns(TurnResult) }
94
+ def result
95
+ end
96
+ end
97
+
98
+ class ParsedTurnResult < TurnResult
99
+ sig { returns(TurnResult) }
100
+ attr_reader :raw_result
101
+
102
+ sig { returns(T.untyped) }
103
+ attr_reader :output_parsed
104
+ end
105
+
106
+ class OutputParseError < OpenAI::Errors::Error
107
+ sig { returns(TurnResult) }
108
+ attr_reader :raw_result
109
+ end
110
+
111
+ # @api private
112
+ class OutputParser
113
+ sig { params(model: T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)).void }
114
+ def initialize(model)
115
+ end
116
+
117
+ sig { params(params: OpenAI::Internal::AnyHash).void }
118
+ def prepare_request(params)
119
+ end
120
+
121
+ sig { params(result: TurnResult).returns(ParsedTurnResult) }
122
+ def parse(result)
123
+ end
124
+ end
125
+
126
+ class CreationStream < OpenAI::Internal::Stream
127
+ Message = type_member(:in) { {fixed: OpenAI::Internal::Util::ServerSentEvent} }
128
+ Elem = type_member(:out) { {fixed: OpenAI::Models::Beta::AgentSessionEvent::Variants} }
129
+
130
+ sig { returns(TurnResult) }
131
+ def get_final_result
132
+ end
133
+
134
+ sig { returns(T.self_type) }
135
+ def with_result_collection
136
+ end
137
+
138
+ # @api private
139
+ sig { params(parser: T.nilable(OutputParser)).returns(T.self_type) }
140
+ def configure_output_parser(parser)
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
@@ -409,6 +409,18 @@ module OpenAI
409
409
  )
410
410
  end
411
411
 
412
+ # @api private
413
+ sig {
414
+ params(
415
+ req: T.untyped,
416
+ on_response: T.nilable(T.proc.returns(T.untyped)),
417
+ blk: T.proc.params(chunk: String).returns(T.untyped)
418
+ )
419
+ .void
420
+ }
421
+ def request_streaming_body(req, on_response = nil, &blk)
422
+ end
423
+
412
424
  # @api private
413
425
  sig do
414
426
  params(
@@ -51,7 +51,7 @@ module OpenAI
51
51
 
52
52
  # @api private
53
53
  sig do
54
- returns(
54
+ params(state: T.nilable(OpenAI::Internal::Type::Converter::CoerceState)).returns(
55
55
  T::Hash[
56
56
  Symbol,
57
57
  T.all(
@@ -61,7 +61,7 @@ module OpenAI
61
61
  ]
62
62
  )
63
63
  end
64
- def fields
64
+ def fields(state: nil)
65
65
  end
66
66
 
67
67
  # @api private
@@ -22,7 +22,8 @@ module OpenAI
22
22
  maybe: Integer
23
23
  },
24
24
  error: T.nilable(StandardError),
25
- branched: Integer
25
+ branched: Integer,
26
+ memo: T.nilable(T::Hash[T.untyped, T.untyped])
26
27
  }
27
28
  end
28
29
 
@@ -123,11 +124,28 @@ module OpenAI
123
124
 
124
125
  # @api private
125
126
  sig do
126
- params(translate_names: T::Boolean, request_only: T::Boolean).returns(
127
+ params(translate_names: T::Boolean, request_only: T::Boolean, memoize: T::Boolean).returns(
127
128
  OpenAI::Internal::Type::Converter::CoerceState
128
129
  )
129
130
  end
130
- def self.new_coerce_state(translate_names: true, request_only: false)
131
+ def self.new_coerce_state(translate_names: true, request_only: false, memoize: false)
132
+ end
133
+
134
+ # @api private
135
+ sig {
136
+ params(type_fn: T.proc.returns(T.untyped), state: T.nilable(OpenAI::Internal::Type::Converter::CoerceState))
137
+ .returns(T.untyped)
138
+ }
139
+ def self.resolve_type(type_fn, state: nil)
140
+ end
141
+
142
+ # @api private
143
+ sig {
144
+ params(target: T.untyped, value: T.untyped, state: OpenAI::Internal::Type::Converter::CoerceState).returns(
145
+ T.untyped
146
+ )
147
+ }
148
+ def self.coerce_cached(target, value, state:)
131
149
  end
132
150
 
133
151
  # @api private
@@ -65,8 +65,12 @@ module OpenAI
65
65
  end
66
66
 
67
67
  # @api private
68
- sig { params(value: T.anything).returns(T.nilable(T.anything)) }
69
- private def resolve_variant(value)
68
+ sig {
69
+ params(value: T.anything, state: T.nilable(OpenAI::Internal::Type::Converter::CoerceState)).returns(
70
+ T.nilable(T.anything)
71
+ )
72
+ }
73
+ private def resolve_variant(value, state: nil)
70
74
  end
71
75
 
72
76
  sig { params(other: T.anything).returns(T::Boolean) }
@@ -206,7 +206,16 @@ module OpenAI
206
206
  sig { params(input_audio_tokens: Integer).void }
207
207
  attr_writer :input_audio_tokens
208
208
 
209
- # The aggregated number of input tokens written to the cache.
209
+ # The aggregated number of input tokens written to the cache with a 12-hour
210
+ # retention period.
211
+ sig { returns(T.nilable(Integer)) }
212
+ attr_reader :input_cache_write_12h_tokens
213
+
214
+ sig { params(input_cache_write_12h_tokens: Integer).void }
215
+ attr_writer :input_cache_write_12h_tokens
216
+
217
+ # The aggregated number of input tokens written to the cache with a 30-minute
218
+ # retention period.
210
219
  sig { returns(T.nilable(Integer)) }
211
220
  attr_reader :input_cache_write_tokens
212
221
 
@@ -322,6 +331,8 @@ module OpenAI
322
331
 
323
332
  input_audio_tokens: Integer,
324
333
 
334
+ input_cache_write_12h_tokens: Integer,
335
+
325
336
  input_cache_write_tokens: Integer,
326
337
 
327
338
  input_cached_audio_tokens: Integer,
@@ -382,7 +393,12 @@ module OpenAI
382
393
  # The aggregated number of uncached audio input tokens used.
383
394
  input_audio_tokens: nil,
384
395
 
385
- # The aggregated number of input tokens written to the cache.
396
+ # The aggregated number of input tokens written to the cache with a 12-hour
397
+ # retention period.
398
+ input_cache_write_12h_tokens: nil,
399
+
400
+ # The aggregated number of input tokens written to the cache with a 30-minute
401
+ # retention period.
386
402
  input_cache_write_tokens: nil,
387
403
 
388
404
  # The aggregated number of cached audio input tokens used.
@@ -448,6 +464,7 @@ module OpenAI
448
464
  api_key_id: T.nilable(String),
449
465
  batch: T.nilable(T::Boolean),
450
466
  input_audio_tokens: Integer,
467
+ input_cache_write_12h_tokens: Integer,
451
468
  input_cache_write_tokens: Integer,
452
469
  input_cached_audio_tokens: Integer,
453
470
  input_cached_image_tokens: Integer,
@@ -208,7 +208,16 @@ module OpenAI
208
208
  sig { params(input_audio_tokens: Integer).void }
209
209
  attr_writer :input_audio_tokens
210
210
 
211
- # The aggregated number of input tokens written to the cache.
211
+ # The aggregated number of input tokens written to the cache with a 12-hour
212
+ # retention period.
213
+ sig { returns(T.nilable(Integer)) }
214
+ attr_reader :input_cache_write_12h_tokens
215
+
216
+ sig { params(input_cache_write_12h_tokens: Integer).void }
217
+ attr_writer :input_cache_write_12h_tokens
218
+
219
+ # The aggregated number of input tokens written to the cache with a 30-minute
220
+ # retention period.
212
221
  sig { returns(T.nilable(Integer)) }
213
222
  attr_reader :input_cache_write_tokens
214
223
 
@@ -324,6 +333,8 @@ module OpenAI
324
333
 
325
334
  input_audio_tokens: Integer,
326
335
 
336
+ input_cache_write_12h_tokens: Integer,
337
+
327
338
  input_cache_write_tokens: Integer,
328
339
 
329
340
  input_cached_audio_tokens: Integer,
@@ -384,7 +395,12 @@ module OpenAI
384
395
  # The aggregated number of uncached audio input tokens used.
385
396
  input_audio_tokens: nil,
386
397
 
387
- # The aggregated number of input tokens written to the cache.
398
+ # The aggregated number of input tokens written to the cache with a 12-hour
399
+ # retention period.
400
+ input_cache_write_12h_tokens: nil,
401
+
402
+ # The aggregated number of input tokens written to the cache with a 30-minute
403
+ # retention period.
388
404
  input_cache_write_tokens: nil,
389
405
 
390
406
  # The aggregated number of cached audio input tokens used.
@@ -450,6 +466,7 @@ module OpenAI
450
466
  api_key_id: T.nilable(String),
451
467
  batch: T.nilable(T::Boolean),
452
468
  input_audio_tokens: Integer,
469
+ input_cache_write_12h_tokens: Integer,
453
470
  input_cache_write_tokens: Integer,
454
471
  input_cached_audio_tokens: Integer,
455
472
  input_cached_image_tokens: Integer,