openai 0.20.0 → 0.21.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 (332) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/internal/stream.rb +3 -2
  6. data/lib/openai/models/audio/speech_create_params.rb +6 -0
  7. data/lib/openai/models/chat/chat_completion_audio_param.rb +6 -0
  8. data/lib/openai/models/evals/run_cancel_response.rb +2 -2
  9. data/lib/openai/models/evals/run_create_params.rb +2 -2
  10. data/lib/openai/models/evals/run_create_response.rb +2 -2
  11. data/lib/openai/models/evals/run_list_response.rb +2 -2
  12. data/lib/openai/models/evals/run_retrieve_response.rb +2 -2
  13. data/lib/openai/models/realtime/client_secret_create_params.rb +93 -0
  14. data/lib/openai/models/realtime/client_secret_create_response.rb +300 -0
  15. data/lib/openai/models/realtime/conversation_created_event.rb +70 -0
  16. data/lib/openai/models/realtime/conversation_item.rb +44 -0
  17. data/lib/openai/models/realtime/conversation_item_added.rb +48 -0
  18. data/lib/openai/models/realtime/conversation_item_create_event.rb +57 -0
  19. data/lib/openai/models/realtime/conversation_item_created_event.rb +59 -0
  20. data/lib/openai/models/realtime/conversation_item_delete_event.rb +39 -0
  21. data/lib/openai/models/realtime/conversation_item_deleted_event.rb +38 -0
  22. data/lib/openai/models/realtime/conversation_item_done.rb +48 -0
  23. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rb +189 -0
  24. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +63 -0
  25. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rb +96 -0
  26. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_segment.rb +84 -0
  27. data/lib/openai/models/realtime/conversation_item_retrieve_event.rb +40 -0
  28. data/lib/openai/models/realtime/conversation_item_truncate_event.rb +68 -0
  29. data/lib/openai/models/realtime/conversation_item_truncated_event.rb +60 -0
  30. data/lib/openai/models/realtime/conversation_item_with_reference.rb +235 -0
  31. data/lib/openai/models/realtime/input_audio_buffer_append_event.rb +49 -0
  32. data/lib/openai/models/realtime/input_audio_buffer_clear_event.rb +29 -0
  33. data/lib/openai/models/realtime/input_audio_buffer_cleared_event.rb +29 -0
  34. data/lib/openai/models/realtime/input_audio_buffer_commit_event.rb +35 -0
  35. data/lib/openai/models/realtime/input_audio_buffer_committed_event.rb +51 -0
  36. data/lib/openai/models/realtime/input_audio_buffer_speech_started_event.rb +59 -0
  37. data/lib/openai/models/realtime/input_audio_buffer_speech_stopped_event.rb +51 -0
  38. data/lib/openai/models/realtime/input_audio_buffer_timeout_triggered.rb +52 -0
  39. data/lib/openai/models/realtime/log_prob_properties.rb +39 -0
  40. data/lib/openai/models/realtime/mcp_list_tools_completed.rb +36 -0
  41. data/lib/openai/models/realtime/mcp_list_tools_failed.rb +36 -0
  42. data/lib/openai/models/realtime/mcp_list_tools_in_progress.rb +36 -0
  43. data/lib/openai/models/realtime/output_audio_buffer_clear_event.rb +32 -0
  44. data/lib/openai/models/realtime/rate_limits_updated_event.rb +91 -0
  45. data/lib/openai/models/realtime/realtime_audio_config.rb +446 -0
  46. data/lib/openai/models/realtime/realtime_client_event.rb +123 -0
  47. data/lib/openai/models/realtime/realtime_client_secret_config.rb +64 -0
  48. data/lib/openai/models/realtime/realtime_conversation_item_assistant_message.rb +118 -0
  49. data/lib/openai/models/realtime/realtime_conversation_item_function_call.rb +94 -0
  50. data/lib/openai/models/realtime/realtime_conversation_item_function_call_output.rb +86 -0
  51. data/lib/openai/models/realtime/realtime_conversation_item_system_message.rb +118 -0
  52. data/lib/openai/models/realtime/realtime_conversation_item_user_message.rb +135 -0
  53. data/lib/openai/models/realtime/realtime_error.rb +55 -0
  54. data/lib/openai/models/realtime/realtime_error_event.rb +38 -0
  55. data/lib/openai/models/realtime/realtime_mcp_approval_request.rb +52 -0
  56. data/lib/openai/models/realtime/realtime_mcp_approval_response.rb +52 -0
  57. data/lib/openai/models/realtime/realtime_mcp_list_tools.rb +84 -0
  58. data/lib/openai/models/realtime/realtime_mcp_protocol_error.rb +29 -0
  59. data/lib/openai/models/realtime/realtime_mcp_tool_call.rb +94 -0
  60. data/lib/openai/models/realtime/realtime_mcp_tool_execution_error.rb +23 -0
  61. data/lib/openai/models/realtime/realtime_mcphttp_error.rb +29 -0
  62. data/lib/openai/models/realtime/realtime_response.rb +259 -0
  63. data/lib/openai/models/realtime/realtime_response_status.rb +103 -0
  64. data/lib/openai/models/realtime/realtime_response_usage.rb +61 -0
  65. data/lib/openai/models/realtime/realtime_response_usage_input_token_details.rb +36 -0
  66. data/lib/openai/models/realtime/realtime_response_usage_output_token_details.rb +28 -0
  67. data/lib/openai/models/realtime/realtime_server_event.rb +369 -0
  68. data/lib/openai/models/realtime/realtime_session.rb +696 -0
  69. data/lib/openai/models/realtime/realtime_session_create_request.rb +234 -0
  70. data/lib/openai/models/realtime/realtime_session_create_response.rb +579 -0
  71. data/lib/openai/models/realtime/realtime_tool_choice_config.rb +32 -0
  72. data/lib/openai/models/realtime/realtime_tools_config.rb +11 -0
  73. data/lib/openai/models/realtime/realtime_tools_config_union.rb +379 -0
  74. data/lib/openai/models/realtime/realtime_tracing_config.rb +61 -0
  75. data/lib/openai/models/realtime/realtime_transcription_session_create_request.rb +312 -0
  76. data/lib/openai/models/realtime/realtime_truncation.rb +67 -0
  77. data/lib/openai/models/realtime/response_audio_delta_event.rb +68 -0
  78. data/lib/openai/models/realtime/response_audio_done_event.rb +61 -0
  79. data/lib/openai/models/realtime/response_audio_transcript_delta_event.rb +68 -0
  80. data/lib/openai/models/realtime/response_audio_transcript_done_event.rb +70 -0
  81. data/lib/openai/models/realtime/response_cancel_event.rb +42 -0
  82. data/lib/openai/models/realtime/response_content_part_added_event.rb +120 -0
  83. data/lib/openai/models/realtime/response_content_part_done_event.rb +120 -0
  84. data/lib/openai/models/realtime/response_create_event.rb +391 -0
  85. data/lib/openai/models/realtime/response_created_event.rb +37 -0
  86. data/lib/openai/models/realtime/response_done_event.rb +38 -0
  87. data/lib/openai/models/realtime/response_function_call_arguments_delta_event.rb +72 -0
  88. data/lib/openai/models/realtime/response_function_call_arguments_done_event.rb +73 -0
  89. data/lib/openai/models/realtime/response_mcp_call_arguments_delta.rb +68 -0
  90. data/lib/openai/models/realtime/response_mcp_call_arguments_done.rb +60 -0
  91. data/lib/openai/models/realtime/response_mcp_call_completed.rb +44 -0
  92. data/lib/openai/models/realtime/response_mcp_call_failed.rb +44 -0
  93. data/lib/openai/models/realtime/response_mcp_call_in_progress.rb +44 -0
  94. data/lib/openai/models/realtime/response_output_item_added_event.rb +52 -0
  95. data/lib/openai/models/realtime/response_output_item_done_event.rb +53 -0
  96. data/lib/openai/models/realtime/response_text_delta_event.rb +68 -0
  97. data/lib/openai/models/realtime/response_text_done_event.rb +69 -0
  98. data/lib/openai/models/realtime/session_created_event.rb +38 -0
  99. data/lib/openai/models/realtime/session_update_event.rb +44 -0
  100. data/lib/openai/models/realtime/session_updated_event.rb +37 -0
  101. data/lib/openai/models/realtime/transcription_session_created.rb +278 -0
  102. data/lib/openai/models/realtime/transcription_session_update.rb +36 -0
  103. data/lib/openai/models/realtime/transcription_session_updated_event.rb +279 -0
  104. data/lib/openai/models/responses/response.rb +6 -3
  105. data/lib/openai/models/responses/response_create_params.rb +6 -3
  106. data/lib/openai/models/responses/tool.rb +3 -156
  107. data/lib/openai/models/responses/web_search_preview_tool.rb +124 -0
  108. data/lib/openai/models/responses/web_search_tool.rb +58 -21
  109. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +119 -0
  110. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -1
  111. data/lib/openai/models.rb +2 -0
  112. data/lib/openai/resources/realtime/client_secrets.rb +44 -0
  113. data/lib/openai/resources/realtime.rb +18 -0
  114. data/lib/openai/resources/responses.rb +2 -2
  115. data/lib/openai/resources/webhooks.rb +1 -1
  116. data/lib/openai/version.rb +1 -1
  117. data/lib/openai.rb +95 -0
  118. data/rbi/openai/client.rbi +3 -0
  119. data/rbi/openai/models/audio/speech_create_params.rbi +10 -0
  120. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +10 -0
  121. data/rbi/openai/models/evals/run_cancel_response.rbi +4 -4
  122. data/rbi/openai/models/evals/run_create_params.rbi +8 -8
  123. data/rbi/openai/models/evals/run_create_response.rbi +4 -4
  124. data/rbi/openai/models/evals/run_list_response.rbi +4 -4
  125. data/rbi/openai/models/evals/run_retrieve_response.rbi +4 -4
  126. data/rbi/openai/models/realtime/client_secret_create_params.rbi +222 -0
  127. data/rbi/openai/models/realtime/client_secret_create_response.rbi +676 -0
  128. data/rbi/openai/models/realtime/conversation_created_event.rbi +164 -0
  129. data/rbi/openai/models/realtime/conversation_item.rbi +35 -0
  130. data/rbi/openai/models/realtime/conversation_item_added.rbi +105 -0
  131. data/rbi/openai/models/realtime/conversation_item_create_event.rbi +123 -0
  132. data/rbi/openai/models/realtime/conversation_item_created_event.rbi +117 -0
  133. data/rbi/openai/models/realtime/conversation_item_delete_event.rbi +57 -0
  134. data/rbi/openai/models/realtime/conversation_item_deleted_event.rbi +53 -0
  135. data/rbi/openai/models/realtime/conversation_item_done.rbi +105 -0
  136. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbi +305 -0
  137. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +93 -0
  138. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rbi +158 -0
  139. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_segment.rbi +107 -0
  140. data/rbi/openai/models/realtime/conversation_item_retrieve_event.rbi +58 -0
  141. data/rbi/openai/models/realtime/conversation_item_truncate_event.rbi +94 -0
  142. data/rbi/openai/models/realtime/conversation_item_truncated_event.rbi +80 -0
  143. data/rbi/openai/models/realtime/conversation_item_with_reference.rbi +549 -0
  144. data/rbi/openai/models/realtime/input_audio_buffer_append_event.rbi +65 -0
  145. data/rbi/openai/models/realtime/input_audio_buffer_clear_event.rbi +43 -0
  146. data/rbi/openai/models/realtime/input_audio_buffer_cleared_event.rbi +40 -0
  147. data/rbi/openai/models/realtime/input_audio_buffer_commit_event.rbi +49 -0
  148. data/rbi/openai/models/realtime/input_audio_buffer_committed_event.rbi +72 -0
  149. data/rbi/openai/models/realtime/input_audio_buffer_speech_started_event.rbi +82 -0
  150. data/rbi/openai/models/realtime/input_audio_buffer_speech_stopped_event.rbi +73 -0
  151. data/rbi/openai/models/realtime/input_audio_buffer_timeout_triggered.rbi +75 -0
  152. data/rbi/openai/models/realtime/log_prob_properties.rbi +55 -0
  153. data/rbi/openai/models/realtime/mcp_list_tools_completed.rbi +51 -0
  154. data/rbi/openai/models/realtime/mcp_list_tools_failed.rbi +51 -0
  155. data/rbi/openai/models/realtime/mcp_list_tools_in_progress.rbi +51 -0
  156. data/rbi/openai/models/realtime/output_audio_buffer_clear_event.rbi +46 -0
  157. data/rbi/openai/models/realtime/rate_limits_updated_event.rbi +187 -0
  158. data/rbi/openai/models/realtime/realtime_audio_config.rbi +1004 -0
  159. data/rbi/openai/models/realtime/realtime_client_event.rbi +38 -0
  160. data/rbi/openai/models/realtime/realtime_client_secret_config.rbi +147 -0
  161. data/rbi/openai/models/realtime/realtime_conversation_item_assistant_message.rbi +292 -0
  162. data/rbi/openai/models/realtime/realtime_conversation_item_function_call.rbi +199 -0
  163. data/rbi/openai/models/realtime/realtime_conversation_item_function_call_output.rbi +188 -0
  164. data/rbi/openai/models/realtime/realtime_conversation_item_system_message.rbi +292 -0
  165. data/rbi/openai/models/realtime/realtime_conversation_item_user_message.rbi +319 -0
  166. data/rbi/openai/models/realtime/realtime_error.rbi +72 -0
  167. data/rbi/openai/models/realtime/realtime_error_event.rbi +64 -0
  168. data/rbi/openai/models/realtime/realtime_mcp_approval_request.rbi +75 -0
  169. data/rbi/openai/models/realtime/realtime_mcp_approval_response.rbi +75 -0
  170. data/rbi/openai/models/realtime/realtime_mcp_list_tools.rbi +131 -0
  171. data/rbi/openai/models/realtime/realtime_mcp_protocol_error.rbi +40 -0
  172. data/rbi/openai/models/realtime/realtime_mcp_tool_call.rbi +145 -0
  173. data/rbi/openai/models/realtime/realtime_mcp_tool_execution_error.rbi +31 -0
  174. data/rbi/openai/models/realtime/realtime_mcphttp_error.rbi +40 -0
  175. data/rbi/openai/models/realtime/realtime_response.rbi +573 -0
  176. data/rbi/openai/models/realtime/realtime_response_status.rbi +233 -0
  177. data/rbi/openai/models/realtime/realtime_response_usage.rbi +121 -0
  178. data/rbi/openai/models/realtime/realtime_response_usage_input_token_details.rbi +68 -0
  179. data/rbi/openai/models/realtime/realtime_response_usage_output_token_details.rbi +51 -0
  180. data/rbi/openai/models/realtime/realtime_server_event.rbi +311 -0
  181. data/rbi/openai/models/realtime/realtime_session.rbi +1426 -0
  182. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +560 -0
  183. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +1249 -0
  184. data/rbi/openai/models/realtime/realtime_tool_choice_config.rbi +30 -0
  185. data/rbi/openai/models/realtime/realtime_tools_config.rbi +15 -0
  186. data/rbi/openai/models/realtime/realtime_tools_config_union.rbi +755 -0
  187. data/rbi/openai/models/realtime/realtime_tracing_config.rbi +95 -0
  188. data/rbi/openai/models/realtime/realtime_transcription_session_create_request.rbi +703 -0
  189. data/rbi/openai/models/realtime/realtime_truncation.rbi +117 -0
  190. data/rbi/openai/models/realtime/response_audio_delta_event.rbi +91 -0
  191. data/rbi/openai/models/realtime/response_audio_done_event.rbi +84 -0
  192. data/rbi/openai/models/realtime/response_audio_transcript_delta_event.rbi +91 -0
  193. data/rbi/openai/models/realtime/response_audio_transcript_done_event.rbi +93 -0
  194. data/rbi/openai/models/realtime/response_cancel_event.rbi +63 -0
  195. data/rbi/openai/models/realtime/response_content_part_added_event.rbi +219 -0
  196. data/rbi/openai/models/realtime/response_content_part_done_event.rbi +219 -0
  197. data/rbi/openai/models/realtime/response_create_event.rbi +863 -0
  198. data/rbi/openai/models/realtime/response_created_event.rbi +65 -0
  199. data/rbi/openai/models/realtime/response_done_event.rbi +66 -0
  200. data/rbi/openai/models/realtime/response_function_call_arguments_delta_event.rbi +91 -0
  201. data/rbi/openai/models/realtime/response_function_call_arguments_done_event.rbi +92 -0
  202. data/rbi/openai/models/realtime/response_mcp_call_arguments_delta.rbi +91 -0
  203. data/rbi/openai/models/realtime/response_mcp_call_arguments_done.rbi +83 -0
  204. data/rbi/openai/models/realtime/response_mcp_call_completed.rbi +67 -0
  205. data/rbi/openai/models/realtime/response_mcp_call_failed.rbi +67 -0
  206. data/rbi/openai/models/realtime/response_mcp_call_in_progress.rbi +67 -0
  207. data/rbi/openai/models/realtime/response_output_item_added_event.rbi +111 -0
  208. data/rbi/openai/models/realtime/response_output_item_done_event.rbi +112 -0
  209. data/rbi/openai/models/realtime/response_text_delta_event.rbi +91 -0
  210. data/rbi/openai/models/realtime/response_text_done_event.rbi +92 -0
  211. data/rbi/openai/models/realtime/session_created_event.rbi +64 -0
  212. data/rbi/openai/models/realtime/session_update_event.rbi +77 -0
  213. data/rbi/openai/models/realtime/session_updated_event.rbi +63 -0
  214. data/rbi/openai/models/realtime/transcription_session_created.rbi +653 -0
  215. data/rbi/openai/models/realtime/transcription_session_update.rbi +74 -0
  216. data/rbi/openai/models/realtime/transcription_session_updated_event.rbi +657 -0
  217. data/rbi/openai/models/responses/response.rbi +10 -4
  218. data/rbi/openai/models/responses/response_create_params.rbi +16 -10
  219. data/rbi/openai/models/responses/tool.rbi +2 -348
  220. data/rbi/openai/models/responses/web_search_preview_tool.rbi +245 -0
  221. data/rbi/openai/models/responses/web_search_tool.rbi +120 -23
  222. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +222 -0
  223. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
  224. data/rbi/openai/models.rbi +2 -0
  225. data/rbi/openai/resources/realtime/client_secrets.rbi +38 -0
  226. data/rbi/openai/resources/realtime.rbi +15 -0
  227. data/rbi/openai/resources/responses.rbi +12 -6
  228. data/rbi/openai/resources/webhooks.rbi +1 -0
  229. data/sig/openai/client.rbs +2 -0
  230. data/sig/openai/models/audio/speech_create_params.rbs +4 -0
  231. data/sig/openai/models/chat/chat_completion_audio_param.rbs +4 -0
  232. data/sig/openai/models/realtime/client_secret_create_params.rbs +89 -0
  233. data/sig/openai/models/realtime/client_secret_create_response.rbs +292 -0
  234. data/sig/openai/models/realtime/conversation_created_event.rbs +70 -0
  235. data/sig/openai/models/realtime/conversation_item.rbs +22 -0
  236. data/sig/openai/models/realtime/conversation_item_added.rbs +37 -0
  237. data/sig/openai/models/realtime/conversation_item_create_event.rbs +41 -0
  238. data/sig/openai/models/realtime/conversation_item_created_event.rbs +37 -0
  239. data/sig/openai/models/realtime/conversation_item_delete_event.rbs +30 -0
  240. data/sig/openai/models/realtime/conversation_item_deleted_event.rbs +32 -0
  241. data/sig/openai/models/realtime/conversation_item_done.rbs +37 -0
  242. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbs +136 -0
  243. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbs +51 -0
  244. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rbs +77 -0
  245. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_segment.rbs +62 -0
  246. data/sig/openai/models/realtime/conversation_item_retrieve_event.rbs +34 -0
  247. data/sig/openai/models/realtime/conversation_item_truncate_event.rbs +44 -0
  248. data/sig/openai/models/realtime/conversation_item_truncated_event.rbs +42 -0
  249. data/sig/openai/models/realtime/conversation_item_with_reference.rbs +207 -0
  250. data/sig/openai/models/realtime/input_audio_buffer_append_event.rbs +30 -0
  251. data/sig/openai/models/realtime/input_audio_buffer_clear_event.rbs +23 -0
  252. data/sig/openai/models/realtime/input_audio_buffer_cleared_event.rbs +24 -0
  253. data/sig/openai/models/realtime/input_audio_buffer_commit_event.rbs +23 -0
  254. data/sig/openai/models/realtime/input_audio_buffer_committed_event.rbs +37 -0
  255. data/sig/openai/models/realtime/input_audio_buffer_speech_started_event.rbs +37 -0
  256. data/sig/openai/models/realtime/input_audio_buffer_speech_stopped_event.rbs +37 -0
  257. data/sig/openai/models/realtime/input_audio_buffer_timeout_triggered.rbs +42 -0
  258. data/sig/openai/models/realtime/log_prob_properties.rbs +28 -0
  259. data/sig/openai/models/realtime/mcp_list_tools_completed.rbs +28 -0
  260. data/sig/openai/models/realtime/mcp_list_tools_failed.rbs +28 -0
  261. data/sig/openai/models/realtime/mcp_list_tools_in_progress.rbs +32 -0
  262. data/sig/openai/models/realtime/output_audio_buffer_clear_event.rbs +23 -0
  263. data/sig/openai/models/realtime/rate_limits_updated_event.rbs +85 -0
  264. data/sig/openai/models/realtime/realtime_audio_config.rbs +354 -0
  265. data/sig/openai/models/realtime/realtime_client_event.rbs +25 -0
  266. data/sig/openai/models/realtime/realtime_client_secret_config.rbs +60 -0
  267. data/sig/openai/models/realtime/realtime_conversation_item_assistant_message.rbs +117 -0
  268. data/sig/openai/models/realtime/realtime_conversation_item_function_call.rbs +86 -0
  269. data/sig/openai/models/realtime/realtime_conversation_item_function_call_output.rbs +79 -0
  270. data/sig/openai/models/realtime/realtime_conversation_item_system_message.rbs +117 -0
  271. data/sig/openai/models/realtime/realtime_conversation_item_user_message.rbs +132 -0
  272. data/sig/openai/models/realtime/realtime_error.rbs +42 -0
  273. data/sig/openai/models/realtime/realtime_error_event.rbs +32 -0
  274. data/sig/openai/models/realtime/realtime_mcp_approval_request.rbs +42 -0
  275. data/sig/openai/models/realtime/realtime_mcp_approval_response.rbs +42 -0
  276. data/sig/openai/models/realtime/realtime_mcp_list_tools.rbs +71 -0
  277. data/sig/openai/models/realtime/realtime_mcp_protocol_error.rbs +28 -0
  278. data/sig/openai/models/realtime/realtime_mcp_tool_call.rbs +68 -0
  279. data/sig/openai/models/realtime/realtime_mcp_tool_execution_error.rbs +18 -0
  280. data/sig/openai/models/realtime/realtime_mcphttp_error.rbs +24 -0
  281. data/sig/openai/models/realtime/realtime_response.rbs +210 -0
  282. data/sig/openai/models/realtime/realtime_response_status.rbs +90 -0
  283. data/sig/openai/models/realtime/realtime_response_usage.rbs +56 -0
  284. data/sig/openai/models/realtime/realtime_response_usage_input_token_details.rbs +34 -0
  285. data/sig/openai/models/realtime/realtime_response_usage_output_token_details.rbs +22 -0
  286. data/sig/openai/models/realtime/realtime_server_event.rbs +168 -0
  287. data/sig/openai/models/realtime/realtime_session.rbs +521 -0
  288. data/sig/openai/models/realtime/realtime_session_create_request.rbs +178 -0
  289. data/sig/openai/models/realtime/realtime_session_create_response.rbs +526 -0
  290. data/sig/openai/models/realtime/realtime_tool_choice_config.rbs +16 -0
  291. data/sig/openai/models/realtime/realtime_tools_config.rbs +10 -0
  292. data/sig/openai/models/realtime/realtime_tools_config_union.rbs +280 -0
  293. data/sig/openai/models/realtime/realtime_tracing_config.rbs +43 -0
  294. data/sig/openai/models/realtime/realtime_transcription_session_create_request.rbs +242 -0
  295. data/sig/openai/models/realtime/realtime_truncation.rbs +53 -0
  296. data/sig/openai/models/realtime/response_audio_delta_event.rbs +52 -0
  297. data/sig/openai/models/realtime/response_audio_done_event.rbs +47 -0
  298. data/sig/openai/models/realtime/response_audio_transcript_delta_event.rbs +52 -0
  299. data/sig/openai/models/realtime/response_audio_transcript_done_event.rbs +52 -0
  300. data/sig/openai/models/realtime/response_cancel_event.rbs +32 -0
  301. data/sig/openai/models/realtime/response_content_part_added_event.rbs +105 -0
  302. data/sig/openai/models/realtime/response_content_part_done_event.rbs +105 -0
  303. data/sig/openai/models/realtime/response_create_event.rbs +281 -0
  304. data/sig/openai/models/realtime/response_created_event.rbs +32 -0
  305. data/sig/openai/models/realtime/response_done_event.rbs +32 -0
  306. data/sig/openai/models/realtime/response_function_call_arguments_delta_event.rbs +52 -0
  307. data/sig/openai/models/realtime/response_function_call_arguments_done_event.rbs +52 -0
  308. data/sig/openai/models/realtime/response_mcp_call_arguments_delta.rbs +52 -0
  309. data/sig/openai/models/realtime/response_mcp_call_arguments_done.rbs +47 -0
  310. data/sig/openai/models/realtime/response_mcp_call_completed.rbs +37 -0
  311. data/sig/openai/models/realtime/response_mcp_call_failed.rbs +37 -0
  312. data/sig/openai/models/realtime/response_mcp_call_in_progress.rbs +37 -0
  313. data/sig/openai/models/realtime/response_output_item_added_event.rbs +42 -0
  314. data/sig/openai/models/realtime/response_output_item_done_event.rbs +42 -0
  315. data/sig/openai/models/realtime/response_text_delta_event.rbs +52 -0
  316. data/sig/openai/models/realtime/response_text_done_event.rbs +52 -0
  317. data/sig/openai/models/realtime/session_created_event.rbs +32 -0
  318. data/sig/openai/models/realtime/session_update_event.rbs +34 -0
  319. data/sig/openai/models/realtime/session_updated_event.rbs +32 -0
  320. data/sig/openai/models/realtime/transcription_session_created.rbs +282 -0
  321. data/sig/openai/models/realtime/transcription_session_update.rbs +34 -0
  322. data/sig/openai/models/realtime/transcription_session_updated_event.rbs +282 -0
  323. data/sig/openai/models/responses/tool.rbs +1 -121
  324. data/sig/openai/models/responses/web_search_preview_tool.rbs +96 -0
  325. data/sig/openai/models/responses/web_search_tool.rbs +39 -10
  326. data/sig/openai/models/webhooks/realtime_call_incoming_webhook_event.rbs +90 -0
  327. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
  328. data/sig/openai/models.rbs +2 -0
  329. data/sig/openai/resources/realtime/client_secrets.rbs +15 -0
  330. data/sig/openai/resources/realtime.rbs +9 -0
  331. data/sig/openai/resources/webhooks.rbs +1 -0
  332. metadata +287 -2
@@ -0,0 +1,1249 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ RealtimeSessionCreateResponse = Realtime::RealtimeSessionCreateResponse
6
+
7
+ module Realtime
8
+ class RealtimeSessionCreateResponse < OpenAI::Internal::Type::BaseModel
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ OpenAI::Realtime::RealtimeSessionCreateResponse,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Unique identifier for the session that looks like `sess_1234567890abcdef`.
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :id
20
+
21
+ sig { params(id: String).void }
22
+ attr_writer :id
23
+
24
+ # Configuration for input and output audio for the session.
25
+ sig do
26
+ returns(
27
+ T.nilable(OpenAI::Realtime::RealtimeSessionCreateResponse::Audio)
28
+ )
29
+ end
30
+ attr_reader :audio
31
+
32
+ sig do
33
+ params(
34
+ audio:
35
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::OrHash
36
+ ).void
37
+ end
38
+ attr_writer :audio
39
+
40
+ # Expiration timestamp for the session, in seconds since epoch.
41
+ sig { returns(T.nilable(Integer)) }
42
+ attr_reader :expires_at
43
+
44
+ sig { params(expires_at: Integer).void }
45
+ attr_writer :expires_at
46
+
47
+ # Additional fields to include in server outputs.
48
+ #
49
+ # - `item.input_audio_transcription.logprobs`: Include logprobs for input audio
50
+ # transcription.
51
+ sig do
52
+ returns(
53
+ T.nilable(
54
+ T::Array[
55
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Include::TaggedSymbol
56
+ ]
57
+ )
58
+ )
59
+ end
60
+ attr_reader :include
61
+
62
+ sig do
63
+ params(
64
+ include:
65
+ T::Array[
66
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Include::OrSymbol
67
+ ]
68
+ ).void
69
+ end
70
+ attr_writer :include
71
+
72
+ # The default system instructions (i.e. system message) prepended to model calls.
73
+ # This field allows the client to guide the model on desired responses. The model
74
+ # can be instructed on response content and format, (e.g. "be extremely succinct",
75
+ # "act friendly", "here are examples of good responses") and on audio behavior
76
+ # (e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The
77
+ # instructions are not guaranteed to be followed by the model, but they provide
78
+ # guidance to the model on the desired behavior.
79
+ #
80
+ # Note that the server sets default instructions which will be used if this field
81
+ # is not set and are visible in the `session.created` event at the start of the
82
+ # session.
83
+ sig { returns(T.nilable(String)) }
84
+ attr_reader :instructions
85
+
86
+ sig { params(instructions: String).void }
87
+ attr_writer :instructions
88
+
89
+ # Maximum number of output tokens for a single assistant response, inclusive of
90
+ # tool calls. Provide an integer between 1 and 4096 to limit output tokens, or
91
+ # `inf` for the maximum available tokens for a given model. Defaults to `inf`.
92
+ sig do
93
+ returns(
94
+ T.nilable(
95
+ OpenAI::Realtime::RealtimeSessionCreateResponse::MaxOutputTokens::Variants
96
+ )
97
+ )
98
+ end
99
+ attr_reader :max_output_tokens
100
+
101
+ sig { params(max_output_tokens: T.any(Integer, Symbol)).void }
102
+ attr_writer :max_output_tokens
103
+
104
+ # The Realtime model used for this session.
105
+ sig { returns(T.nilable(String)) }
106
+ attr_reader :model
107
+
108
+ sig { params(model: String).void }
109
+ attr_writer :model
110
+
111
+ # The object type. Always `realtime.session`.
112
+ sig { returns(T.nilable(String)) }
113
+ attr_reader :object
114
+
115
+ sig { params(object: String).void }
116
+ attr_writer :object
117
+
118
+ # The set of modalities the model can respond with. To disable audio, set this to
119
+ # ["text"].
120
+ sig do
121
+ returns(
122
+ T.nilable(
123
+ T::Array[
124
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality::TaggedSymbol
125
+ ]
126
+ )
127
+ )
128
+ end
129
+ attr_reader :output_modalities
130
+
131
+ sig do
132
+ params(
133
+ output_modalities:
134
+ T::Array[
135
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality::OrSymbol
136
+ ]
137
+ ).void
138
+ end
139
+ attr_writer :output_modalities
140
+
141
+ # How the model chooses tools. Options are `auto`, `none`, `required`, or specify
142
+ # a function.
143
+ sig { returns(T.nilable(String)) }
144
+ attr_reader :tool_choice
145
+
146
+ sig { params(tool_choice: String).void }
147
+ attr_writer :tool_choice
148
+
149
+ # Tools (functions) available to the model.
150
+ sig do
151
+ returns(
152
+ T.nilable(
153
+ T::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool]
154
+ )
155
+ )
156
+ end
157
+ attr_reader :tools
158
+
159
+ sig do
160
+ params(
161
+ tools:
162
+ T::Array[
163
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::OrHash
164
+ ]
165
+ ).void
166
+ end
167
+ attr_writer :tools
168
+
169
+ # Configuration options for tracing. Set to null to disable tracing. Once tracing
170
+ # is enabled for a session, the configuration cannot be modified.
171
+ #
172
+ # `auto` will create a trace for the session with default values for the workflow
173
+ # name, group id, and metadata.
174
+ sig do
175
+ returns(
176
+ T.nilable(
177
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tracing::Variants
178
+ )
179
+ )
180
+ end
181
+ attr_reader :tracing
182
+
183
+ sig do
184
+ params(
185
+ tracing:
186
+ T.any(
187
+ Symbol,
188
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tracing::TracingConfiguration::OrHash
189
+ )
190
+ ).void
191
+ end
192
+ attr_writer :tracing
193
+
194
+ # Configuration for turn detection. Can be set to `null` to turn off. Server VAD
195
+ # means that the model will detect the start and end of speech based on audio
196
+ # volume and respond at the end of user speech.
197
+ sig do
198
+ returns(
199
+ T.nilable(
200
+ OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection
201
+ )
202
+ )
203
+ end
204
+ attr_reader :turn_detection
205
+
206
+ sig do
207
+ params(
208
+ turn_detection:
209
+ OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection::OrHash
210
+ ).void
211
+ end
212
+ attr_writer :turn_detection
213
+
214
+ # A Realtime session configuration object.
215
+ sig do
216
+ params(
217
+ id: String,
218
+ audio:
219
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::OrHash,
220
+ expires_at: Integer,
221
+ include:
222
+ T::Array[
223
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Include::OrSymbol
224
+ ],
225
+ instructions: String,
226
+ max_output_tokens: T.any(Integer, Symbol),
227
+ model: String,
228
+ object: String,
229
+ output_modalities:
230
+ T::Array[
231
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality::OrSymbol
232
+ ],
233
+ tool_choice: String,
234
+ tools:
235
+ T::Array[
236
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::OrHash
237
+ ],
238
+ tracing:
239
+ T.any(
240
+ Symbol,
241
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tracing::TracingConfiguration::OrHash
242
+ ),
243
+ turn_detection:
244
+ OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection::OrHash
245
+ ).returns(T.attached_class)
246
+ end
247
+ def self.new(
248
+ # Unique identifier for the session that looks like `sess_1234567890abcdef`.
249
+ id: nil,
250
+ # Configuration for input and output audio for the session.
251
+ audio: nil,
252
+ # Expiration timestamp for the session, in seconds since epoch.
253
+ expires_at: nil,
254
+ # Additional fields to include in server outputs.
255
+ #
256
+ # - `item.input_audio_transcription.logprobs`: Include logprobs for input audio
257
+ # transcription.
258
+ include: nil,
259
+ # The default system instructions (i.e. system message) prepended to model calls.
260
+ # This field allows the client to guide the model on desired responses. The model
261
+ # can be instructed on response content and format, (e.g. "be extremely succinct",
262
+ # "act friendly", "here are examples of good responses") and on audio behavior
263
+ # (e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The
264
+ # instructions are not guaranteed to be followed by the model, but they provide
265
+ # guidance to the model on the desired behavior.
266
+ #
267
+ # Note that the server sets default instructions which will be used if this field
268
+ # is not set and are visible in the `session.created` event at the start of the
269
+ # session.
270
+ instructions: nil,
271
+ # Maximum number of output tokens for a single assistant response, inclusive of
272
+ # tool calls. Provide an integer between 1 and 4096 to limit output tokens, or
273
+ # `inf` for the maximum available tokens for a given model. Defaults to `inf`.
274
+ max_output_tokens: nil,
275
+ # The Realtime model used for this session.
276
+ model: nil,
277
+ # The object type. Always `realtime.session`.
278
+ object: nil,
279
+ # The set of modalities the model can respond with. To disable audio, set this to
280
+ # ["text"].
281
+ output_modalities: nil,
282
+ # How the model chooses tools. Options are `auto`, `none`, `required`, or specify
283
+ # a function.
284
+ tool_choice: nil,
285
+ # Tools (functions) available to the model.
286
+ tools: nil,
287
+ # Configuration options for tracing. Set to null to disable tracing. Once tracing
288
+ # is enabled for a session, the configuration cannot be modified.
289
+ #
290
+ # `auto` will create a trace for the session with default values for the workflow
291
+ # name, group id, and metadata.
292
+ tracing: nil,
293
+ # Configuration for turn detection. Can be set to `null` to turn off. Server VAD
294
+ # means that the model will detect the start and end of speech based on audio
295
+ # volume and respond at the end of user speech.
296
+ turn_detection: nil
297
+ )
298
+ end
299
+
300
+ sig do
301
+ override.returns(
302
+ {
303
+ id: String,
304
+ audio: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio,
305
+ expires_at: Integer,
306
+ include:
307
+ T::Array[
308
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Include::TaggedSymbol
309
+ ],
310
+ instructions: String,
311
+ max_output_tokens:
312
+ OpenAI::Realtime::RealtimeSessionCreateResponse::MaxOutputTokens::Variants,
313
+ model: String,
314
+ object: String,
315
+ output_modalities:
316
+ T::Array[
317
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality::TaggedSymbol
318
+ ],
319
+ tool_choice: String,
320
+ tools:
321
+ T::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool],
322
+ tracing:
323
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tracing::Variants,
324
+ turn_detection:
325
+ OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection
326
+ }
327
+ )
328
+ end
329
+ def to_hash
330
+ end
331
+
332
+ class Audio < OpenAI::Internal::Type::BaseModel
333
+ OrHash =
334
+ T.type_alias do
335
+ T.any(
336
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio,
337
+ OpenAI::Internal::AnyHash
338
+ )
339
+ end
340
+
341
+ sig do
342
+ returns(
343
+ T.nilable(
344
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input
345
+ )
346
+ )
347
+ end
348
+ attr_reader :input
349
+
350
+ sig do
351
+ params(
352
+ input:
353
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::OrHash
354
+ ).void
355
+ end
356
+ attr_writer :input
357
+
358
+ sig do
359
+ returns(
360
+ T.nilable(
361
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output
362
+ )
363
+ )
364
+ end
365
+ attr_reader :output
366
+
367
+ sig do
368
+ params(
369
+ output:
370
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::OrHash
371
+ ).void
372
+ end
373
+ attr_writer :output
374
+
375
+ # Configuration for input and output audio for the session.
376
+ sig do
377
+ params(
378
+ input:
379
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::OrHash,
380
+ output:
381
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::OrHash
382
+ ).returns(T.attached_class)
383
+ end
384
+ def self.new(input: nil, output: nil)
385
+ end
386
+
387
+ sig do
388
+ override.returns(
389
+ {
390
+ input:
391
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input,
392
+ output:
393
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output
394
+ }
395
+ )
396
+ end
397
+ def to_hash
398
+ end
399
+
400
+ class Input < OpenAI::Internal::Type::BaseModel
401
+ OrHash =
402
+ T.type_alias do
403
+ T.any(
404
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input,
405
+ OpenAI::Internal::AnyHash
406
+ )
407
+ end
408
+
409
+ # The format of input audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
410
+ sig { returns(T.nilable(String)) }
411
+ attr_reader :format_
412
+
413
+ sig { params(format_: String).void }
414
+ attr_writer :format_
415
+
416
+ # Configuration for input audio noise reduction.
417
+ sig do
418
+ returns(
419
+ T.nilable(
420
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction
421
+ )
422
+ )
423
+ end
424
+ attr_reader :noise_reduction
425
+
426
+ sig do
427
+ params(
428
+ noise_reduction:
429
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::OrHash
430
+ ).void
431
+ end
432
+ attr_writer :noise_reduction
433
+
434
+ # Configuration for input audio transcription.
435
+ sig do
436
+ returns(
437
+ T.nilable(
438
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription
439
+ )
440
+ )
441
+ end
442
+ attr_reader :transcription
443
+
444
+ sig do
445
+ params(
446
+ transcription:
447
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription::OrHash
448
+ ).void
449
+ end
450
+ attr_writer :transcription
451
+
452
+ # Configuration for turn detection.
453
+ sig do
454
+ returns(
455
+ T.nilable(
456
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection
457
+ )
458
+ )
459
+ end
460
+ attr_reader :turn_detection
461
+
462
+ sig do
463
+ params(
464
+ turn_detection:
465
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::OrHash
466
+ ).void
467
+ end
468
+ attr_writer :turn_detection
469
+
470
+ sig do
471
+ params(
472
+ format_: String,
473
+ noise_reduction:
474
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::OrHash,
475
+ transcription:
476
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription::OrHash,
477
+ turn_detection:
478
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::OrHash
479
+ ).returns(T.attached_class)
480
+ end
481
+ def self.new(
482
+ # The format of input audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
483
+ format_: nil,
484
+ # Configuration for input audio noise reduction.
485
+ noise_reduction: nil,
486
+ # Configuration for input audio transcription.
487
+ transcription: nil,
488
+ # Configuration for turn detection.
489
+ turn_detection: nil
490
+ )
491
+ end
492
+
493
+ sig do
494
+ override.returns(
495
+ {
496
+ format_: String,
497
+ noise_reduction:
498
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction,
499
+ transcription:
500
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription,
501
+ turn_detection:
502
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection
503
+ }
504
+ )
505
+ end
506
+ def to_hash
507
+ end
508
+
509
+ class NoiseReduction < OpenAI::Internal::Type::BaseModel
510
+ OrHash =
511
+ T.type_alias do
512
+ T.any(
513
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction,
514
+ OpenAI::Internal::AnyHash
515
+ )
516
+ end
517
+
518
+ sig do
519
+ returns(
520
+ T.nilable(
521
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type::TaggedSymbol
522
+ )
523
+ )
524
+ end
525
+ attr_reader :type
526
+
527
+ sig do
528
+ params(
529
+ type:
530
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type::OrSymbol
531
+ ).void
532
+ end
533
+ attr_writer :type
534
+
535
+ # Configuration for input audio noise reduction.
536
+ sig do
537
+ params(
538
+ type:
539
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type::OrSymbol
540
+ ).returns(T.attached_class)
541
+ end
542
+ def self.new(type: nil)
543
+ end
544
+
545
+ sig do
546
+ override.returns(
547
+ {
548
+ type:
549
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type::TaggedSymbol
550
+ }
551
+ )
552
+ end
553
+ def to_hash
554
+ end
555
+
556
+ module Type
557
+ extend OpenAI::Internal::Type::Enum
558
+
559
+ TaggedSymbol =
560
+ T.type_alias do
561
+ T.all(
562
+ Symbol,
563
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type
564
+ )
565
+ end
566
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
567
+
568
+ NEAR_FIELD =
569
+ T.let(
570
+ :near_field,
571
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type::TaggedSymbol
572
+ )
573
+ FAR_FIELD =
574
+ T.let(
575
+ :far_field,
576
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type::TaggedSymbol
577
+ )
578
+
579
+ sig do
580
+ override.returns(
581
+ T::Array[
582
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::Type::TaggedSymbol
583
+ ]
584
+ )
585
+ end
586
+ def self.values
587
+ end
588
+ end
589
+ end
590
+
591
+ class Transcription < OpenAI::Internal::Type::BaseModel
592
+ OrHash =
593
+ T.type_alias do
594
+ T.any(
595
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription,
596
+ OpenAI::Internal::AnyHash
597
+ )
598
+ end
599
+
600
+ # The language of the input audio.
601
+ sig { returns(T.nilable(String)) }
602
+ attr_reader :language
603
+
604
+ sig { params(language: String).void }
605
+ attr_writer :language
606
+
607
+ # The model to use for transcription.
608
+ sig { returns(T.nilable(String)) }
609
+ attr_reader :model
610
+
611
+ sig { params(model: String).void }
612
+ attr_writer :model
613
+
614
+ # Optional text to guide the model's style or continue a previous audio segment.
615
+ sig { returns(T.nilable(String)) }
616
+ attr_reader :prompt
617
+
618
+ sig { params(prompt: String).void }
619
+ attr_writer :prompt
620
+
621
+ # Configuration for input audio transcription.
622
+ sig do
623
+ params(language: String, model: String, prompt: String).returns(
624
+ T.attached_class
625
+ )
626
+ end
627
+ def self.new(
628
+ # The language of the input audio.
629
+ language: nil,
630
+ # The model to use for transcription.
631
+ model: nil,
632
+ # Optional text to guide the model's style or continue a previous audio segment.
633
+ prompt: nil
634
+ )
635
+ end
636
+
637
+ sig do
638
+ override.returns(
639
+ { language: String, model: String, prompt: String }
640
+ )
641
+ end
642
+ def to_hash
643
+ end
644
+ end
645
+
646
+ class TurnDetection < OpenAI::Internal::Type::BaseModel
647
+ OrHash =
648
+ T.type_alias do
649
+ T.any(
650
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection,
651
+ OpenAI::Internal::AnyHash
652
+ )
653
+ end
654
+
655
+ sig { returns(T.nilable(Integer)) }
656
+ attr_reader :prefix_padding_ms
657
+
658
+ sig { params(prefix_padding_ms: Integer).void }
659
+ attr_writer :prefix_padding_ms
660
+
661
+ sig { returns(T.nilable(Integer)) }
662
+ attr_reader :silence_duration_ms
663
+
664
+ sig { params(silence_duration_ms: Integer).void }
665
+ attr_writer :silence_duration_ms
666
+
667
+ sig { returns(T.nilable(Float)) }
668
+ attr_reader :threshold
669
+
670
+ sig { params(threshold: Float).void }
671
+ attr_writer :threshold
672
+
673
+ # Type of turn detection, only `server_vad` is currently supported.
674
+ sig { returns(T.nilable(String)) }
675
+ attr_reader :type
676
+
677
+ sig { params(type: String).void }
678
+ attr_writer :type
679
+
680
+ # Configuration for turn detection.
681
+ sig do
682
+ params(
683
+ prefix_padding_ms: Integer,
684
+ silence_duration_ms: Integer,
685
+ threshold: Float,
686
+ type: String
687
+ ).returns(T.attached_class)
688
+ end
689
+ def self.new(
690
+ prefix_padding_ms: nil,
691
+ silence_duration_ms: nil,
692
+ threshold: nil,
693
+ # Type of turn detection, only `server_vad` is currently supported.
694
+ type: nil
695
+ )
696
+ end
697
+
698
+ sig do
699
+ override.returns(
700
+ {
701
+ prefix_padding_ms: Integer,
702
+ silence_duration_ms: Integer,
703
+ threshold: Float,
704
+ type: String
705
+ }
706
+ )
707
+ end
708
+ def to_hash
709
+ end
710
+ end
711
+ end
712
+
713
+ class Output < OpenAI::Internal::Type::BaseModel
714
+ OrHash =
715
+ T.type_alias do
716
+ T.any(
717
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output,
718
+ OpenAI::Internal::AnyHash
719
+ )
720
+ end
721
+
722
+ # The format of output audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
723
+ sig { returns(T.nilable(String)) }
724
+ attr_reader :format_
725
+
726
+ sig { params(format_: String).void }
727
+ attr_writer :format_
728
+
729
+ sig { returns(T.nilable(Float)) }
730
+ attr_reader :speed
731
+
732
+ sig { params(speed: Float).void }
733
+ attr_writer :speed
734
+
735
+ sig do
736
+ returns(
737
+ T.nilable(
738
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::Variants
739
+ )
740
+ )
741
+ end
742
+ attr_reader :voice
743
+
744
+ sig do
745
+ params(
746
+ voice:
747
+ T.any(
748
+ String,
749
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::OrSymbol
750
+ )
751
+ ).void
752
+ end
753
+ attr_writer :voice
754
+
755
+ sig do
756
+ params(
757
+ format_: String,
758
+ speed: Float,
759
+ voice:
760
+ T.any(
761
+ String,
762
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::OrSymbol
763
+ )
764
+ ).returns(T.attached_class)
765
+ end
766
+ def self.new(
767
+ # The format of output audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
768
+ format_: nil,
769
+ speed: nil,
770
+ voice: nil
771
+ )
772
+ end
773
+
774
+ sig do
775
+ override.returns(
776
+ {
777
+ format_: String,
778
+ speed: Float,
779
+ voice:
780
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::Variants
781
+ }
782
+ )
783
+ end
784
+ def to_hash
785
+ end
786
+
787
+ module Voice
788
+ extend OpenAI::Internal::Type::Union
789
+
790
+ Variants =
791
+ T.type_alias do
792
+ T.any(
793
+ String,
794
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
795
+ )
796
+ end
797
+
798
+ sig do
799
+ override.returns(
800
+ T::Array[
801
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::Variants
802
+ ]
803
+ )
804
+ end
805
+ def self.variants
806
+ end
807
+
808
+ TaggedSymbol =
809
+ T.type_alias do
810
+ T.all(
811
+ Symbol,
812
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice
813
+ )
814
+ end
815
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
816
+
817
+ ALLOY =
818
+ T.let(
819
+ :alloy,
820
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
821
+ )
822
+ ASH =
823
+ T.let(
824
+ :ash,
825
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
826
+ )
827
+ BALLAD =
828
+ T.let(
829
+ :ballad,
830
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
831
+ )
832
+ CORAL =
833
+ T.let(
834
+ :coral,
835
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
836
+ )
837
+ ECHO =
838
+ T.let(
839
+ :echo,
840
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
841
+ )
842
+ SAGE =
843
+ T.let(
844
+ :sage,
845
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
846
+ )
847
+ SHIMMER =
848
+ T.let(
849
+ :shimmer,
850
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
851
+ )
852
+ VERSE =
853
+ T.let(
854
+ :verse,
855
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
856
+ )
857
+ MARIN =
858
+ T.let(
859
+ :marin,
860
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
861
+ )
862
+ CEDAR =
863
+ T.let(
864
+ :cedar,
865
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Output::Voice::TaggedSymbol
866
+ )
867
+ end
868
+ end
869
+ end
870
+
871
+ module Include
872
+ extend OpenAI::Internal::Type::Enum
873
+
874
+ TaggedSymbol =
875
+ T.type_alias do
876
+ T.all(
877
+ Symbol,
878
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Include
879
+ )
880
+ end
881
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
882
+
883
+ ITEM_INPUT_AUDIO_TRANSCRIPTION_LOGPROBS =
884
+ T.let(
885
+ :"item.input_audio_transcription.logprobs",
886
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Include::TaggedSymbol
887
+ )
888
+
889
+ sig do
890
+ override.returns(
891
+ T::Array[
892
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Include::TaggedSymbol
893
+ ]
894
+ )
895
+ end
896
+ def self.values
897
+ end
898
+ end
899
+
900
+ # Maximum number of output tokens for a single assistant response, inclusive of
901
+ # tool calls. Provide an integer between 1 and 4096 to limit output tokens, or
902
+ # `inf` for the maximum available tokens for a given model. Defaults to `inf`.
903
+ module MaxOutputTokens
904
+ extend OpenAI::Internal::Type::Union
905
+
906
+ Variants = T.type_alias { T.any(Integer, Symbol) }
907
+
908
+ sig do
909
+ override.returns(
910
+ T::Array[
911
+ OpenAI::Realtime::RealtimeSessionCreateResponse::MaxOutputTokens::Variants
912
+ ]
913
+ )
914
+ end
915
+ def self.variants
916
+ end
917
+ end
918
+
919
+ module OutputModality
920
+ extend OpenAI::Internal::Type::Enum
921
+
922
+ TaggedSymbol =
923
+ T.type_alias do
924
+ T.all(
925
+ Symbol,
926
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality
927
+ )
928
+ end
929
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
930
+
931
+ TEXT =
932
+ T.let(
933
+ :text,
934
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality::TaggedSymbol
935
+ )
936
+ AUDIO =
937
+ T.let(
938
+ :audio,
939
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality::TaggedSymbol
940
+ )
941
+
942
+ sig do
943
+ override.returns(
944
+ T::Array[
945
+ OpenAI::Realtime::RealtimeSessionCreateResponse::OutputModality::TaggedSymbol
946
+ ]
947
+ )
948
+ end
949
+ def self.values
950
+ end
951
+ end
952
+
953
+ class Tool < OpenAI::Internal::Type::BaseModel
954
+ OrHash =
955
+ T.type_alias do
956
+ T.any(
957
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool,
958
+ OpenAI::Internal::AnyHash
959
+ )
960
+ end
961
+
962
+ # The description of the function, including guidance on when and how to call it,
963
+ # and guidance about what to tell the user when calling (if anything).
964
+ sig { returns(T.nilable(String)) }
965
+ attr_reader :description
966
+
967
+ sig { params(description: String).void }
968
+ attr_writer :description
969
+
970
+ # The name of the function.
971
+ sig { returns(T.nilable(String)) }
972
+ attr_reader :name
973
+
974
+ sig { params(name: String).void }
975
+ attr_writer :name
976
+
977
+ # Parameters of the function in JSON Schema.
978
+ sig { returns(T.nilable(T.anything)) }
979
+ attr_reader :parameters
980
+
981
+ sig { params(parameters: T.anything).void }
982
+ attr_writer :parameters
983
+
984
+ # The type of the tool, i.e. `function`.
985
+ sig do
986
+ returns(
987
+ T.nilable(
988
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::Type::TaggedSymbol
989
+ )
990
+ )
991
+ end
992
+ attr_reader :type
993
+
994
+ sig do
995
+ params(
996
+ type:
997
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::Type::OrSymbol
998
+ ).void
999
+ end
1000
+ attr_writer :type
1001
+
1002
+ sig do
1003
+ params(
1004
+ description: String,
1005
+ name: String,
1006
+ parameters: T.anything,
1007
+ type:
1008
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::Type::OrSymbol
1009
+ ).returns(T.attached_class)
1010
+ end
1011
+ def self.new(
1012
+ # The description of the function, including guidance on when and how to call it,
1013
+ # and guidance about what to tell the user when calling (if anything).
1014
+ description: nil,
1015
+ # The name of the function.
1016
+ name: nil,
1017
+ # Parameters of the function in JSON Schema.
1018
+ parameters: nil,
1019
+ # The type of the tool, i.e. `function`.
1020
+ type: nil
1021
+ )
1022
+ end
1023
+
1024
+ sig do
1025
+ override.returns(
1026
+ {
1027
+ description: String,
1028
+ name: String,
1029
+ parameters: T.anything,
1030
+ type:
1031
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::Type::TaggedSymbol
1032
+ }
1033
+ )
1034
+ end
1035
+ def to_hash
1036
+ end
1037
+
1038
+ # The type of the tool, i.e. `function`.
1039
+ module Type
1040
+ extend OpenAI::Internal::Type::Enum
1041
+
1042
+ TaggedSymbol =
1043
+ T.type_alias do
1044
+ T.all(
1045
+ Symbol,
1046
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::Type
1047
+ )
1048
+ end
1049
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1050
+
1051
+ FUNCTION =
1052
+ T.let(
1053
+ :function,
1054
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::Type::TaggedSymbol
1055
+ )
1056
+
1057
+ sig do
1058
+ override.returns(
1059
+ T::Array[
1060
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::Type::TaggedSymbol
1061
+ ]
1062
+ )
1063
+ end
1064
+ def self.values
1065
+ end
1066
+ end
1067
+ end
1068
+
1069
+ # Configuration options for tracing. Set to null to disable tracing. Once tracing
1070
+ # is enabled for a session, the configuration cannot be modified.
1071
+ #
1072
+ # `auto` will create a trace for the session with default values for the workflow
1073
+ # name, group id, and metadata.
1074
+ module Tracing
1075
+ extend OpenAI::Internal::Type::Union
1076
+
1077
+ Variants =
1078
+ T.type_alias do
1079
+ T.any(
1080
+ Symbol,
1081
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tracing::TracingConfiguration
1082
+ )
1083
+ end
1084
+
1085
+ class TracingConfiguration < OpenAI::Internal::Type::BaseModel
1086
+ OrHash =
1087
+ T.type_alias do
1088
+ T.any(
1089
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tracing::TracingConfiguration,
1090
+ OpenAI::Internal::AnyHash
1091
+ )
1092
+ end
1093
+
1094
+ # The group id to attach to this trace to enable filtering and grouping in the
1095
+ # traces dashboard.
1096
+ sig { returns(T.nilable(String)) }
1097
+ attr_reader :group_id
1098
+
1099
+ sig { params(group_id: String).void }
1100
+ attr_writer :group_id
1101
+
1102
+ # The arbitrary metadata to attach to this trace to enable filtering in the traces
1103
+ # dashboard.
1104
+ sig { returns(T.nilable(T.anything)) }
1105
+ attr_reader :metadata
1106
+
1107
+ sig { params(metadata: T.anything).void }
1108
+ attr_writer :metadata
1109
+
1110
+ # The name of the workflow to attach to this trace. This is used to name the trace
1111
+ # in the traces dashboard.
1112
+ sig { returns(T.nilable(String)) }
1113
+ attr_reader :workflow_name
1114
+
1115
+ sig { params(workflow_name: String).void }
1116
+ attr_writer :workflow_name
1117
+
1118
+ # Granular configuration for tracing.
1119
+ sig do
1120
+ params(
1121
+ group_id: String,
1122
+ metadata: T.anything,
1123
+ workflow_name: String
1124
+ ).returns(T.attached_class)
1125
+ end
1126
+ def self.new(
1127
+ # The group id to attach to this trace to enable filtering and grouping in the
1128
+ # traces dashboard.
1129
+ group_id: nil,
1130
+ # The arbitrary metadata to attach to this trace to enable filtering in the traces
1131
+ # dashboard.
1132
+ metadata: nil,
1133
+ # The name of the workflow to attach to this trace. This is used to name the trace
1134
+ # in the traces dashboard.
1135
+ workflow_name: nil
1136
+ )
1137
+ end
1138
+
1139
+ sig do
1140
+ override.returns(
1141
+ {
1142
+ group_id: String,
1143
+ metadata: T.anything,
1144
+ workflow_name: String
1145
+ }
1146
+ )
1147
+ end
1148
+ def to_hash
1149
+ end
1150
+ end
1151
+
1152
+ sig do
1153
+ override.returns(
1154
+ T::Array[
1155
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tracing::Variants
1156
+ ]
1157
+ )
1158
+ end
1159
+ def self.variants
1160
+ end
1161
+ end
1162
+
1163
+ class TurnDetection < OpenAI::Internal::Type::BaseModel
1164
+ OrHash =
1165
+ T.type_alias do
1166
+ T.any(
1167
+ OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection,
1168
+ OpenAI::Internal::AnyHash
1169
+ )
1170
+ end
1171
+
1172
+ # Amount of audio to include before the VAD detected speech (in milliseconds).
1173
+ # Defaults to 300ms.
1174
+ sig { returns(T.nilable(Integer)) }
1175
+ attr_reader :prefix_padding_ms
1176
+
1177
+ sig { params(prefix_padding_ms: Integer).void }
1178
+ attr_writer :prefix_padding_ms
1179
+
1180
+ # Duration of silence to detect speech stop (in milliseconds). Defaults to 500ms.
1181
+ # With shorter values the model will respond more quickly, but may jump in on
1182
+ # short pauses from the user.
1183
+ sig { returns(T.nilable(Integer)) }
1184
+ attr_reader :silence_duration_ms
1185
+
1186
+ sig { params(silence_duration_ms: Integer).void }
1187
+ attr_writer :silence_duration_ms
1188
+
1189
+ # Activation threshold for VAD (0.0 to 1.0), this defaults to 0.5. A higher
1190
+ # threshold will require louder audio to activate the model, and thus might
1191
+ # perform better in noisy environments.
1192
+ sig { returns(T.nilable(Float)) }
1193
+ attr_reader :threshold
1194
+
1195
+ sig { params(threshold: Float).void }
1196
+ attr_writer :threshold
1197
+
1198
+ # Type of turn detection, only `server_vad` is currently supported.
1199
+ sig { returns(T.nilable(String)) }
1200
+ attr_reader :type
1201
+
1202
+ sig { params(type: String).void }
1203
+ attr_writer :type
1204
+
1205
+ # Configuration for turn detection. Can be set to `null` to turn off. Server VAD
1206
+ # means that the model will detect the start and end of speech based on audio
1207
+ # volume and respond at the end of user speech.
1208
+ sig do
1209
+ params(
1210
+ prefix_padding_ms: Integer,
1211
+ silence_duration_ms: Integer,
1212
+ threshold: Float,
1213
+ type: String
1214
+ ).returns(T.attached_class)
1215
+ end
1216
+ def self.new(
1217
+ # Amount of audio to include before the VAD detected speech (in milliseconds).
1218
+ # Defaults to 300ms.
1219
+ prefix_padding_ms: nil,
1220
+ # Duration of silence to detect speech stop (in milliseconds). Defaults to 500ms.
1221
+ # With shorter values the model will respond more quickly, but may jump in on
1222
+ # short pauses from the user.
1223
+ silence_duration_ms: nil,
1224
+ # Activation threshold for VAD (0.0 to 1.0), this defaults to 0.5. A higher
1225
+ # threshold will require louder audio to activate the model, and thus might
1226
+ # perform better in noisy environments.
1227
+ threshold: nil,
1228
+ # Type of turn detection, only `server_vad` is currently supported.
1229
+ type: nil
1230
+ )
1231
+ end
1232
+
1233
+ sig do
1234
+ override.returns(
1235
+ {
1236
+ prefix_padding_ms: Integer,
1237
+ silence_duration_ms: Integer,
1238
+ threshold: Float,
1239
+ type: String
1240
+ }
1241
+ )
1242
+ end
1243
+ def to_hash
1244
+ end
1245
+ end
1246
+ end
1247
+ end
1248
+ end
1249
+ end