aimlapi-sdk-python 2.8.1b0__py3-none-any.whl

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 (1958) hide show
  1. aimlapi/__init__.py +243 -0
  2. aimlapi/__main__.py +3 -0
  3. aimlapi/_client.py +368 -0
  4. aimlapi/_utils/__init__.py +3 -0
  5. aimlapi/_utils/_compat.py +3 -0
  6. aimlapi/_utils/_datetime_parse.py +3 -0
  7. aimlapi/_utils/_logs.py +3 -0
  8. aimlapi/_utils/_proxy.py +3 -0
  9. aimlapi/_utils/_reflection.py +3 -0
  10. aimlapi/_utils/_resources_proxy.py +3 -0
  11. aimlapi/_utils/_streams.py +3 -0
  12. aimlapi/_utils/_sync.py +3 -0
  13. aimlapi/_utils/_transform.py +3 -0
  14. aimlapi/_utils/_typing.py +3 -0
  15. aimlapi/_utils/_utils.py +3 -0
  16. aimlapi/_version.py +9 -0
  17. aimlapi/cli/__init__.py +3 -0
  18. aimlapi/cli/_api/__init__.py +3 -0
  19. aimlapi/cli/_api/_main.py +3 -0
  20. aimlapi/cli/_api/audio.py +3 -0
  21. aimlapi/cli/_api/chat/__init__.py +3 -0
  22. aimlapi/cli/_api/chat/completions.py +3 -0
  23. aimlapi/cli/_api/completions.py +3 -0
  24. aimlapi/cli/_api/files.py +3 -0
  25. aimlapi/cli/_api/fine_tuning/__init__.py +3 -0
  26. aimlapi/cli/_api/fine_tuning/jobs.py +3 -0
  27. aimlapi/cli/_api/image.py +3 -0
  28. aimlapi/cli/_api/models.py +3 -0
  29. aimlapi/cli/_cli.py +3 -0
  30. aimlapi/cli/_errors.py +3 -0
  31. aimlapi/cli/_models.py +3 -0
  32. aimlapi/cli/_progress.py +3 -0
  33. aimlapi/cli/_tools/__init__.py +3 -0
  34. aimlapi/cli/_tools/_main.py +3 -0
  35. aimlapi/cli/_tools/fine_tunes.py +3 -0
  36. aimlapi/cli/_tools/migrate.py +3 -0
  37. aimlapi/cli/_utils.py +3 -0
  38. aimlapi/helpers/__init__.py +3 -0
  39. aimlapi/helpers/local_audio_player.py +3 -0
  40. aimlapi/helpers/microphone.py +3 -0
  41. aimlapi/lib/__init__.py +3 -0
  42. aimlapi/lib/_old_api.py +3 -0
  43. aimlapi/lib/_parsing/__init__.py +3 -0
  44. aimlapi/lib/_parsing/_completions.py +3 -0
  45. aimlapi/lib/_parsing/_responses.py +3 -0
  46. aimlapi/lib/_pydantic.py +3 -0
  47. aimlapi/lib/_realtime.py +3 -0
  48. aimlapi/lib/_tools.py +3 -0
  49. aimlapi/lib/_validators.py +3 -0
  50. aimlapi/lib/azure.py +3 -0
  51. aimlapi/lib/streaming/__init__.py +3 -0
  52. aimlapi/lib/streaming/_assistants.py +3 -0
  53. aimlapi/lib/streaming/_deltas.py +3 -0
  54. aimlapi/lib/streaming/chat/__init__.py +3 -0
  55. aimlapi/lib/streaming/chat/_completions.py +3 -0
  56. aimlapi/lib/streaming/chat/_events.py +3 -0
  57. aimlapi/lib/streaming/chat/_types.py +3 -0
  58. aimlapi/lib/streaming/responses/__init__.py +3 -0
  59. aimlapi/lib/streaming/responses/_events.py +3 -0
  60. aimlapi/lib/streaming/responses/_responses.py +3 -0
  61. aimlapi/lib/streaming/responses/_types.py +3 -0
  62. aimlapi/pagination.py +3 -0
  63. aimlapi/resources/__init__.py +3 -0
  64. aimlapi/resources/audio/__init__.py +47 -0
  65. aimlapi/resources/audio/_polling.py +129 -0
  66. aimlapi/resources/audio/audio.py +56 -0
  67. aimlapi/resources/audio/speech.py +428 -0
  68. aimlapi/resources/audio/transcriptions.py +219 -0
  69. aimlapi/resources/audio/translations.py +3 -0
  70. aimlapi/resources/batches.py +3 -0
  71. aimlapi/resources/beta/__init__.py +3 -0
  72. aimlapi/resources/beta/assistants.py +3 -0
  73. aimlapi/resources/beta/beta.py +3 -0
  74. aimlapi/resources/beta/chatkit/__init__.py +3 -0
  75. aimlapi/resources/beta/chatkit/chatkit.py +3 -0
  76. aimlapi/resources/beta/chatkit/sessions.py +3 -0
  77. aimlapi/resources/beta/chatkit/threads.py +3 -0
  78. aimlapi/resources/beta/realtime/__init__.py +3 -0
  79. aimlapi/resources/beta/realtime/realtime.py +3 -0
  80. aimlapi/resources/beta/realtime/sessions.py +3 -0
  81. aimlapi/resources/beta/realtime/transcription_sessions.py +3 -0
  82. aimlapi/resources/beta/threads/__init__.py +3 -0
  83. aimlapi/resources/beta/threads/messages.py +3 -0
  84. aimlapi/resources/beta/threads/runs/__init__.py +3 -0
  85. aimlapi/resources/beta/threads/runs/runs.py +3 -0
  86. aimlapi/resources/beta/threads/runs/steps.py +3 -0
  87. aimlapi/resources/beta/threads/threads.py +3 -0
  88. aimlapi/resources/chat/__init__.py +3 -0
  89. aimlapi/resources/chat/chat.py +86 -0
  90. aimlapi/resources/chat/completions/__init__.py +4 -0
  91. aimlapi/resources/chat/completions/completions.py +452 -0
  92. aimlapi/resources/chat/completions/messages.py +3 -0
  93. aimlapi/resources/completions.py +3 -0
  94. aimlapi/resources/containers/__init__.py +3 -0
  95. aimlapi/resources/containers/containers.py +3 -0
  96. aimlapi/resources/containers/files/__init__.py +3 -0
  97. aimlapi/resources/containers/files/content.py +3 -0
  98. aimlapi/resources/containers/files/files.py +3 -0
  99. aimlapi/resources/conversations/__init__.py +3 -0
  100. aimlapi/resources/conversations/conversations.py +3 -0
  101. aimlapi/resources/conversations/items.py +3 -0
  102. aimlapi/resources/embeddings.py +3 -0
  103. aimlapi/resources/evals/__init__.py +3 -0
  104. aimlapi/resources/evals/evals.py +3 -0
  105. aimlapi/resources/evals/runs/__init__.py +3 -0
  106. aimlapi/resources/evals/runs/output_items.py +3 -0
  107. aimlapi/resources/evals/runs/runs.py +3 -0
  108. aimlapi/resources/files.py +3 -0
  109. aimlapi/resources/fine_tuning/__init__.py +3 -0
  110. aimlapi/resources/fine_tuning/alpha/__init__.py +3 -0
  111. aimlapi/resources/fine_tuning/alpha/alpha.py +3 -0
  112. aimlapi/resources/fine_tuning/alpha/graders.py +3 -0
  113. aimlapi/resources/fine_tuning/checkpoints/__init__.py +3 -0
  114. aimlapi/resources/fine_tuning/checkpoints/checkpoints.py +3 -0
  115. aimlapi/resources/fine_tuning/checkpoints/permissions.py +3 -0
  116. aimlapi/resources/fine_tuning/fine_tuning.py +3 -0
  117. aimlapi/resources/fine_tuning/jobs/__init__.py +3 -0
  118. aimlapi/resources/fine_tuning/jobs/checkpoints.py +3 -0
  119. aimlapi/resources/fine_tuning/jobs/jobs.py +3 -0
  120. aimlapi/resources/images.py +184 -0
  121. aimlapi/resources/models.py +3 -0
  122. aimlapi/resources/moderations.py +3 -0
  123. aimlapi/resources/realtime/__init__.py +3 -0
  124. aimlapi/resources/realtime/calls.py +3 -0
  125. aimlapi/resources/realtime/client_secrets.py +3 -0
  126. aimlapi/resources/realtime/realtime.py +3 -0
  127. aimlapi/resources/responses/__init__.py +4 -0
  128. aimlapi/resources/responses/input_items.py +3 -0
  129. aimlapi/resources/responses/input_tokens.py +3 -0
  130. aimlapi/resources/responses/responses.py +229 -0
  131. aimlapi/resources/uploads/__init__.py +19 -0
  132. aimlapi/resources/uploads/parts.py +3 -0
  133. aimlapi/resources/uploads/uploads.py +99 -0
  134. aimlapi/resources/vector_stores/__init__.py +3 -0
  135. aimlapi/resources/vector_stores/file_batches.py +3 -0
  136. aimlapi/resources/vector_stores/files.py +3 -0
  137. aimlapi/resources/vector_stores/vector_stores.py +3 -0
  138. aimlapi/resources/videos.py +267 -0
  139. aimlapi/resources/webhooks.py +3 -0
  140. aimlapi/types/__init__.py +3 -0
  141. aimlapi/types/audio/__init__.py +3 -0
  142. aimlapi/types/audio/speech_create_params.py +3 -0
  143. aimlapi/types/audio/speech_model.py +3 -0
  144. aimlapi/types/audio/transcription.py +3 -0
  145. aimlapi/types/audio/transcription_create_params.py +3 -0
  146. aimlapi/types/audio/transcription_create_response.py +3 -0
  147. aimlapi/types/audio/transcription_diarized.py +3 -0
  148. aimlapi/types/audio/transcription_diarized_segment.py +3 -0
  149. aimlapi/types/audio/transcription_include.py +3 -0
  150. aimlapi/types/audio/transcription_segment.py +3 -0
  151. aimlapi/types/audio/transcription_stream_event.py +3 -0
  152. aimlapi/types/audio/transcription_text_delta_event.py +3 -0
  153. aimlapi/types/audio/transcription_text_done_event.py +3 -0
  154. aimlapi/types/audio/transcription_text_segment_event.py +3 -0
  155. aimlapi/types/audio/transcription_verbose.py +3 -0
  156. aimlapi/types/audio/transcription_word.py +3 -0
  157. aimlapi/types/audio/translation.py +3 -0
  158. aimlapi/types/audio/translation_create_params.py +3 -0
  159. aimlapi/types/audio/translation_create_response.py +3 -0
  160. aimlapi/types/audio/translation_verbose.py +3 -0
  161. aimlapi/types/audio_model.py +3 -0
  162. aimlapi/types/audio_response_format.py +3 -0
  163. aimlapi/types/auto_file_chunking_strategy_param.py +3 -0
  164. aimlapi/types/batch.py +3 -0
  165. aimlapi/types/batch_create_params.py +3 -0
  166. aimlapi/types/batch_error.py +3 -0
  167. aimlapi/types/batch_list_params.py +3 -0
  168. aimlapi/types/batch_request_counts.py +3 -0
  169. aimlapi/types/batch_usage.py +3 -0
  170. aimlapi/types/beta/__init__.py +3 -0
  171. aimlapi/types/beta/assistant.py +3 -0
  172. aimlapi/types/beta/assistant_create_params.py +3 -0
  173. aimlapi/types/beta/assistant_deleted.py +3 -0
  174. aimlapi/types/beta/assistant_list_params.py +3 -0
  175. aimlapi/types/beta/assistant_response_format_option.py +3 -0
  176. aimlapi/types/beta/assistant_response_format_option_param.py +3 -0
  177. aimlapi/types/beta/assistant_stream_event.py +3 -0
  178. aimlapi/types/beta/assistant_tool.py +3 -0
  179. aimlapi/types/beta/assistant_tool_choice.py +3 -0
  180. aimlapi/types/beta/assistant_tool_choice_function.py +3 -0
  181. aimlapi/types/beta/assistant_tool_choice_function_param.py +3 -0
  182. aimlapi/types/beta/assistant_tool_choice_option.py +3 -0
  183. aimlapi/types/beta/assistant_tool_choice_option_param.py +3 -0
  184. aimlapi/types/beta/assistant_tool_choice_param.py +3 -0
  185. aimlapi/types/beta/assistant_tool_param.py +3 -0
  186. aimlapi/types/beta/assistant_update_params.py +3 -0
  187. aimlapi/types/beta/chat/__init__.py +3 -0
  188. aimlapi/types/beta/chatkit/__init__.py +3 -0
  189. aimlapi/types/beta/chatkit/chat_session.py +3 -0
  190. aimlapi/types/beta/chatkit/chat_session_automatic_thread_titling.py +3 -0
  191. aimlapi/types/beta/chatkit/chat_session_chatkit_configuration.py +3 -0
  192. aimlapi/types/beta/chatkit/chat_session_chatkit_configuration_param.py +3 -0
  193. aimlapi/types/beta/chatkit/chat_session_expires_after_param.py +3 -0
  194. aimlapi/types/beta/chatkit/chat_session_file_upload.py +3 -0
  195. aimlapi/types/beta/chatkit/chat_session_history.py +3 -0
  196. aimlapi/types/beta/chatkit/chat_session_rate_limits.py +3 -0
  197. aimlapi/types/beta/chatkit/chat_session_rate_limits_param.py +3 -0
  198. aimlapi/types/beta/chatkit/chat_session_status.py +3 -0
  199. aimlapi/types/beta/chatkit/chat_session_workflow_param.py +3 -0
  200. aimlapi/types/beta/chatkit/chatkit_attachment.py +3 -0
  201. aimlapi/types/beta/chatkit/chatkit_response_output_text.py +3 -0
  202. aimlapi/types/beta/chatkit/chatkit_thread.py +3 -0
  203. aimlapi/types/beta/chatkit/chatkit_thread_assistant_message_item.py +3 -0
  204. aimlapi/types/beta/chatkit/chatkit_thread_item_list.py +3 -0
  205. aimlapi/types/beta/chatkit/chatkit_thread_user_message_item.py +3 -0
  206. aimlapi/types/beta/chatkit/chatkit_widget_item.py +3 -0
  207. aimlapi/types/beta/chatkit/session_create_params.py +3 -0
  208. aimlapi/types/beta/chatkit/thread_delete_response.py +3 -0
  209. aimlapi/types/beta/chatkit/thread_list_items_params.py +3 -0
  210. aimlapi/types/beta/chatkit/thread_list_params.py +3 -0
  211. aimlapi/types/beta/chatkit_workflow.py +3 -0
  212. aimlapi/types/beta/code_interpreter_tool.py +3 -0
  213. aimlapi/types/beta/code_interpreter_tool_param.py +3 -0
  214. aimlapi/types/beta/file_search_tool.py +3 -0
  215. aimlapi/types/beta/file_search_tool_param.py +3 -0
  216. aimlapi/types/beta/function_tool.py +3 -0
  217. aimlapi/types/beta/function_tool_param.py +3 -0
  218. aimlapi/types/beta/realtime/__init__.py +3 -0
  219. aimlapi/types/beta/realtime/conversation_created_event.py +3 -0
  220. aimlapi/types/beta/realtime/conversation_item.py +3 -0
  221. aimlapi/types/beta/realtime/conversation_item_content.py +3 -0
  222. aimlapi/types/beta/realtime/conversation_item_content_param.py +3 -0
  223. aimlapi/types/beta/realtime/conversation_item_create_event.py +3 -0
  224. aimlapi/types/beta/realtime/conversation_item_create_event_param.py +3 -0
  225. aimlapi/types/beta/realtime/conversation_item_created_event.py +3 -0
  226. aimlapi/types/beta/realtime/conversation_item_delete_event.py +3 -0
  227. aimlapi/types/beta/realtime/conversation_item_delete_event_param.py +3 -0
  228. aimlapi/types/beta/realtime/conversation_item_deleted_event.py +3 -0
  229. aimlapi/types/beta/realtime/conversation_item_input_audio_transcription_completed_event.py +3 -0
  230. aimlapi/types/beta/realtime/conversation_item_input_audio_transcription_delta_event.py +3 -0
  231. aimlapi/types/beta/realtime/conversation_item_input_audio_transcription_failed_event.py +3 -0
  232. aimlapi/types/beta/realtime/conversation_item_param.py +3 -0
  233. aimlapi/types/beta/realtime/conversation_item_retrieve_event.py +3 -0
  234. aimlapi/types/beta/realtime/conversation_item_retrieve_event_param.py +3 -0
  235. aimlapi/types/beta/realtime/conversation_item_truncate_event.py +3 -0
  236. aimlapi/types/beta/realtime/conversation_item_truncate_event_param.py +3 -0
  237. aimlapi/types/beta/realtime/conversation_item_truncated_event.py +3 -0
  238. aimlapi/types/beta/realtime/conversation_item_with_reference.py +3 -0
  239. aimlapi/types/beta/realtime/conversation_item_with_reference_param.py +3 -0
  240. aimlapi/types/beta/realtime/error_event.py +3 -0
  241. aimlapi/types/beta/realtime/input_audio_buffer_append_event.py +3 -0
  242. aimlapi/types/beta/realtime/input_audio_buffer_append_event_param.py +3 -0
  243. aimlapi/types/beta/realtime/input_audio_buffer_clear_event.py +3 -0
  244. aimlapi/types/beta/realtime/input_audio_buffer_clear_event_param.py +3 -0
  245. aimlapi/types/beta/realtime/input_audio_buffer_cleared_event.py +3 -0
  246. aimlapi/types/beta/realtime/input_audio_buffer_commit_event.py +3 -0
  247. aimlapi/types/beta/realtime/input_audio_buffer_commit_event_param.py +3 -0
  248. aimlapi/types/beta/realtime/input_audio_buffer_committed_event.py +3 -0
  249. aimlapi/types/beta/realtime/input_audio_buffer_speech_started_event.py +3 -0
  250. aimlapi/types/beta/realtime/input_audio_buffer_speech_stopped_event.py +3 -0
  251. aimlapi/types/beta/realtime/rate_limits_updated_event.py +3 -0
  252. aimlapi/types/beta/realtime/realtime_client_event.py +3 -0
  253. aimlapi/types/beta/realtime/realtime_client_event_param.py +3 -0
  254. aimlapi/types/beta/realtime/realtime_connect_params.py +3 -0
  255. aimlapi/types/beta/realtime/realtime_response.py +3 -0
  256. aimlapi/types/beta/realtime/realtime_response_status.py +3 -0
  257. aimlapi/types/beta/realtime/realtime_response_usage.py +3 -0
  258. aimlapi/types/beta/realtime/realtime_server_event.py +3 -0
  259. aimlapi/types/beta/realtime/response_audio_delta_event.py +3 -0
  260. aimlapi/types/beta/realtime/response_audio_done_event.py +3 -0
  261. aimlapi/types/beta/realtime/response_audio_transcript_delta_event.py +3 -0
  262. aimlapi/types/beta/realtime/response_audio_transcript_done_event.py +3 -0
  263. aimlapi/types/beta/realtime/response_cancel_event.py +3 -0
  264. aimlapi/types/beta/realtime/response_cancel_event_param.py +3 -0
  265. aimlapi/types/beta/realtime/response_content_part_added_event.py +3 -0
  266. aimlapi/types/beta/realtime/response_content_part_done_event.py +3 -0
  267. aimlapi/types/beta/realtime/response_create_event.py +3 -0
  268. aimlapi/types/beta/realtime/response_create_event_param.py +3 -0
  269. aimlapi/types/beta/realtime/response_created_event.py +3 -0
  270. aimlapi/types/beta/realtime/response_done_event.py +3 -0
  271. aimlapi/types/beta/realtime/response_function_call_arguments_delta_event.py +3 -0
  272. aimlapi/types/beta/realtime/response_function_call_arguments_done_event.py +3 -0
  273. aimlapi/types/beta/realtime/response_output_item_added_event.py +3 -0
  274. aimlapi/types/beta/realtime/response_output_item_done_event.py +3 -0
  275. aimlapi/types/beta/realtime/response_text_delta_event.py +3 -0
  276. aimlapi/types/beta/realtime/response_text_done_event.py +3 -0
  277. aimlapi/types/beta/realtime/session.py +3 -0
  278. aimlapi/types/beta/realtime/session_create_params.py +3 -0
  279. aimlapi/types/beta/realtime/session_create_response.py +3 -0
  280. aimlapi/types/beta/realtime/session_created_event.py +3 -0
  281. aimlapi/types/beta/realtime/session_update_event.py +3 -0
  282. aimlapi/types/beta/realtime/session_update_event_param.py +3 -0
  283. aimlapi/types/beta/realtime/session_updated_event.py +3 -0
  284. aimlapi/types/beta/realtime/transcription_session.py +3 -0
  285. aimlapi/types/beta/realtime/transcription_session_create_params.py +3 -0
  286. aimlapi/types/beta/realtime/transcription_session_update.py +3 -0
  287. aimlapi/types/beta/realtime/transcription_session_update_param.py +3 -0
  288. aimlapi/types/beta/realtime/transcription_session_updated_event.py +3 -0
  289. aimlapi/types/beta/thread.py +3 -0
  290. aimlapi/types/beta/thread_create_and_run_params.py +3 -0
  291. aimlapi/types/beta/thread_create_params.py +3 -0
  292. aimlapi/types/beta/thread_deleted.py +3 -0
  293. aimlapi/types/beta/thread_update_params.py +3 -0
  294. aimlapi/types/beta/threads/__init__.py +3 -0
  295. aimlapi/types/beta/threads/annotation.py +3 -0
  296. aimlapi/types/beta/threads/annotation_delta.py +3 -0
  297. aimlapi/types/beta/threads/file_citation_annotation.py +3 -0
  298. aimlapi/types/beta/threads/file_citation_delta_annotation.py +3 -0
  299. aimlapi/types/beta/threads/file_path_annotation.py +3 -0
  300. aimlapi/types/beta/threads/file_path_delta_annotation.py +3 -0
  301. aimlapi/types/beta/threads/image_file.py +3 -0
  302. aimlapi/types/beta/threads/image_file_content_block.py +3 -0
  303. aimlapi/types/beta/threads/image_file_content_block_param.py +3 -0
  304. aimlapi/types/beta/threads/image_file_delta.py +3 -0
  305. aimlapi/types/beta/threads/image_file_delta_block.py +3 -0
  306. aimlapi/types/beta/threads/image_file_param.py +3 -0
  307. aimlapi/types/beta/threads/image_url.py +3 -0
  308. aimlapi/types/beta/threads/image_url_content_block.py +3 -0
  309. aimlapi/types/beta/threads/image_url_content_block_param.py +3 -0
  310. aimlapi/types/beta/threads/image_url_delta.py +3 -0
  311. aimlapi/types/beta/threads/image_url_delta_block.py +3 -0
  312. aimlapi/types/beta/threads/image_url_param.py +3 -0
  313. aimlapi/types/beta/threads/message.py +3 -0
  314. aimlapi/types/beta/threads/message_content.py +3 -0
  315. aimlapi/types/beta/threads/message_content_delta.py +3 -0
  316. aimlapi/types/beta/threads/message_content_part_param.py +3 -0
  317. aimlapi/types/beta/threads/message_create_params.py +3 -0
  318. aimlapi/types/beta/threads/message_deleted.py +3 -0
  319. aimlapi/types/beta/threads/message_delta.py +3 -0
  320. aimlapi/types/beta/threads/message_delta_event.py +3 -0
  321. aimlapi/types/beta/threads/message_list_params.py +3 -0
  322. aimlapi/types/beta/threads/message_update_params.py +3 -0
  323. aimlapi/types/beta/threads/refusal_content_block.py +3 -0
  324. aimlapi/types/beta/threads/refusal_delta_block.py +3 -0
  325. aimlapi/types/beta/threads/required_action_function_tool_call.py +3 -0
  326. aimlapi/types/beta/threads/run.py +3 -0
  327. aimlapi/types/beta/threads/run_create_params.py +3 -0
  328. aimlapi/types/beta/threads/run_list_params.py +3 -0
  329. aimlapi/types/beta/threads/run_status.py +3 -0
  330. aimlapi/types/beta/threads/run_submit_tool_outputs_params.py +3 -0
  331. aimlapi/types/beta/threads/run_update_params.py +3 -0
  332. aimlapi/types/beta/threads/runs/__init__.py +3 -0
  333. aimlapi/types/beta/threads/runs/code_interpreter_logs.py +3 -0
  334. aimlapi/types/beta/threads/runs/code_interpreter_output_image.py +3 -0
  335. aimlapi/types/beta/threads/runs/code_interpreter_tool_call.py +3 -0
  336. aimlapi/types/beta/threads/runs/code_interpreter_tool_call_delta.py +3 -0
  337. aimlapi/types/beta/threads/runs/file_search_tool_call.py +3 -0
  338. aimlapi/types/beta/threads/runs/file_search_tool_call_delta.py +3 -0
  339. aimlapi/types/beta/threads/runs/function_tool_call.py +3 -0
  340. aimlapi/types/beta/threads/runs/function_tool_call_delta.py +3 -0
  341. aimlapi/types/beta/threads/runs/message_creation_step_details.py +3 -0
  342. aimlapi/types/beta/threads/runs/run_step.py +3 -0
  343. aimlapi/types/beta/threads/runs/run_step_delta.py +3 -0
  344. aimlapi/types/beta/threads/runs/run_step_delta_event.py +3 -0
  345. aimlapi/types/beta/threads/runs/run_step_delta_message_delta.py +3 -0
  346. aimlapi/types/beta/threads/runs/run_step_include.py +3 -0
  347. aimlapi/types/beta/threads/runs/step_list_params.py +3 -0
  348. aimlapi/types/beta/threads/runs/step_retrieve_params.py +3 -0
  349. aimlapi/types/beta/threads/runs/tool_call.py +3 -0
  350. aimlapi/types/beta/threads/runs/tool_call_delta.py +3 -0
  351. aimlapi/types/beta/threads/runs/tool_call_delta_object.py +3 -0
  352. aimlapi/types/beta/threads/runs/tool_calls_step_details.py +3 -0
  353. aimlapi/types/beta/threads/text.py +3 -0
  354. aimlapi/types/beta/threads/text_content_block.py +3 -0
  355. aimlapi/types/beta/threads/text_content_block_param.py +3 -0
  356. aimlapi/types/beta/threads/text_delta.py +3 -0
  357. aimlapi/types/beta/threads/text_delta_block.py +3 -0
  358. aimlapi/types/chat/__init__.py +3 -0
  359. aimlapi/types/chat/chat_completion.py +3 -0
  360. aimlapi/types/chat/chat_completion_allowed_tool_choice_param.py +3 -0
  361. aimlapi/types/chat/chat_completion_allowed_tools_param.py +3 -0
  362. aimlapi/types/chat/chat_completion_assistant_message_param.py +3 -0
  363. aimlapi/types/chat/chat_completion_audio.py +3 -0
  364. aimlapi/types/chat/chat_completion_audio_param.py +3 -0
  365. aimlapi/types/chat/chat_completion_chunk.py +3 -0
  366. aimlapi/types/chat/chat_completion_content_part_image.py +3 -0
  367. aimlapi/types/chat/chat_completion_content_part_image_param.py +3 -0
  368. aimlapi/types/chat/chat_completion_content_part_input_audio_param.py +3 -0
  369. aimlapi/types/chat/chat_completion_content_part_param.py +3 -0
  370. aimlapi/types/chat/chat_completion_content_part_refusal_param.py +3 -0
  371. aimlapi/types/chat/chat_completion_content_part_text.py +3 -0
  372. aimlapi/types/chat/chat_completion_content_part_text_param.py +3 -0
  373. aimlapi/types/chat/chat_completion_custom_tool_param.py +3 -0
  374. aimlapi/types/chat/chat_completion_deleted.py +3 -0
  375. aimlapi/types/chat/chat_completion_developer_message_param.py +3 -0
  376. aimlapi/types/chat/chat_completion_function_call_option_param.py +3 -0
  377. aimlapi/types/chat/chat_completion_function_message_param.py +3 -0
  378. aimlapi/types/chat/chat_completion_function_tool.py +3 -0
  379. aimlapi/types/chat/chat_completion_function_tool_param.py +3 -0
  380. aimlapi/types/chat/chat_completion_message.py +3 -0
  381. aimlapi/types/chat/chat_completion_message_custom_tool_call.py +3 -0
  382. aimlapi/types/chat/chat_completion_message_custom_tool_call_param.py +3 -0
  383. aimlapi/types/chat/chat_completion_message_function_tool_call.py +3 -0
  384. aimlapi/types/chat/chat_completion_message_function_tool_call_param.py +3 -0
  385. aimlapi/types/chat/chat_completion_message_param.py +3 -0
  386. aimlapi/types/chat/chat_completion_message_tool_call.py +3 -0
  387. aimlapi/types/chat/chat_completion_message_tool_call_param.py +3 -0
  388. aimlapi/types/chat/chat_completion_message_tool_call_union_param.py +3 -0
  389. aimlapi/types/chat/chat_completion_modality.py +3 -0
  390. aimlapi/types/chat/chat_completion_named_tool_choice_custom_param.py +3 -0
  391. aimlapi/types/chat/chat_completion_named_tool_choice_param.py +3 -0
  392. aimlapi/types/chat/chat_completion_prediction_content_param.py +3 -0
  393. aimlapi/types/chat/chat_completion_reasoning_effort.py +3 -0
  394. aimlapi/types/chat/chat_completion_role.py +3 -0
  395. aimlapi/types/chat/chat_completion_store_message.py +3 -0
  396. aimlapi/types/chat/chat_completion_stream_options_param.py +3 -0
  397. aimlapi/types/chat/chat_completion_system_message_param.py +3 -0
  398. aimlapi/types/chat/chat_completion_token_logprob.py +3 -0
  399. aimlapi/types/chat/chat_completion_tool_choice_option_param.py +3 -0
  400. aimlapi/types/chat/chat_completion_tool_message_param.py +3 -0
  401. aimlapi/types/chat/chat_completion_tool_param.py +3 -0
  402. aimlapi/types/chat/chat_completion_tool_union_param.py +3 -0
  403. aimlapi/types/chat/chat_completion_user_message_param.py +3 -0
  404. aimlapi/types/chat/completion_create_params.py +3 -0
  405. aimlapi/types/chat/completion_list_params.py +3 -0
  406. aimlapi/types/chat/completion_update_params.py +3 -0
  407. aimlapi/types/chat/completions/__init__.py +3 -0
  408. aimlapi/types/chat/completions/message_list_params.py +3 -0
  409. aimlapi/types/chat/parsed_chat_completion.py +3 -0
  410. aimlapi/types/chat/parsed_function_tool_call.py +3 -0
  411. aimlapi/types/chat_model.py +3 -0
  412. aimlapi/types/completion.py +3 -0
  413. aimlapi/types/completion_choice.py +3 -0
  414. aimlapi/types/completion_create_params.py +3 -0
  415. aimlapi/types/completion_usage.py +3 -0
  416. aimlapi/types/container_create_params.py +3 -0
  417. aimlapi/types/container_create_response.py +3 -0
  418. aimlapi/types/container_list_params.py +3 -0
  419. aimlapi/types/container_list_response.py +3 -0
  420. aimlapi/types/container_retrieve_response.py +3 -0
  421. aimlapi/types/containers/__init__.py +3 -0
  422. aimlapi/types/containers/file_create_params.py +3 -0
  423. aimlapi/types/containers/file_create_response.py +3 -0
  424. aimlapi/types/containers/file_list_params.py +3 -0
  425. aimlapi/types/containers/file_list_response.py +3 -0
  426. aimlapi/types/containers/file_retrieve_response.py +3 -0
  427. aimlapi/types/containers/files/__init__.py +3 -0
  428. aimlapi/types/conversations/__init__.py +3 -0
  429. aimlapi/types/conversations/computer_screenshot_content.py +3 -0
  430. aimlapi/types/conversations/conversation.py +3 -0
  431. aimlapi/types/conversations/conversation_create_params.py +3 -0
  432. aimlapi/types/conversations/conversation_deleted_resource.py +3 -0
  433. aimlapi/types/conversations/conversation_item.py +3 -0
  434. aimlapi/types/conversations/conversation_item_list.py +3 -0
  435. aimlapi/types/conversations/conversation_update_params.py +3 -0
  436. aimlapi/types/conversations/input_file_content.py +3 -0
  437. aimlapi/types/conversations/input_file_content_param.py +3 -0
  438. aimlapi/types/conversations/input_image_content.py +3 -0
  439. aimlapi/types/conversations/input_image_content_param.py +3 -0
  440. aimlapi/types/conversations/input_text_content.py +3 -0
  441. aimlapi/types/conversations/input_text_content_param.py +3 -0
  442. aimlapi/types/conversations/item_create_params.py +3 -0
  443. aimlapi/types/conversations/item_list_params.py +3 -0
  444. aimlapi/types/conversations/item_retrieve_params.py +3 -0
  445. aimlapi/types/conversations/message.py +3 -0
  446. aimlapi/types/conversations/output_text_content.py +3 -0
  447. aimlapi/types/conversations/output_text_content_param.py +3 -0
  448. aimlapi/types/conversations/refusal_content.py +3 -0
  449. aimlapi/types/conversations/refusal_content_param.py +3 -0
  450. aimlapi/types/conversations/summary_text_content.py +3 -0
  451. aimlapi/types/conversations/text_content.py +3 -0
  452. aimlapi/types/create_embedding_response.py +3 -0
  453. aimlapi/types/embedding.py +3 -0
  454. aimlapi/types/embedding_create_params.py +3 -0
  455. aimlapi/types/embedding_model.py +3 -0
  456. aimlapi/types/eval_create_params.py +3 -0
  457. aimlapi/types/eval_create_response.py +3 -0
  458. aimlapi/types/eval_custom_data_source_config.py +3 -0
  459. aimlapi/types/eval_delete_response.py +3 -0
  460. aimlapi/types/eval_list_params.py +3 -0
  461. aimlapi/types/eval_list_response.py +3 -0
  462. aimlapi/types/eval_retrieve_response.py +3 -0
  463. aimlapi/types/eval_stored_completions_data_source_config.py +3 -0
  464. aimlapi/types/eval_update_params.py +3 -0
  465. aimlapi/types/eval_update_response.py +3 -0
  466. aimlapi/types/evals/__init__.py +3 -0
  467. aimlapi/types/evals/create_eval_completions_run_data_source.py +3 -0
  468. aimlapi/types/evals/create_eval_completions_run_data_source_param.py +3 -0
  469. aimlapi/types/evals/create_eval_jsonl_run_data_source.py +3 -0
  470. aimlapi/types/evals/create_eval_jsonl_run_data_source_param.py +3 -0
  471. aimlapi/types/evals/eval_api_error.py +3 -0
  472. aimlapi/types/evals/run_cancel_response.py +3 -0
  473. aimlapi/types/evals/run_create_params.py +3 -0
  474. aimlapi/types/evals/run_create_response.py +3 -0
  475. aimlapi/types/evals/run_delete_response.py +3 -0
  476. aimlapi/types/evals/run_list_params.py +3 -0
  477. aimlapi/types/evals/run_list_response.py +3 -0
  478. aimlapi/types/evals/run_retrieve_response.py +3 -0
  479. aimlapi/types/evals/runs/__init__.py +3 -0
  480. aimlapi/types/evals/runs/output_item_list_params.py +3 -0
  481. aimlapi/types/evals/runs/output_item_list_response.py +3 -0
  482. aimlapi/types/evals/runs/output_item_retrieve_response.py +3 -0
  483. aimlapi/types/file_chunking_strategy.py +3 -0
  484. aimlapi/types/file_chunking_strategy_param.py +3 -0
  485. aimlapi/types/file_content.py +3 -0
  486. aimlapi/types/file_create_params.py +3 -0
  487. aimlapi/types/file_deleted.py +3 -0
  488. aimlapi/types/file_list_params.py +3 -0
  489. aimlapi/types/file_object.py +3 -0
  490. aimlapi/types/file_purpose.py +3 -0
  491. aimlapi/types/fine_tuning/__init__.py +3 -0
  492. aimlapi/types/fine_tuning/alpha/__init__.py +3 -0
  493. aimlapi/types/fine_tuning/alpha/grader_run_params.py +3 -0
  494. aimlapi/types/fine_tuning/alpha/grader_run_response.py +3 -0
  495. aimlapi/types/fine_tuning/alpha/grader_validate_params.py +3 -0
  496. aimlapi/types/fine_tuning/alpha/grader_validate_response.py +3 -0
  497. aimlapi/types/fine_tuning/checkpoints/__init__.py +3 -0
  498. aimlapi/types/fine_tuning/checkpoints/permission_create_params.py +3 -0
  499. aimlapi/types/fine_tuning/checkpoints/permission_create_response.py +3 -0
  500. aimlapi/types/fine_tuning/checkpoints/permission_delete_response.py +3 -0
  501. aimlapi/types/fine_tuning/checkpoints/permission_retrieve_params.py +3 -0
  502. aimlapi/types/fine_tuning/checkpoints/permission_retrieve_response.py +3 -0
  503. aimlapi/types/fine_tuning/dpo_hyperparameters.py +3 -0
  504. aimlapi/types/fine_tuning/dpo_hyperparameters_param.py +3 -0
  505. aimlapi/types/fine_tuning/dpo_method.py +3 -0
  506. aimlapi/types/fine_tuning/dpo_method_param.py +3 -0
  507. aimlapi/types/fine_tuning/fine_tuning_job.py +3 -0
  508. aimlapi/types/fine_tuning/fine_tuning_job_event.py +3 -0
  509. aimlapi/types/fine_tuning/fine_tuning_job_integration.py +3 -0
  510. aimlapi/types/fine_tuning/fine_tuning_job_wandb_integration.py +3 -0
  511. aimlapi/types/fine_tuning/fine_tuning_job_wandb_integration_object.py +3 -0
  512. aimlapi/types/fine_tuning/job_create_params.py +3 -0
  513. aimlapi/types/fine_tuning/job_list_events_params.py +3 -0
  514. aimlapi/types/fine_tuning/job_list_params.py +3 -0
  515. aimlapi/types/fine_tuning/jobs/__init__.py +3 -0
  516. aimlapi/types/fine_tuning/jobs/checkpoint_list_params.py +3 -0
  517. aimlapi/types/fine_tuning/jobs/fine_tuning_job_checkpoint.py +3 -0
  518. aimlapi/types/fine_tuning/reinforcement_hyperparameters.py +3 -0
  519. aimlapi/types/fine_tuning/reinforcement_hyperparameters_param.py +3 -0
  520. aimlapi/types/fine_tuning/reinforcement_method.py +3 -0
  521. aimlapi/types/fine_tuning/reinforcement_method_param.py +3 -0
  522. aimlapi/types/fine_tuning/supervised_hyperparameters.py +3 -0
  523. aimlapi/types/fine_tuning/supervised_hyperparameters_param.py +3 -0
  524. aimlapi/types/fine_tuning/supervised_method.py +3 -0
  525. aimlapi/types/fine_tuning/supervised_method_param.py +3 -0
  526. aimlapi/types/graders/__init__.py +3 -0
  527. aimlapi/types/graders/label_model_grader.py +3 -0
  528. aimlapi/types/graders/label_model_grader_param.py +3 -0
  529. aimlapi/types/graders/multi_grader.py +3 -0
  530. aimlapi/types/graders/multi_grader_param.py +3 -0
  531. aimlapi/types/graders/python_grader.py +3 -0
  532. aimlapi/types/graders/python_grader_param.py +3 -0
  533. aimlapi/types/graders/score_model_grader.py +3 -0
  534. aimlapi/types/graders/score_model_grader_param.py +3 -0
  535. aimlapi/types/graders/string_check_grader.py +3 -0
  536. aimlapi/types/graders/string_check_grader_param.py +3 -0
  537. aimlapi/types/graders/text_similarity_grader.py +3 -0
  538. aimlapi/types/graders/text_similarity_grader_param.py +3 -0
  539. aimlapi/types/image.py +3 -0
  540. aimlapi/types/image_create_variation_params.py +3 -0
  541. aimlapi/types/image_edit_completed_event.py +3 -0
  542. aimlapi/types/image_edit_params.py +3 -0
  543. aimlapi/types/image_edit_partial_image_event.py +3 -0
  544. aimlapi/types/image_edit_stream_event.py +3 -0
  545. aimlapi/types/image_gen_completed_event.py +3 -0
  546. aimlapi/types/image_gen_partial_image_event.py +3 -0
  547. aimlapi/types/image_gen_stream_event.py +3 -0
  548. aimlapi/types/image_generate_params.py +3 -0
  549. aimlapi/types/image_model.py +3 -0
  550. aimlapi/types/images_response.py +3 -0
  551. aimlapi/types/model.py +3 -0
  552. aimlapi/types/model_deleted.py +3 -0
  553. aimlapi/types/moderation.py +3 -0
  554. aimlapi/types/moderation_create_params.py +3 -0
  555. aimlapi/types/moderation_create_response.py +3 -0
  556. aimlapi/types/moderation_image_url_input_param.py +3 -0
  557. aimlapi/types/moderation_model.py +3 -0
  558. aimlapi/types/moderation_multi_modal_input_param.py +3 -0
  559. aimlapi/types/moderation_text_input_param.py +3 -0
  560. aimlapi/types/other_file_chunking_strategy_object.py +3 -0
  561. aimlapi/types/realtime/__init__.py +3 -0
  562. aimlapi/types/realtime/audio_transcription.py +3 -0
  563. aimlapi/types/realtime/audio_transcription_param.py +3 -0
  564. aimlapi/types/realtime/call_accept_params.py +3 -0
  565. aimlapi/types/realtime/call_create_params.py +3 -0
  566. aimlapi/types/realtime/call_refer_params.py +3 -0
  567. aimlapi/types/realtime/call_reject_params.py +3 -0
  568. aimlapi/types/realtime/client_secret_create_params.py +3 -0
  569. aimlapi/types/realtime/client_secret_create_response.py +3 -0
  570. aimlapi/types/realtime/conversation_created_event.py +3 -0
  571. aimlapi/types/realtime/conversation_item.py +3 -0
  572. aimlapi/types/realtime/conversation_item_added.py +3 -0
  573. aimlapi/types/realtime/conversation_item_create_event.py +3 -0
  574. aimlapi/types/realtime/conversation_item_create_event_param.py +3 -0
  575. aimlapi/types/realtime/conversation_item_created_event.py +3 -0
  576. aimlapi/types/realtime/conversation_item_delete_event.py +3 -0
  577. aimlapi/types/realtime/conversation_item_delete_event_param.py +3 -0
  578. aimlapi/types/realtime/conversation_item_deleted_event.py +3 -0
  579. aimlapi/types/realtime/conversation_item_done.py +3 -0
  580. aimlapi/types/realtime/conversation_item_input_audio_transcription_completed_event.py +3 -0
  581. aimlapi/types/realtime/conversation_item_input_audio_transcription_delta_event.py +3 -0
  582. aimlapi/types/realtime/conversation_item_input_audio_transcription_failed_event.py +3 -0
  583. aimlapi/types/realtime/conversation_item_input_audio_transcription_segment.py +3 -0
  584. aimlapi/types/realtime/conversation_item_param.py +3 -0
  585. aimlapi/types/realtime/conversation_item_retrieve_event.py +3 -0
  586. aimlapi/types/realtime/conversation_item_retrieve_event_param.py +3 -0
  587. aimlapi/types/realtime/conversation_item_truncate_event.py +3 -0
  588. aimlapi/types/realtime/conversation_item_truncate_event_param.py +3 -0
  589. aimlapi/types/realtime/conversation_item_truncated_event.py +3 -0
  590. aimlapi/types/realtime/input_audio_buffer_append_event.py +3 -0
  591. aimlapi/types/realtime/input_audio_buffer_append_event_param.py +3 -0
  592. aimlapi/types/realtime/input_audio_buffer_clear_event.py +3 -0
  593. aimlapi/types/realtime/input_audio_buffer_clear_event_param.py +3 -0
  594. aimlapi/types/realtime/input_audio_buffer_cleared_event.py +3 -0
  595. aimlapi/types/realtime/input_audio_buffer_commit_event.py +3 -0
  596. aimlapi/types/realtime/input_audio_buffer_commit_event_param.py +3 -0
  597. aimlapi/types/realtime/input_audio_buffer_committed_event.py +3 -0
  598. aimlapi/types/realtime/input_audio_buffer_speech_started_event.py +3 -0
  599. aimlapi/types/realtime/input_audio_buffer_speech_stopped_event.py +3 -0
  600. aimlapi/types/realtime/input_audio_buffer_timeout_triggered.py +3 -0
  601. aimlapi/types/realtime/log_prob_properties.py +3 -0
  602. aimlapi/types/realtime/mcp_list_tools_completed.py +3 -0
  603. aimlapi/types/realtime/mcp_list_tools_failed.py +3 -0
  604. aimlapi/types/realtime/mcp_list_tools_in_progress.py +3 -0
  605. aimlapi/types/realtime/noise_reduction_type.py +3 -0
  606. aimlapi/types/realtime/output_audio_buffer_clear_event.py +3 -0
  607. aimlapi/types/realtime/output_audio_buffer_clear_event_param.py +3 -0
  608. aimlapi/types/realtime/rate_limits_updated_event.py +3 -0
  609. aimlapi/types/realtime/realtime_audio_config.py +3 -0
  610. aimlapi/types/realtime/realtime_audio_config_input.py +3 -0
  611. aimlapi/types/realtime/realtime_audio_config_input_param.py +3 -0
  612. aimlapi/types/realtime/realtime_audio_config_output.py +3 -0
  613. aimlapi/types/realtime/realtime_audio_config_output_param.py +3 -0
  614. aimlapi/types/realtime/realtime_audio_config_param.py +3 -0
  615. aimlapi/types/realtime/realtime_audio_formats.py +3 -0
  616. aimlapi/types/realtime/realtime_audio_formats_param.py +3 -0
  617. aimlapi/types/realtime/realtime_audio_input_turn_detection.py +3 -0
  618. aimlapi/types/realtime/realtime_audio_input_turn_detection_param.py +3 -0
  619. aimlapi/types/realtime/realtime_client_event.py +3 -0
  620. aimlapi/types/realtime/realtime_client_event_param.py +3 -0
  621. aimlapi/types/realtime/realtime_connect_params.py +3 -0
  622. aimlapi/types/realtime/realtime_conversation_item_assistant_message.py +3 -0
  623. aimlapi/types/realtime/realtime_conversation_item_assistant_message_param.py +3 -0
  624. aimlapi/types/realtime/realtime_conversation_item_function_call.py +3 -0
  625. aimlapi/types/realtime/realtime_conversation_item_function_call_output.py +3 -0
  626. aimlapi/types/realtime/realtime_conversation_item_function_call_output_param.py +3 -0
  627. aimlapi/types/realtime/realtime_conversation_item_function_call_param.py +3 -0
  628. aimlapi/types/realtime/realtime_conversation_item_system_message.py +3 -0
  629. aimlapi/types/realtime/realtime_conversation_item_system_message_param.py +3 -0
  630. aimlapi/types/realtime/realtime_conversation_item_user_message.py +3 -0
  631. aimlapi/types/realtime/realtime_conversation_item_user_message_param.py +3 -0
  632. aimlapi/types/realtime/realtime_error.py +3 -0
  633. aimlapi/types/realtime/realtime_error_event.py +3 -0
  634. aimlapi/types/realtime/realtime_function_tool.py +3 -0
  635. aimlapi/types/realtime/realtime_function_tool_param.py +3 -0
  636. aimlapi/types/realtime/realtime_mcp_approval_request.py +3 -0
  637. aimlapi/types/realtime/realtime_mcp_approval_request_param.py +3 -0
  638. aimlapi/types/realtime/realtime_mcp_approval_response.py +3 -0
  639. aimlapi/types/realtime/realtime_mcp_approval_response_param.py +3 -0
  640. aimlapi/types/realtime/realtime_mcp_list_tools.py +3 -0
  641. aimlapi/types/realtime/realtime_mcp_list_tools_param.py +3 -0
  642. aimlapi/types/realtime/realtime_mcp_protocol_error.py +3 -0
  643. aimlapi/types/realtime/realtime_mcp_protocol_error_param.py +3 -0
  644. aimlapi/types/realtime/realtime_mcp_tool_call.py +3 -0
  645. aimlapi/types/realtime/realtime_mcp_tool_call_param.py +3 -0
  646. aimlapi/types/realtime/realtime_mcp_tool_execution_error.py +3 -0
  647. aimlapi/types/realtime/realtime_mcp_tool_execution_error_param.py +3 -0
  648. aimlapi/types/realtime/realtime_mcphttp_error.py +3 -0
  649. aimlapi/types/realtime/realtime_mcphttp_error_param.py +3 -0
  650. aimlapi/types/realtime/realtime_response.py +3 -0
  651. aimlapi/types/realtime/realtime_response_create_audio_output.py +3 -0
  652. aimlapi/types/realtime/realtime_response_create_audio_output_param.py +3 -0
  653. aimlapi/types/realtime/realtime_response_create_mcp_tool.py +3 -0
  654. aimlapi/types/realtime/realtime_response_create_mcp_tool_param.py +3 -0
  655. aimlapi/types/realtime/realtime_response_create_params.py +3 -0
  656. aimlapi/types/realtime/realtime_response_create_params_param.py +3 -0
  657. aimlapi/types/realtime/realtime_response_status.py +3 -0
  658. aimlapi/types/realtime/realtime_response_usage.py +3 -0
  659. aimlapi/types/realtime/realtime_response_usage_input_token_details.py +3 -0
  660. aimlapi/types/realtime/realtime_response_usage_output_token_details.py +3 -0
  661. aimlapi/types/realtime/realtime_server_event.py +3 -0
  662. aimlapi/types/realtime/realtime_session_client_secret.py +3 -0
  663. aimlapi/types/realtime/realtime_session_create_request.py +3 -0
  664. aimlapi/types/realtime/realtime_session_create_request_param.py +3 -0
  665. aimlapi/types/realtime/realtime_session_create_response.py +3 -0
  666. aimlapi/types/realtime/realtime_tool_choice_config.py +3 -0
  667. aimlapi/types/realtime/realtime_tool_choice_config_param.py +3 -0
  668. aimlapi/types/realtime/realtime_tools_config.py +3 -0
  669. aimlapi/types/realtime/realtime_tools_config_param.py +3 -0
  670. aimlapi/types/realtime/realtime_tools_config_union.py +3 -0
  671. aimlapi/types/realtime/realtime_tools_config_union_param.py +3 -0
  672. aimlapi/types/realtime/realtime_tracing_config.py +3 -0
  673. aimlapi/types/realtime/realtime_tracing_config_param.py +3 -0
  674. aimlapi/types/realtime/realtime_transcription_session_audio.py +3 -0
  675. aimlapi/types/realtime/realtime_transcription_session_audio_input.py +3 -0
  676. aimlapi/types/realtime/realtime_transcription_session_audio_input_param.py +3 -0
  677. aimlapi/types/realtime/realtime_transcription_session_audio_input_turn_detection.py +3 -0
  678. aimlapi/types/realtime/realtime_transcription_session_audio_input_turn_detection_param.py +3 -0
  679. aimlapi/types/realtime/realtime_transcription_session_audio_param.py +3 -0
  680. aimlapi/types/realtime/realtime_transcription_session_create_request.py +3 -0
  681. aimlapi/types/realtime/realtime_transcription_session_create_request_param.py +3 -0
  682. aimlapi/types/realtime/realtime_transcription_session_create_response.py +3 -0
  683. aimlapi/types/realtime/realtime_transcription_session_turn_detection.py +3 -0
  684. aimlapi/types/realtime/realtime_truncation.py +3 -0
  685. aimlapi/types/realtime/realtime_truncation_param.py +3 -0
  686. aimlapi/types/realtime/realtime_truncation_retention_ratio.py +3 -0
  687. aimlapi/types/realtime/realtime_truncation_retention_ratio_param.py +3 -0
  688. aimlapi/types/realtime/response_audio_delta_event.py +3 -0
  689. aimlapi/types/realtime/response_audio_done_event.py +3 -0
  690. aimlapi/types/realtime/response_audio_transcript_delta_event.py +3 -0
  691. aimlapi/types/realtime/response_audio_transcript_done_event.py +3 -0
  692. aimlapi/types/realtime/response_cancel_event.py +3 -0
  693. aimlapi/types/realtime/response_cancel_event_param.py +3 -0
  694. aimlapi/types/realtime/response_content_part_added_event.py +3 -0
  695. aimlapi/types/realtime/response_content_part_done_event.py +3 -0
  696. aimlapi/types/realtime/response_create_event.py +3 -0
  697. aimlapi/types/realtime/response_create_event_param.py +3 -0
  698. aimlapi/types/realtime/response_created_event.py +3 -0
  699. aimlapi/types/realtime/response_done_event.py +3 -0
  700. aimlapi/types/realtime/response_function_call_arguments_delta_event.py +3 -0
  701. aimlapi/types/realtime/response_function_call_arguments_done_event.py +3 -0
  702. aimlapi/types/realtime/response_mcp_call_arguments_delta.py +3 -0
  703. aimlapi/types/realtime/response_mcp_call_arguments_done.py +3 -0
  704. aimlapi/types/realtime/response_mcp_call_completed.py +3 -0
  705. aimlapi/types/realtime/response_mcp_call_failed.py +3 -0
  706. aimlapi/types/realtime/response_mcp_call_in_progress.py +3 -0
  707. aimlapi/types/realtime/response_output_item_added_event.py +3 -0
  708. aimlapi/types/realtime/response_output_item_done_event.py +3 -0
  709. aimlapi/types/realtime/response_text_delta_event.py +3 -0
  710. aimlapi/types/realtime/response_text_done_event.py +3 -0
  711. aimlapi/types/realtime/session_created_event.py +3 -0
  712. aimlapi/types/realtime/session_update_event.py +3 -0
  713. aimlapi/types/realtime/session_update_event_param.py +3 -0
  714. aimlapi/types/realtime/session_updated_event.py +3 -0
  715. aimlapi/types/responses/__init__.py +3 -0
  716. aimlapi/types/responses/computer_tool.py +3 -0
  717. aimlapi/types/responses/computer_tool_param.py +3 -0
  718. aimlapi/types/responses/custom_tool.py +3 -0
  719. aimlapi/types/responses/custom_tool_param.py +3 -0
  720. aimlapi/types/responses/easy_input_message.py +3 -0
  721. aimlapi/types/responses/easy_input_message_param.py +3 -0
  722. aimlapi/types/responses/file_search_tool.py +3 -0
  723. aimlapi/types/responses/file_search_tool_param.py +3 -0
  724. aimlapi/types/responses/function_tool.py +3 -0
  725. aimlapi/types/responses/function_tool_param.py +3 -0
  726. aimlapi/types/responses/input_item_list_params.py +3 -0
  727. aimlapi/types/responses/input_token_count_params.py +3 -0
  728. aimlapi/types/responses/input_token_count_response.py +3 -0
  729. aimlapi/types/responses/parsed_response.py +3 -0
  730. aimlapi/types/responses/response.py +3 -0
  731. aimlapi/types/responses/response_audio_delta_event.py +3 -0
  732. aimlapi/types/responses/response_audio_done_event.py +3 -0
  733. aimlapi/types/responses/response_audio_transcript_delta_event.py +3 -0
  734. aimlapi/types/responses/response_audio_transcript_done_event.py +3 -0
  735. aimlapi/types/responses/response_code_interpreter_call_code_delta_event.py +3 -0
  736. aimlapi/types/responses/response_code_interpreter_call_code_done_event.py +3 -0
  737. aimlapi/types/responses/response_code_interpreter_call_completed_event.py +3 -0
  738. aimlapi/types/responses/response_code_interpreter_call_in_progress_event.py +3 -0
  739. aimlapi/types/responses/response_code_interpreter_call_interpreting_event.py +3 -0
  740. aimlapi/types/responses/response_code_interpreter_tool_call.py +3 -0
  741. aimlapi/types/responses/response_code_interpreter_tool_call_param.py +3 -0
  742. aimlapi/types/responses/response_completed_event.py +3 -0
  743. aimlapi/types/responses/response_computer_tool_call.py +3 -0
  744. aimlapi/types/responses/response_computer_tool_call_output_item.py +3 -0
  745. aimlapi/types/responses/response_computer_tool_call_output_screenshot.py +3 -0
  746. aimlapi/types/responses/response_computer_tool_call_output_screenshot_param.py +3 -0
  747. aimlapi/types/responses/response_computer_tool_call_param.py +3 -0
  748. aimlapi/types/responses/response_content_part_added_event.py +3 -0
  749. aimlapi/types/responses/response_content_part_done_event.py +3 -0
  750. aimlapi/types/responses/response_conversation_param.py +3 -0
  751. aimlapi/types/responses/response_create_params.py +3 -0
  752. aimlapi/types/responses/response_created_event.py +3 -0
  753. aimlapi/types/responses/response_custom_tool_call.py +3 -0
  754. aimlapi/types/responses/response_custom_tool_call_input_delta_event.py +3 -0
  755. aimlapi/types/responses/response_custom_tool_call_input_done_event.py +3 -0
  756. aimlapi/types/responses/response_custom_tool_call_output.py +3 -0
  757. aimlapi/types/responses/response_custom_tool_call_output_param.py +3 -0
  758. aimlapi/types/responses/response_custom_tool_call_param.py +3 -0
  759. aimlapi/types/responses/response_error.py +3 -0
  760. aimlapi/types/responses/response_error_event.py +3 -0
  761. aimlapi/types/responses/response_failed_event.py +3 -0
  762. aimlapi/types/responses/response_file_search_call_completed_event.py +3 -0
  763. aimlapi/types/responses/response_file_search_call_in_progress_event.py +3 -0
  764. aimlapi/types/responses/response_file_search_call_searching_event.py +3 -0
  765. aimlapi/types/responses/response_file_search_tool_call.py +3 -0
  766. aimlapi/types/responses/response_file_search_tool_call_param.py +3 -0
  767. aimlapi/types/responses/response_format_text_config.py +3 -0
  768. aimlapi/types/responses/response_format_text_config_param.py +3 -0
  769. aimlapi/types/responses/response_format_text_json_schema_config.py +3 -0
  770. aimlapi/types/responses/response_format_text_json_schema_config_param.py +3 -0
  771. aimlapi/types/responses/response_function_call_arguments_delta_event.py +3 -0
  772. aimlapi/types/responses/response_function_call_arguments_done_event.py +3 -0
  773. aimlapi/types/responses/response_function_call_output_item.py +3 -0
  774. aimlapi/types/responses/response_function_call_output_item_list.py +3 -0
  775. aimlapi/types/responses/response_function_call_output_item_list_param.py +3 -0
  776. aimlapi/types/responses/response_function_call_output_item_param.py +3 -0
  777. aimlapi/types/responses/response_function_tool_call.py +3 -0
  778. aimlapi/types/responses/response_function_tool_call_item.py +3 -0
  779. aimlapi/types/responses/response_function_tool_call_output_item.py +3 -0
  780. aimlapi/types/responses/response_function_tool_call_param.py +3 -0
  781. aimlapi/types/responses/response_function_web_search.py +3 -0
  782. aimlapi/types/responses/response_function_web_search_param.py +3 -0
  783. aimlapi/types/responses/response_image_gen_call_completed_event.py +3 -0
  784. aimlapi/types/responses/response_image_gen_call_generating_event.py +3 -0
  785. aimlapi/types/responses/response_image_gen_call_in_progress_event.py +3 -0
  786. aimlapi/types/responses/response_image_gen_call_partial_image_event.py +3 -0
  787. aimlapi/types/responses/response_in_progress_event.py +3 -0
  788. aimlapi/types/responses/response_includable.py +3 -0
  789. aimlapi/types/responses/response_incomplete_event.py +3 -0
  790. aimlapi/types/responses/response_input_audio.py +3 -0
  791. aimlapi/types/responses/response_input_audio_param.py +3 -0
  792. aimlapi/types/responses/response_input_content.py +3 -0
  793. aimlapi/types/responses/response_input_content_param.py +3 -0
  794. aimlapi/types/responses/response_input_file.py +3 -0
  795. aimlapi/types/responses/response_input_file_content.py +3 -0
  796. aimlapi/types/responses/response_input_file_content_param.py +3 -0
  797. aimlapi/types/responses/response_input_file_param.py +3 -0
  798. aimlapi/types/responses/response_input_image.py +3 -0
  799. aimlapi/types/responses/response_input_image_content.py +3 -0
  800. aimlapi/types/responses/response_input_image_content_param.py +3 -0
  801. aimlapi/types/responses/response_input_image_param.py +3 -0
  802. aimlapi/types/responses/response_input_item.py +3 -0
  803. aimlapi/types/responses/response_input_item_param.py +3 -0
  804. aimlapi/types/responses/response_input_message_content_list.py +3 -0
  805. aimlapi/types/responses/response_input_message_content_list_param.py +3 -0
  806. aimlapi/types/responses/response_input_message_item.py +3 -0
  807. aimlapi/types/responses/response_input_param.py +3 -0
  808. aimlapi/types/responses/response_input_text.py +3 -0
  809. aimlapi/types/responses/response_input_text_content.py +3 -0
  810. aimlapi/types/responses/response_input_text_content_param.py +3 -0
  811. aimlapi/types/responses/response_input_text_param.py +3 -0
  812. aimlapi/types/responses/response_item.py +3 -0
  813. aimlapi/types/responses/response_item_list.py +3 -0
  814. aimlapi/types/responses/response_mcp_call_arguments_delta_event.py +3 -0
  815. aimlapi/types/responses/response_mcp_call_arguments_done_event.py +3 -0
  816. aimlapi/types/responses/response_mcp_call_completed_event.py +3 -0
  817. aimlapi/types/responses/response_mcp_call_failed_event.py +3 -0
  818. aimlapi/types/responses/response_mcp_call_in_progress_event.py +3 -0
  819. aimlapi/types/responses/response_mcp_list_tools_completed_event.py +3 -0
  820. aimlapi/types/responses/response_mcp_list_tools_failed_event.py +3 -0
  821. aimlapi/types/responses/response_mcp_list_tools_in_progress_event.py +3 -0
  822. aimlapi/types/responses/response_output_item.py +3 -0
  823. aimlapi/types/responses/response_output_item_added_event.py +3 -0
  824. aimlapi/types/responses/response_output_item_done_event.py +3 -0
  825. aimlapi/types/responses/response_output_message.py +3 -0
  826. aimlapi/types/responses/response_output_message_param.py +3 -0
  827. aimlapi/types/responses/response_output_refusal.py +3 -0
  828. aimlapi/types/responses/response_output_refusal_param.py +3 -0
  829. aimlapi/types/responses/response_output_text.py +3 -0
  830. aimlapi/types/responses/response_output_text_annotation_added_event.py +3 -0
  831. aimlapi/types/responses/response_output_text_param.py +3 -0
  832. aimlapi/types/responses/response_prompt.py +3 -0
  833. aimlapi/types/responses/response_prompt_param.py +3 -0
  834. aimlapi/types/responses/response_queued_event.py +3 -0
  835. aimlapi/types/responses/response_reasoning_item.py +3 -0
  836. aimlapi/types/responses/response_reasoning_item_param.py +3 -0
  837. aimlapi/types/responses/response_reasoning_summary_part_added_event.py +3 -0
  838. aimlapi/types/responses/response_reasoning_summary_part_done_event.py +3 -0
  839. aimlapi/types/responses/response_reasoning_summary_text_delta_event.py +3 -0
  840. aimlapi/types/responses/response_reasoning_summary_text_done_event.py +3 -0
  841. aimlapi/types/responses/response_reasoning_text_delta_event.py +3 -0
  842. aimlapi/types/responses/response_reasoning_text_done_event.py +3 -0
  843. aimlapi/types/responses/response_refusal_delta_event.py +3 -0
  844. aimlapi/types/responses/response_refusal_done_event.py +3 -0
  845. aimlapi/types/responses/response_retrieve_params.py +3 -0
  846. aimlapi/types/responses/response_status.py +3 -0
  847. aimlapi/types/responses/response_stream_event.py +3 -0
  848. aimlapi/types/responses/response_text_config.py +3 -0
  849. aimlapi/types/responses/response_text_config_param.py +3 -0
  850. aimlapi/types/responses/response_text_delta_event.py +3 -0
  851. aimlapi/types/responses/response_text_done_event.py +3 -0
  852. aimlapi/types/responses/response_usage.py +3 -0
  853. aimlapi/types/responses/response_web_search_call_completed_event.py +3 -0
  854. aimlapi/types/responses/response_web_search_call_in_progress_event.py +3 -0
  855. aimlapi/types/responses/response_web_search_call_searching_event.py +3 -0
  856. aimlapi/types/responses/tool.py +3 -0
  857. aimlapi/types/responses/tool_choice_allowed.py +3 -0
  858. aimlapi/types/responses/tool_choice_allowed_param.py +3 -0
  859. aimlapi/types/responses/tool_choice_custom.py +3 -0
  860. aimlapi/types/responses/tool_choice_custom_param.py +3 -0
  861. aimlapi/types/responses/tool_choice_function.py +3 -0
  862. aimlapi/types/responses/tool_choice_function_param.py +3 -0
  863. aimlapi/types/responses/tool_choice_mcp.py +3 -0
  864. aimlapi/types/responses/tool_choice_mcp_param.py +3 -0
  865. aimlapi/types/responses/tool_choice_options.py +3 -0
  866. aimlapi/types/responses/tool_choice_types.py +3 -0
  867. aimlapi/types/responses/tool_choice_types_param.py +3 -0
  868. aimlapi/types/responses/tool_param.py +3 -0
  869. aimlapi/types/responses/web_search_preview_tool.py +3 -0
  870. aimlapi/types/responses/web_search_preview_tool_param.py +3 -0
  871. aimlapi/types/responses/web_search_tool.py +3 -0
  872. aimlapi/types/responses/web_search_tool_param.py +3 -0
  873. aimlapi/types/shared/__init__.py +3 -0
  874. aimlapi/types/shared/all_models.py +3 -0
  875. aimlapi/types/shared/chat_model.py +3 -0
  876. aimlapi/types/shared/comparison_filter.py +3 -0
  877. aimlapi/types/shared/compound_filter.py +3 -0
  878. aimlapi/types/shared/custom_tool_input_format.py +3 -0
  879. aimlapi/types/shared/error_object.py +3 -0
  880. aimlapi/types/shared/function_definition.py +3 -0
  881. aimlapi/types/shared/function_parameters.py +3 -0
  882. aimlapi/types/shared/metadata.py +3 -0
  883. aimlapi/types/shared/reasoning.py +3 -0
  884. aimlapi/types/shared/reasoning_effort.py +3 -0
  885. aimlapi/types/shared/response_format_json_object.py +3 -0
  886. aimlapi/types/shared/response_format_json_schema.py +3 -0
  887. aimlapi/types/shared/response_format_text.py +3 -0
  888. aimlapi/types/shared/response_format_text_grammar.py +3 -0
  889. aimlapi/types/shared/response_format_text_python.py +3 -0
  890. aimlapi/types/shared/responses_model.py +3 -0
  891. aimlapi/types/shared_params/__init__.py +3 -0
  892. aimlapi/types/shared_params/chat_model.py +3 -0
  893. aimlapi/types/shared_params/comparison_filter.py +3 -0
  894. aimlapi/types/shared_params/compound_filter.py +3 -0
  895. aimlapi/types/shared_params/custom_tool_input_format.py +3 -0
  896. aimlapi/types/shared_params/function_definition.py +3 -0
  897. aimlapi/types/shared_params/function_parameters.py +3 -0
  898. aimlapi/types/shared_params/metadata.py +3 -0
  899. aimlapi/types/shared_params/reasoning.py +3 -0
  900. aimlapi/types/shared_params/reasoning_effort.py +3 -0
  901. aimlapi/types/shared_params/response_format_json_object.py +3 -0
  902. aimlapi/types/shared_params/response_format_json_schema.py +3 -0
  903. aimlapi/types/shared_params/response_format_text.py +3 -0
  904. aimlapi/types/shared_params/responses_model.py +3 -0
  905. aimlapi/types/static_file_chunking_strategy.py +3 -0
  906. aimlapi/types/static_file_chunking_strategy_object.py +3 -0
  907. aimlapi/types/static_file_chunking_strategy_object_param.py +3 -0
  908. aimlapi/types/static_file_chunking_strategy_param.py +3 -0
  909. aimlapi/types/upload.py +3 -0
  910. aimlapi/types/upload_complete_params.py +3 -0
  911. aimlapi/types/upload_create_params.py +3 -0
  912. aimlapi/types/uploads/__init__.py +3 -0
  913. aimlapi/types/uploads/part_create_params.py +3 -0
  914. aimlapi/types/uploads/upload_part.py +3 -0
  915. aimlapi/types/vector_store.py +3 -0
  916. aimlapi/types/vector_store_create_params.py +3 -0
  917. aimlapi/types/vector_store_deleted.py +3 -0
  918. aimlapi/types/vector_store_list_params.py +3 -0
  919. aimlapi/types/vector_store_search_params.py +3 -0
  920. aimlapi/types/vector_store_search_response.py +3 -0
  921. aimlapi/types/vector_store_update_params.py +3 -0
  922. aimlapi/types/vector_stores/__init__.py +3 -0
  923. aimlapi/types/vector_stores/file_batch_create_params.py +3 -0
  924. aimlapi/types/vector_stores/file_batch_list_files_params.py +3 -0
  925. aimlapi/types/vector_stores/file_content_response.py +3 -0
  926. aimlapi/types/vector_stores/file_create_params.py +3 -0
  927. aimlapi/types/vector_stores/file_list_params.py +3 -0
  928. aimlapi/types/vector_stores/file_update_params.py +3 -0
  929. aimlapi/types/vector_stores/vector_store_file.py +3 -0
  930. aimlapi/types/vector_stores/vector_store_file_batch.py +3 -0
  931. aimlapi/types/vector_stores/vector_store_file_deleted.py +3 -0
  932. aimlapi/types/video.py +3 -0
  933. aimlapi/types/video_create_error.py +3 -0
  934. aimlapi/types/video_create_params.py +3 -0
  935. aimlapi/types/video_delete_response.py +3 -0
  936. aimlapi/types/video_download_content_params.py +3 -0
  937. aimlapi/types/video_list_params.py +3 -0
  938. aimlapi/types/video_model.py +3 -0
  939. aimlapi/types/video_remix_params.py +3 -0
  940. aimlapi/types/video_seconds.py +3 -0
  941. aimlapi/types/video_size.py +3 -0
  942. aimlapi/types/webhooks/__init__.py +3 -0
  943. aimlapi/types/webhooks/batch_cancelled_webhook_event.py +3 -0
  944. aimlapi/types/webhooks/batch_completed_webhook_event.py +3 -0
  945. aimlapi/types/webhooks/batch_expired_webhook_event.py +3 -0
  946. aimlapi/types/webhooks/batch_failed_webhook_event.py +3 -0
  947. aimlapi/types/webhooks/eval_run_canceled_webhook_event.py +3 -0
  948. aimlapi/types/webhooks/eval_run_failed_webhook_event.py +3 -0
  949. aimlapi/types/webhooks/eval_run_succeeded_webhook_event.py +3 -0
  950. aimlapi/types/webhooks/fine_tuning_job_cancelled_webhook_event.py +3 -0
  951. aimlapi/types/webhooks/fine_tuning_job_failed_webhook_event.py +3 -0
  952. aimlapi/types/webhooks/fine_tuning_job_succeeded_webhook_event.py +3 -0
  953. aimlapi/types/webhooks/realtime_call_incoming_webhook_event.py +3 -0
  954. aimlapi/types/webhooks/response_cancelled_webhook_event.py +3 -0
  955. aimlapi/types/webhooks/response_completed_webhook_event.py +3 -0
  956. aimlapi/types/webhooks/response_failed_webhook_event.py +3 -0
  957. aimlapi/types/webhooks/response_incomplete_webhook_event.py +3 -0
  958. aimlapi/types/webhooks/unwrap_webhook_event.py +3 -0
  959. aimlapi/types/websocket_connection_options.py +3 -0
  960. aimlapi/version.py +3 -0
  961. aimlapi_sdk_python-2.8.1b0.dist-info/METADATA +886 -0
  962. aimlapi_sdk_python-2.8.1b0.dist-info/RECORD +1958 -0
  963. aimlapi_sdk_python-2.8.1b0.dist-info/WHEEL +4 -0
  964. aimlapi_sdk_python-2.8.1b0.dist-info/entry_points.txt +2 -0
  965. aimlapi_sdk_python-2.8.1b0.dist-info/licenses/LICENSE +201 -0
  966. openai/__init__.py +395 -0
  967. openai/__main__.py +3 -0
  968. openai/_base_client.py +2027 -0
  969. openai/_client.py +1272 -0
  970. openai/_compat.py +231 -0
  971. openai/_constants.py +14 -0
  972. openai/_exceptions.py +161 -0
  973. openai/_extras/__init__.py +3 -0
  974. openai/_extras/_common.py +21 -0
  975. openai/_extras/numpy_proxy.py +37 -0
  976. openai/_extras/pandas_proxy.py +28 -0
  977. openai/_extras/sounddevice_proxy.py +28 -0
  978. openai/_files.py +123 -0
  979. openai/_legacy_response.py +488 -0
  980. openai/_models.py +897 -0
  981. openai/_module_client.py +173 -0
  982. openai/_qs.py +150 -0
  983. openai/_resource.py +43 -0
  984. openai/_response.py +848 -0
  985. openai/_streaming.py +408 -0
  986. openai/_types.py +264 -0
  987. openai/_utils/__init__.py +67 -0
  988. openai/_utils/_compat.py +45 -0
  989. openai/_utils/_datetime_parse.py +136 -0
  990. openai/_utils/_logs.py +42 -0
  991. openai/_utils/_proxy.py +65 -0
  992. openai/_utils/_reflection.py +45 -0
  993. openai/_utils/_resources_proxy.py +24 -0
  994. openai/_utils/_streams.py +12 -0
  995. openai/_utils/_sync.py +58 -0
  996. openai/_utils/_transform.py +457 -0
  997. openai/_utils/_typing.py +156 -0
  998. openai/_utils/_utils.py +437 -0
  999. openai/_version.py +4 -0
  1000. openai/cli/__init__.py +1 -0
  1001. openai/cli/_api/__init__.py +1 -0
  1002. openai/cli/_api/_main.py +17 -0
  1003. openai/cli/_api/audio.py +108 -0
  1004. openai/cli/_api/chat/__init__.py +13 -0
  1005. openai/cli/_api/chat/completions.py +160 -0
  1006. openai/cli/_api/completions.py +173 -0
  1007. openai/cli/_api/files.py +80 -0
  1008. openai/cli/_api/fine_tuning/__init__.py +13 -0
  1009. openai/cli/_api/fine_tuning/jobs.py +170 -0
  1010. openai/cli/_api/image.py +139 -0
  1011. openai/cli/_api/models.py +45 -0
  1012. openai/cli/_cli.py +233 -0
  1013. openai/cli/_errors.py +21 -0
  1014. openai/cli/_models.py +17 -0
  1015. openai/cli/_progress.py +59 -0
  1016. openai/cli/_tools/__init__.py +1 -0
  1017. openai/cli/_tools/_main.py +17 -0
  1018. openai/cli/_tools/fine_tunes.py +63 -0
  1019. openai/cli/_tools/migrate.py +164 -0
  1020. openai/cli/_utils.py +45 -0
  1021. openai/helpers/__init__.py +4 -0
  1022. openai/helpers/local_audio_player.py +165 -0
  1023. openai/helpers/microphone.py +100 -0
  1024. openai/lib/.keep +4 -0
  1025. openai/lib/__init__.py +2 -0
  1026. openai/lib/_old_api.py +72 -0
  1027. openai/lib/_parsing/__init__.py +12 -0
  1028. openai/lib/_parsing/_completions.py +305 -0
  1029. openai/lib/_parsing/_responses.py +180 -0
  1030. openai/lib/_pydantic.py +155 -0
  1031. openai/lib/_realtime.py +92 -0
  1032. openai/lib/_tools.py +66 -0
  1033. openai/lib/_validators.py +809 -0
  1034. openai/lib/azure.py +647 -0
  1035. openai/lib/streaming/__init__.py +8 -0
  1036. openai/lib/streaming/_assistants.py +1038 -0
  1037. openai/lib/streaming/_deltas.py +64 -0
  1038. openai/lib/streaming/chat/__init__.py +27 -0
  1039. openai/lib/streaming/chat/_completions.py +770 -0
  1040. openai/lib/streaming/chat/_events.py +123 -0
  1041. openai/lib/streaming/chat/_types.py +20 -0
  1042. openai/lib/streaming/responses/__init__.py +13 -0
  1043. openai/lib/streaming/responses/_events.py +148 -0
  1044. openai/lib/streaming/responses/_responses.py +372 -0
  1045. openai/lib/streaming/responses/_types.py +10 -0
  1046. openai/pagination.py +190 -0
  1047. openai/py.typed +0 -0
  1048. openai/resources/__init__.py +229 -0
  1049. openai/resources/audio/__init__.py +61 -0
  1050. openai/resources/audio/audio.py +166 -0
  1051. openai/resources/audio/speech.py +255 -0
  1052. openai/resources/audio/transcriptions.py +980 -0
  1053. openai/resources/audio/translations.py +367 -0
  1054. openai/resources/batches.py +530 -0
  1055. openai/resources/beta/__init__.py +61 -0
  1056. openai/resources/beta/assistants.py +1049 -0
  1057. openai/resources/beta/beta.py +187 -0
  1058. openai/resources/beta/chatkit/__init__.py +47 -0
  1059. openai/resources/beta/chatkit/chatkit.py +134 -0
  1060. openai/resources/beta/chatkit/sessions.py +301 -0
  1061. openai/resources/beta/chatkit/threads.py +521 -0
  1062. openai/resources/beta/realtime/__init__.py +47 -0
  1063. openai/resources/beta/realtime/realtime.py +1094 -0
  1064. openai/resources/beta/realtime/sessions.py +424 -0
  1065. openai/resources/beta/realtime/transcription_sessions.py +282 -0
  1066. openai/resources/beta/threads/__init__.py +47 -0
  1067. openai/resources/beta/threads/messages.py +718 -0
  1068. openai/resources/beta/threads/runs/__init__.py +33 -0
  1069. openai/resources/beta/threads/runs/runs.py +3122 -0
  1070. openai/resources/beta/threads/runs/steps.py +399 -0
  1071. openai/resources/beta/threads/threads.py +1935 -0
  1072. openai/resources/chat/__init__.py +33 -0
  1073. openai/resources/chat/chat.py +102 -0
  1074. openai/resources/chat/completions/__init__.py +33 -0
  1075. openai/resources/chat/completions/completions.py +3143 -0
  1076. openai/resources/chat/completions/messages.py +212 -0
  1077. openai/resources/completions.py +1160 -0
  1078. openai/resources/containers/__init__.py +33 -0
  1079. openai/resources/containers/containers.py +510 -0
  1080. openai/resources/containers/files/__init__.py +33 -0
  1081. openai/resources/containers/files/content.py +173 -0
  1082. openai/resources/containers/files/files.py +545 -0
  1083. openai/resources/conversations/__init__.py +33 -0
  1084. openai/resources/conversations/conversations.py +486 -0
  1085. openai/resources/conversations/items.py +557 -0
  1086. openai/resources/embeddings.py +298 -0
  1087. openai/resources/evals/__init__.py +33 -0
  1088. openai/resources/evals/evals.py +662 -0
  1089. openai/resources/evals/runs/__init__.py +33 -0
  1090. openai/resources/evals/runs/output_items.py +315 -0
  1091. openai/resources/evals/runs/runs.py +634 -0
  1092. openai/resources/files.py +770 -0
  1093. openai/resources/fine_tuning/__init__.py +61 -0
  1094. openai/resources/fine_tuning/alpha/__init__.py +33 -0
  1095. openai/resources/fine_tuning/alpha/alpha.py +102 -0
  1096. openai/resources/fine_tuning/alpha/graders.py +282 -0
  1097. openai/resources/fine_tuning/checkpoints/__init__.py +33 -0
  1098. openai/resources/fine_tuning/checkpoints/checkpoints.py +102 -0
  1099. openai/resources/fine_tuning/checkpoints/permissions.py +418 -0
  1100. openai/resources/fine_tuning/fine_tuning.py +166 -0
  1101. openai/resources/fine_tuning/jobs/__init__.py +33 -0
  1102. openai/resources/fine_tuning/jobs/checkpoints.py +199 -0
  1103. openai/resources/fine_tuning/jobs/jobs.py +918 -0
  1104. openai/resources/images.py +1858 -0
  1105. openai/resources/models.py +306 -0
  1106. openai/resources/moderations.py +197 -0
  1107. openai/resources/realtime/__init__.py +47 -0
  1108. openai/resources/realtime/calls.py +764 -0
  1109. openai/resources/realtime/client_secrets.py +189 -0
  1110. openai/resources/realtime/realtime.py +1079 -0
  1111. openai/resources/responses/__init__.py +47 -0
  1112. openai/resources/responses/input_items.py +226 -0
  1113. openai/resources/responses/input_tokens.py +309 -0
  1114. openai/resources/responses/responses.py +3130 -0
  1115. openai/resources/uploads/__init__.py +33 -0
  1116. openai/resources/uploads/parts.py +205 -0
  1117. openai/resources/uploads/uploads.py +719 -0
  1118. openai/resources/vector_stores/__init__.py +47 -0
  1119. openai/resources/vector_stores/file_batches.py +813 -0
  1120. openai/resources/vector_stores/files.py +939 -0
  1121. openai/resources/vector_stores/vector_stores.py +875 -0
  1122. openai/resources/videos.py +847 -0
  1123. openai/resources/webhooks.py +210 -0
  1124. openai/types/__init__.py +115 -0
  1125. openai/types/audio/__init__.py +23 -0
  1126. openai/types/audio/speech_create_params.py +57 -0
  1127. openai/types/audio/speech_model.py +7 -0
  1128. openai/types/audio/transcription.py +71 -0
  1129. openai/types/audio/transcription_create_params.py +172 -0
  1130. openai/types/audio/transcription_create_response.py +12 -0
  1131. openai/types/audio/transcription_diarized.py +63 -0
  1132. openai/types/audio/transcription_diarized_segment.py +32 -0
  1133. openai/types/audio/transcription_include.py +7 -0
  1134. openai/types/audio/transcription_segment.py +49 -0
  1135. openai/types/audio/transcription_stream_event.py +16 -0
  1136. openai/types/audio/transcription_text_delta_event.py +41 -0
  1137. openai/types/audio/transcription_text_done_event.py +63 -0
  1138. openai/types/audio/transcription_text_segment_event.py +27 -0
  1139. openai/types/audio/transcription_verbose.py +38 -0
  1140. openai/types/audio/transcription_word.py +16 -0
  1141. openai/types/audio/translation.py +9 -0
  1142. openai/types/audio/translation_create_params.py +49 -0
  1143. openai/types/audio/translation_create_response.py +11 -0
  1144. openai/types/audio/translation_verbose.py +22 -0
  1145. openai/types/audio_model.py +7 -0
  1146. openai/types/audio_response_format.py +7 -0
  1147. openai/types/auto_file_chunking_strategy_param.py +12 -0
  1148. openai/types/batch.py +104 -0
  1149. openai/types/batch_create_params.py +72 -0
  1150. openai/types/batch_error.py +21 -0
  1151. openai/types/batch_list_params.py +24 -0
  1152. openai/types/batch_request_counts.py +16 -0
  1153. openai/types/batch_usage.py +35 -0
  1154. openai/types/beta/__init__.py +34 -0
  1155. openai/types/beta/assistant.py +134 -0
  1156. openai/types/beta/assistant_create_params.py +220 -0
  1157. openai/types/beta/assistant_deleted.py +15 -0
  1158. openai/types/beta/assistant_list_params.py +39 -0
  1159. openai/types/beta/assistant_response_format_option.py +14 -0
  1160. openai/types/beta/assistant_response_format_option_param.py +16 -0
  1161. openai/types/beta/assistant_stream_event.py +294 -0
  1162. openai/types/beta/assistant_tool.py +15 -0
  1163. openai/types/beta/assistant_tool_choice.py +16 -0
  1164. openai/types/beta/assistant_tool_choice_function.py +10 -0
  1165. openai/types/beta/assistant_tool_choice_function_param.py +12 -0
  1166. openai/types/beta/assistant_tool_choice_option.py +10 -0
  1167. openai/types/beta/assistant_tool_choice_option_param.py +12 -0
  1168. openai/types/beta/assistant_tool_choice_param.py +16 -0
  1169. openai/types/beta/assistant_tool_param.py +14 -0
  1170. openai/types/beta/assistant_update_params.py +191 -0
  1171. openai/types/beta/chat/__init__.py +3 -0
  1172. openai/types/beta/chatkit/__init__.py +32 -0
  1173. openai/types/beta/chatkit/chat_session.py +43 -0
  1174. openai/types/beta/chatkit/chat_session_automatic_thread_titling.py +10 -0
  1175. openai/types/beta/chatkit/chat_session_chatkit_configuration.py +19 -0
  1176. openai/types/beta/chatkit/chat_session_chatkit_configuration_param.py +59 -0
  1177. openai/types/beta/chatkit/chat_session_expires_after_param.py +15 -0
  1178. openai/types/beta/chatkit/chat_session_file_upload.py +18 -0
  1179. openai/types/beta/chatkit/chat_session_history.py +18 -0
  1180. openai/types/beta/chatkit/chat_session_rate_limits.py +10 -0
  1181. openai/types/beta/chatkit/chat_session_rate_limits_param.py +12 -0
  1182. openai/types/beta/chatkit/chat_session_status.py +7 -0
  1183. openai/types/beta/chatkit/chat_session_workflow_param.py +34 -0
  1184. openai/types/beta/chatkit/chatkit_attachment.py +25 -0
  1185. openai/types/beta/chatkit/chatkit_response_output_text.py +62 -0
  1186. openai/types/beta/chatkit/chatkit_thread.py +56 -0
  1187. openai/types/beta/chatkit/chatkit_thread_assistant_message_item.py +29 -0
  1188. openai/types/beta/chatkit/chatkit_thread_item_list.py +144 -0
  1189. openai/types/beta/chatkit/chatkit_thread_user_message_item.py +77 -0
  1190. openai/types/beta/chatkit/chatkit_widget_item.py +27 -0
  1191. openai/types/beta/chatkit/session_create_params.py +35 -0
  1192. openai/types/beta/chatkit/thread_delete_response.py +18 -0
  1193. openai/types/beta/chatkit/thread_list_items_params.py +27 -0
  1194. openai/types/beta/chatkit/thread_list_params.py +33 -0
  1195. openai/types/beta/chatkit_workflow.py +32 -0
  1196. openai/types/beta/code_interpreter_tool.py +12 -0
  1197. openai/types/beta/code_interpreter_tool_param.py +12 -0
  1198. openai/types/beta/file_search_tool.py +55 -0
  1199. openai/types/beta/file_search_tool_param.py +54 -0
  1200. openai/types/beta/function_tool.py +15 -0
  1201. openai/types/beta/function_tool_param.py +16 -0
  1202. openai/types/beta/realtime/__init__.py +96 -0
  1203. openai/types/beta/realtime/conversation_created_event.py +27 -0
  1204. openai/types/beta/realtime/conversation_item.py +61 -0
  1205. openai/types/beta/realtime/conversation_item_content.py +32 -0
  1206. openai/types/beta/realtime/conversation_item_content_param.py +31 -0
  1207. openai/types/beta/realtime/conversation_item_create_event.py +29 -0
  1208. openai/types/beta/realtime/conversation_item_create_event_param.py +29 -0
  1209. openai/types/beta/realtime/conversation_item_created_event.py +27 -0
  1210. openai/types/beta/realtime/conversation_item_delete_event.py +19 -0
  1211. openai/types/beta/realtime/conversation_item_delete_event_param.py +18 -0
  1212. openai/types/beta/realtime/conversation_item_deleted_event.py +18 -0
  1213. openai/types/beta/realtime/conversation_item_input_audio_transcription_completed_event.py +87 -0
  1214. openai/types/beta/realtime/conversation_item_input_audio_transcription_delta_event.py +39 -0
  1215. openai/types/beta/realtime/conversation_item_input_audio_transcription_failed_event.py +39 -0
  1216. openai/types/beta/realtime/conversation_item_param.py +62 -0
  1217. openai/types/beta/realtime/conversation_item_retrieve_event.py +19 -0
  1218. openai/types/beta/realtime/conversation_item_retrieve_event_param.py +18 -0
  1219. openai/types/beta/realtime/conversation_item_truncate_event.py +32 -0
  1220. openai/types/beta/realtime/conversation_item_truncate_event_param.py +31 -0
  1221. openai/types/beta/realtime/conversation_item_truncated_event.py +24 -0
  1222. openai/types/beta/realtime/conversation_item_with_reference.py +87 -0
  1223. openai/types/beta/realtime/conversation_item_with_reference_param.py +87 -0
  1224. openai/types/beta/realtime/error_event.py +36 -0
  1225. openai/types/beta/realtime/input_audio_buffer_append_event.py +23 -0
  1226. openai/types/beta/realtime/input_audio_buffer_append_event_param.py +22 -0
  1227. openai/types/beta/realtime/input_audio_buffer_clear_event.py +16 -0
  1228. openai/types/beta/realtime/input_audio_buffer_clear_event_param.py +15 -0
  1229. openai/types/beta/realtime/input_audio_buffer_cleared_event.py +15 -0
  1230. openai/types/beta/realtime/input_audio_buffer_commit_event.py +16 -0
  1231. openai/types/beta/realtime/input_audio_buffer_commit_event_param.py +15 -0
  1232. openai/types/beta/realtime/input_audio_buffer_committed_event.py +25 -0
  1233. openai/types/beta/realtime/input_audio_buffer_speech_started_event.py +26 -0
  1234. openai/types/beta/realtime/input_audio_buffer_speech_stopped_event.py +25 -0
  1235. openai/types/beta/realtime/rate_limits_updated_event.py +33 -0
  1236. openai/types/beta/realtime/realtime_client_event.py +47 -0
  1237. openai/types/beta/realtime/realtime_client_event_param.py +44 -0
  1238. openai/types/beta/realtime/realtime_connect_params.py +11 -0
  1239. openai/types/beta/realtime/realtime_response.py +87 -0
  1240. openai/types/beta/realtime/realtime_response_status.py +39 -0
  1241. openai/types/beta/realtime/realtime_response_usage.py +52 -0
  1242. openai/types/beta/realtime/realtime_server_event.py +133 -0
  1243. openai/types/beta/realtime/response_audio_delta_event.py +30 -0
  1244. openai/types/beta/realtime/response_audio_done_event.py +27 -0
  1245. openai/types/beta/realtime/response_audio_transcript_delta_event.py +30 -0
  1246. openai/types/beta/realtime/response_audio_transcript_done_event.py +30 -0
  1247. openai/types/beta/realtime/response_cancel_event.py +22 -0
  1248. openai/types/beta/realtime/response_cancel_event_param.py +21 -0
  1249. openai/types/beta/realtime/response_content_part_added_event.py +45 -0
  1250. openai/types/beta/realtime/response_content_part_done_event.py +45 -0
  1251. openai/types/beta/realtime/response_create_event.py +121 -0
  1252. openai/types/beta/realtime/response_create_event_param.py +122 -0
  1253. openai/types/beta/realtime/response_created_event.py +19 -0
  1254. openai/types/beta/realtime/response_done_event.py +19 -0
  1255. openai/types/beta/realtime/response_function_call_arguments_delta_event.py +30 -0
  1256. openai/types/beta/realtime/response_function_call_arguments_done_event.py +30 -0
  1257. openai/types/beta/realtime/response_output_item_added_event.py +25 -0
  1258. openai/types/beta/realtime/response_output_item_done_event.py +25 -0
  1259. openai/types/beta/realtime/response_text_delta_event.py +30 -0
  1260. openai/types/beta/realtime/response_text_done_event.py +30 -0
  1261. openai/types/beta/realtime/session.py +279 -0
  1262. openai/types/beta/realtime/session_create_params.py +298 -0
  1263. openai/types/beta/realtime/session_create_response.py +196 -0
  1264. openai/types/beta/realtime/session_created_event.py +19 -0
  1265. openai/types/beta/realtime/session_update_event.py +312 -0
  1266. openai/types/beta/realtime/session_update_event_param.py +310 -0
  1267. openai/types/beta/realtime/session_updated_event.py +19 -0
  1268. openai/types/beta/realtime/transcription_session.py +100 -0
  1269. openai/types/beta/realtime/transcription_session_create_params.py +173 -0
  1270. openai/types/beta/realtime/transcription_session_update.py +185 -0
  1271. openai/types/beta/realtime/transcription_session_update_param.py +185 -0
  1272. openai/types/beta/realtime/transcription_session_updated_event.py +24 -0
  1273. openai/types/beta/thread.py +63 -0
  1274. openai/types/beta/thread_create_and_run_params.py +397 -0
  1275. openai/types/beta/thread_create_params.py +186 -0
  1276. openai/types/beta/thread_deleted.py +15 -0
  1277. openai/types/beta/thread_update_params.py +56 -0
  1278. openai/types/beta/threads/__init__.py +46 -0
  1279. openai/types/beta/threads/annotation.py +12 -0
  1280. openai/types/beta/threads/annotation_delta.py +14 -0
  1281. openai/types/beta/threads/file_citation_annotation.py +26 -0
  1282. openai/types/beta/threads/file_citation_delta_annotation.py +33 -0
  1283. openai/types/beta/threads/file_path_annotation.py +26 -0
  1284. openai/types/beta/threads/file_path_delta_annotation.py +30 -0
  1285. openai/types/beta/threads/image_file.py +23 -0
  1286. openai/types/beta/threads/image_file_content_block.py +15 -0
  1287. openai/types/beta/threads/image_file_content_block_param.py +16 -0
  1288. openai/types/beta/threads/image_file_delta.py +23 -0
  1289. openai/types/beta/threads/image_file_delta_block.py +19 -0
  1290. openai/types/beta/threads/image_file_param.py +22 -0
  1291. openai/types/beta/threads/image_url.py +23 -0
  1292. openai/types/beta/threads/image_url_content_block.py +15 -0
  1293. openai/types/beta/threads/image_url_content_block_param.py +16 -0
  1294. openai/types/beta/threads/image_url_delta.py +22 -0
  1295. openai/types/beta/threads/image_url_delta_block.py +19 -0
  1296. openai/types/beta/threads/image_url_param.py +22 -0
  1297. openai/types/beta/threads/message.py +103 -0
  1298. openai/types/beta/threads/message_content.py +18 -0
  1299. openai/types/beta/threads/message_content_delta.py +17 -0
  1300. openai/types/beta/threads/message_content_part_param.py +14 -0
  1301. openai/types/beta/threads/message_create_params.py +55 -0
  1302. openai/types/beta/threads/message_deleted.py +15 -0
  1303. openai/types/beta/threads/message_delta.py +17 -0
  1304. openai/types/beta/threads/message_delta_event.py +19 -0
  1305. openai/types/beta/threads/message_list_params.py +42 -0
  1306. openai/types/beta/threads/message_update_params.py +24 -0
  1307. openai/types/beta/threads/refusal_content_block.py +14 -0
  1308. openai/types/beta/threads/refusal_delta_block.py +18 -0
  1309. openai/types/beta/threads/required_action_function_tool_call.py +34 -0
  1310. openai/types/beta/threads/run.py +245 -0
  1311. openai/types/beta/threads/run_create_params.py +268 -0
  1312. openai/types/beta/threads/run_list_params.py +39 -0
  1313. openai/types/beta/threads/run_status.py +17 -0
  1314. openai/types/beta/threads/run_submit_tool_outputs_params.py +52 -0
  1315. openai/types/beta/threads/run_update_params.py +24 -0
  1316. openai/types/beta/threads/runs/__init__.py +24 -0
  1317. openai/types/beta/threads/runs/code_interpreter_logs.py +19 -0
  1318. openai/types/beta/threads/runs/code_interpreter_output_image.py +26 -0
  1319. openai/types/beta/threads/runs/code_interpreter_tool_call.py +70 -0
  1320. openai/types/beta/threads/runs/code_interpreter_tool_call_delta.py +44 -0
  1321. openai/types/beta/threads/runs/file_search_tool_call.py +78 -0
  1322. openai/types/beta/threads/runs/file_search_tool_call_delta.py +25 -0
  1323. openai/types/beta/threads/runs/function_tool_call.py +38 -0
  1324. openai/types/beta/threads/runs/function_tool_call_delta.py +41 -0
  1325. openai/types/beta/threads/runs/message_creation_step_details.py +19 -0
  1326. openai/types/beta/threads/runs/run_step.py +115 -0
  1327. openai/types/beta/threads/runs/run_step_delta.py +20 -0
  1328. openai/types/beta/threads/runs/run_step_delta_event.py +19 -0
  1329. openai/types/beta/threads/runs/run_step_delta_message_delta.py +20 -0
  1330. openai/types/beta/threads/runs/run_step_include.py +7 -0
  1331. openai/types/beta/threads/runs/step_list_params.py +56 -0
  1332. openai/types/beta/threads/runs/step_retrieve_params.py +28 -0
  1333. openai/types/beta/threads/runs/tool_call.py +15 -0
  1334. openai/types/beta/threads/runs/tool_call_delta.py +16 -0
  1335. openai/types/beta/threads/runs/tool_call_delta_object.py +21 -0
  1336. openai/types/beta/threads/runs/tool_calls_step_details.py +21 -0
  1337. openai/types/beta/threads/text.py +15 -0
  1338. openai/types/beta/threads/text_content_block.py +15 -0
  1339. openai/types/beta/threads/text_content_block_param.py +15 -0
  1340. openai/types/beta/threads/text_delta.py +15 -0
  1341. openai/types/beta/threads/text_delta_block.py +19 -0
  1342. openai/types/chat/__init__.py +102 -0
  1343. openai/types/chat/chat_completion.py +89 -0
  1344. openai/types/chat/chat_completion_allowed_tool_choice_param.py +17 -0
  1345. openai/types/chat/chat_completion_allowed_tools_param.py +32 -0
  1346. openai/types/chat/chat_completion_assistant_message_param.py +70 -0
  1347. openai/types/chat/chat_completion_audio.py +25 -0
  1348. openai/types/chat/chat_completion_audio_param.py +25 -0
  1349. openai/types/chat/chat_completion_chunk.py +166 -0
  1350. openai/types/chat/chat_completion_content_part_image.py +27 -0
  1351. openai/types/chat/chat_completion_content_part_image_param.py +26 -0
  1352. openai/types/chat/chat_completion_content_part_input_audio_param.py +22 -0
  1353. openai/types/chat/chat_completion_content_part_param.py +41 -0
  1354. openai/types/chat/chat_completion_content_part_refusal_param.py +15 -0
  1355. openai/types/chat/chat_completion_content_part_text.py +15 -0
  1356. openai/types/chat/chat_completion_content_part_text_param.py +15 -0
  1357. openai/types/chat/chat_completion_custom_tool_param.py +58 -0
  1358. openai/types/chat/chat_completion_deleted.py +18 -0
  1359. openai/types/chat/chat_completion_developer_message_param.py +25 -0
  1360. openai/types/chat/chat_completion_function_call_option_param.py +12 -0
  1361. openai/types/chat/chat_completion_function_message_param.py +19 -0
  1362. openai/types/chat/chat_completion_function_tool.py +15 -0
  1363. openai/types/chat/chat_completion_function_tool_param.py +16 -0
  1364. openai/types/chat/chat_completion_message.py +79 -0
  1365. openai/types/chat/chat_completion_message_custom_tool_call.py +26 -0
  1366. openai/types/chat/chat_completion_message_custom_tool_call_param.py +26 -0
  1367. openai/types/chat/chat_completion_message_function_tool_call.py +31 -0
  1368. openai/types/chat/chat_completion_message_function_tool_call_param.py +31 -0
  1369. openai/types/chat/chat_completion_message_param.py +24 -0
  1370. openai/types/chat/chat_completion_message_tool_call.py +17 -0
  1371. openai/types/chat/chat_completion_message_tool_call_param.py +14 -0
  1372. openai/types/chat/chat_completion_message_tool_call_union_param.py +15 -0
  1373. openai/types/chat/chat_completion_modality.py +7 -0
  1374. openai/types/chat/chat_completion_named_tool_choice_custom_param.py +19 -0
  1375. openai/types/chat/chat_completion_named_tool_choice_param.py +19 -0
  1376. openai/types/chat/chat_completion_prediction_content_param.py +25 -0
  1377. openai/types/chat/chat_completion_reasoning_effort.py +7 -0
  1378. openai/types/chat/chat_completion_role.py +7 -0
  1379. openai/types/chat/chat_completion_store_message.py +23 -0
  1380. openai/types/chat/chat_completion_stream_options_param.py +31 -0
  1381. openai/types/chat/chat_completion_system_message_param.py +25 -0
  1382. openai/types/chat/chat_completion_token_logprob.py +57 -0
  1383. openai/types/chat/chat_completion_tool_choice_option_param.py +19 -0
  1384. openai/types/chat/chat_completion_tool_message_param.py +21 -0
  1385. openai/types/chat/chat_completion_tool_param.py +14 -0
  1386. openai/types/chat/chat_completion_tool_union_param.py +13 -0
  1387. openai/types/chat/chat_completion_user_message_param.py +25 -0
  1388. openai/types/chat/completion_create_params.py +450 -0
  1389. openai/types/chat/completion_list_params.py +37 -0
  1390. openai/types/chat/completion_update_params.py +22 -0
  1391. openai/types/chat/completions/__init__.py +5 -0
  1392. openai/types/chat/completions/message_list_params.py +21 -0
  1393. openai/types/chat/parsed_chat_completion.py +40 -0
  1394. openai/types/chat/parsed_function_tool_call.py +29 -0
  1395. openai/types/chat_model.py +7 -0
  1396. openai/types/completion.py +37 -0
  1397. openai/types/completion_choice.py +35 -0
  1398. openai/types/completion_create_params.py +189 -0
  1399. openai/types/completion_usage.py +54 -0
  1400. openai/types/container_create_params.py +30 -0
  1401. openai/types/container_create_response.py +40 -0
  1402. openai/types/container_list_params.py +30 -0
  1403. openai/types/container_list_response.py +40 -0
  1404. openai/types/container_retrieve_response.py +40 -0
  1405. openai/types/containers/__init__.py +9 -0
  1406. openai/types/containers/file_create_params.py +17 -0
  1407. openai/types/containers/file_create_response.py +30 -0
  1408. openai/types/containers/file_list_params.py +30 -0
  1409. openai/types/containers/file_list_response.py +30 -0
  1410. openai/types/containers/file_retrieve_response.py +30 -0
  1411. openai/types/containers/files/__init__.py +3 -0
  1412. openai/types/conversations/__init__.py +27 -0
  1413. openai/types/conversations/computer_screenshot_content.py +22 -0
  1414. openai/types/conversations/conversation.py +30 -0
  1415. openai/types/conversations/conversation_create_params.py +29 -0
  1416. openai/types/conversations/conversation_deleted_resource.py +15 -0
  1417. openai/types/conversations/conversation_item.py +230 -0
  1418. openai/types/conversations/conversation_item_list.py +26 -0
  1419. openai/types/conversations/conversation_update_params.py +22 -0
  1420. openai/types/conversations/input_file_content.py +7 -0
  1421. openai/types/conversations/input_file_content_param.py +7 -0
  1422. openai/types/conversations/input_image_content.py +7 -0
  1423. openai/types/conversations/input_image_content_param.py +7 -0
  1424. openai/types/conversations/input_text_content.py +7 -0
  1425. openai/types/conversations/input_text_content_param.py +7 -0
  1426. openai/types/conversations/item_create_params.py +24 -0
  1427. openai/types/conversations/item_list_params.py +50 -0
  1428. openai/types/conversations/item_retrieve_params.py +22 -0
  1429. openai/types/conversations/message.py +66 -0
  1430. openai/types/conversations/output_text_content.py +7 -0
  1431. openai/types/conversations/output_text_content_param.py +7 -0
  1432. openai/types/conversations/refusal_content.py +7 -0
  1433. openai/types/conversations/refusal_content_param.py +7 -0
  1434. openai/types/conversations/summary_text_content.py +15 -0
  1435. openai/types/conversations/text_content.py +13 -0
  1436. openai/types/create_embedding_response.py +31 -0
  1437. openai/types/embedding.py +23 -0
  1438. openai/types/embedding_create_params.py +55 -0
  1439. openai/types/embedding_model.py +7 -0
  1440. openai/types/eval_create_params.py +202 -0
  1441. openai/types/eval_create_response.py +111 -0
  1442. openai/types/eval_custom_data_source_config.py +21 -0
  1443. openai/types/eval_delete_response.py +13 -0
  1444. openai/types/eval_list_params.py +27 -0
  1445. openai/types/eval_list_response.py +111 -0
  1446. openai/types/eval_retrieve_response.py +111 -0
  1447. openai/types/eval_stored_completions_data_source_config.py +32 -0
  1448. openai/types/eval_update_params.py +25 -0
  1449. openai/types/eval_update_response.py +111 -0
  1450. openai/types/evals/__init__.py +22 -0
  1451. openai/types/evals/create_eval_completions_run_data_source.py +236 -0
  1452. openai/types/evals/create_eval_completions_run_data_source_param.py +232 -0
  1453. openai/types/evals/create_eval_jsonl_run_data_source.py +42 -0
  1454. openai/types/evals/create_eval_jsonl_run_data_source_param.py +47 -0
  1455. openai/types/evals/eval_api_error.py +13 -0
  1456. openai/types/evals/run_cancel_response.py +417 -0
  1457. openai/types/evals/run_create_params.py +340 -0
  1458. openai/types/evals/run_create_response.py +417 -0
  1459. openai/types/evals/run_delete_response.py +15 -0
  1460. openai/types/evals/run_list_params.py +27 -0
  1461. openai/types/evals/run_list_response.py +417 -0
  1462. openai/types/evals/run_retrieve_response.py +417 -0
  1463. openai/types/evals/runs/__init__.py +7 -0
  1464. openai/types/evals/runs/output_item_list_params.py +30 -0
  1465. openai/types/evals/runs/output_item_list_response.py +134 -0
  1466. openai/types/evals/runs/output_item_retrieve_response.py +134 -0
  1467. openai/types/file_chunking_strategy.py +14 -0
  1468. openai/types/file_chunking_strategy_param.py +13 -0
  1469. openai/types/file_content.py +7 -0
  1470. openai/types/file_create_params.py +45 -0
  1471. openai/types/file_deleted.py +15 -0
  1472. openai/types/file_list_params.py +33 -0
  1473. openai/types/file_object.py +58 -0
  1474. openai/types/file_purpose.py +7 -0
  1475. openai/types/fine_tuning/__init__.py +26 -0
  1476. openai/types/fine_tuning/alpha/__init__.py +8 -0
  1477. openai/types/fine_tuning/alpha/grader_run_params.py +40 -0
  1478. openai/types/fine_tuning/alpha/grader_run_response.py +67 -0
  1479. openai/types/fine_tuning/alpha/grader_validate_params.py +24 -0
  1480. openai/types/fine_tuning/alpha/grader_validate_response.py +20 -0
  1481. openai/types/fine_tuning/checkpoints/__init__.py +9 -0
  1482. openai/types/fine_tuning/checkpoints/permission_create_params.py +14 -0
  1483. openai/types/fine_tuning/checkpoints/permission_create_response.py +21 -0
  1484. openai/types/fine_tuning/checkpoints/permission_delete_response.py +18 -0
  1485. openai/types/fine_tuning/checkpoints/permission_retrieve_params.py +21 -0
  1486. openai/types/fine_tuning/checkpoints/permission_retrieve_response.py +34 -0
  1487. openai/types/fine_tuning/dpo_hyperparameters.py +36 -0
  1488. openai/types/fine_tuning/dpo_hyperparameters_param.py +36 -0
  1489. openai/types/fine_tuning/dpo_method.py +13 -0
  1490. openai/types/fine_tuning/dpo_method_param.py +14 -0
  1491. openai/types/fine_tuning/fine_tuning_job.py +161 -0
  1492. openai/types/fine_tuning/fine_tuning_job_event.py +32 -0
  1493. openai/types/fine_tuning/fine_tuning_job_integration.py +5 -0
  1494. openai/types/fine_tuning/fine_tuning_job_wandb_integration.py +33 -0
  1495. openai/types/fine_tuning/fine_tuning_job_wandb_integration_object.py +21 -0
  1496. openai/types/fine_tuning/job_create_params.py +176 -0
  1497. openai/types/fine_tuning/job_list_events_params.py +15 -0
  1498. openai/types/fine_tuning/job_list_params.py +23 -0
  1499. openai/types/fine_tuning/jobs/__init__.py +6 -0
  1500. openai/types/fine_tuning/jobs/checkpoint_list_params.py +15 -0
  1501. openai/types/fine_tuning/jobs/fine_tuning_job_checkpoint.py +47 -0
  1502. openai/types/fine_tuning/reinforcement_hyperparameters.py +43 -0
  1503. openai/types/fine_tuning/reinforcement_hyperparameters_param.py +43 -0
  1504. openai/types/fine_tuning/reinforcement_method.py +24 -0
  1505. openai/types/fine_tuning/reinforcement_method_param.py +27 -0
  1506. openai/types/fine_tuning/supervised_hyperparameters.py +29 -0
  1507. openai/types/fine_tuning/supervised_hyperparameters_param.py +29 -0
  1508. openai/types/fine_tuning/supervised_method.py +13 -0
  1509. openai/types/fine_tuning/supervised_method_param.py +14 -0
  1510. openai/types/graders/__init__.py +16 -0
  1511. openai/types/graders/label_model_grader.py +70 -0
  1512. openai/types/graders/label_model_grader_param.py +77 -0
  1513. openai/types/graders/multi_grader.py +32 -0
  1514. openai/types/graders/multi_grader_param.py +35 -0
  1515. openai/types/graders/python_grader.py +22 -0
  1516. openai/types/graders/python_grader_param.py +21 -0
  1517. openai/types/graders/score_model_grader.py +109 -0
  1518. openai/types/graders/score_model_grader_param.py +115 -0
  1519. openai/types/graders/string_check_grader.py +24 -0
  1520. openai/types/graders/string_check_grader_param.py +24 -0
  1521. openai/types/graders/text_similarity_grader.py +40 -0
  1522. openai/types/graders/text_similarity_grader_param.py +42 -0
  1523. openai/types/image.py +26 -0
  1524. openai/types/image_create_variation_params.py +48 -0
  1525. openai/types/image_edit_completed_event.py +55 -0
  1526. openai/types/image_edit_params.py +145 -0
  1527. openai/types/image_edit_partial_image_event.py +33 -0
  1528. openai/types/image_edit_stream_event.py +14 -0
  1529. openai/types/image_gen_completed_event.py +55 -0
  1530. openai/types/image_gen_partial_image_event.py +33 -0
  1531. openai/types/image_gen_stream_event.py +14 -0
  1532. openai/types/image_generate_params.py +143 -0
  1533. openai/types/image_model.py +7 -0
  1534. openai/types/images_response.py +60 -0
  1535. openai/types/model.py +21 -0
  1536. openai/types/model_deleted.py +13 -0
  1537. openai/types/moderation.py +186 -0
  1538. openai/types/moderation_create_params.py +30 -0
  1539. openai/types/moderation_create_response.py +19 -0
  1540. openai/types/moderation_image_url_input_param.py +20 -0
  1541. openai/types/moderation_model.py +9 -0
  1542. openai/types/moderation_multi_modal_input_param.py +13 -0
  1543. openai/types/moderation_text_input_param.py +15 -0
  1544. openai/types/other_file_chunking_strategy_object.py +12 -0
  1545. openai/types/realtime/__init__.py +237 -0
  1546. openai/types/realtime/audio_transcription.py +37 -0
  1547. openai/types/realtime/audio_transcription_param.py +34 -0
  1548. openai/types/realtime/call_accept_params.py +122 -0
  1549. openai/types/realtime/call_create_params.py +17 -0
  1550. openai/types/realtime/call_refer_params.py +15 -0
  1551. openai/types/realtime/call_reject_params.py +15 -0
  1552. openai/types/realtime/client_secret_create_params.py +46 -0
  1553. openai/types/realtime/client_secret_create_response.py +26 -0
  1554. openai/types/realtime/conversation_created_event.py +27 -0
  1555. openai/types/realtime/conversation_item.py +32 -0
  1556. openai/types/realtime/conversation_item_added.py +26 -0
  1557. openai/types/realtime/conversation_item_create_event.py +29 -0
  1558. openai/types/realtime/conversation_item_create_event_param.py +29 -0
  1559. openai/types/realtime/conversation_item_created_event.py +27 -0
  1560. openai/types/realtime/conversation_item_delete_event.py +19 -0
  1561. openai/types/realtime/conversation_item_delete_event_param.py +18 -0
  1562. openai/types/realtime/conversation_item_deleted_event.py +18 -0
  1563. openai/types/realtime/conversation_item_done.py +26 -0
  1564. openai/types/realtime/conversation_item_input_audio_transcription_completed_event.py +79 -0
  1565. openai/types/realtime/conversation_item_input_audio_transcription_delta_event.py +36 -0
  1566. openai/types/realtime/conversation_item_input_audio_transcription_failed_event.py +39 -0
  1567. openai/types/realtime/conversation_item_input_audio_transcription_segment.py +36 -0
  1568. openai/types/realtime/conversation_item_param.py +30 -0
  1569. openai/types/realtime/conversation_item_retrieve_event.py +19 -0
  1570. openai/types/realtime/conversation_item_retrieve_event_param.py +18 -0
  1571. openai/types/realtime/conversation_item_truncate_event.py +32 -0
  1572. openai/types/realtime/conversation_item_truncate_event_param.py +31 -0
  1573. openai/types/realtime/conversation_item_truncated_event.py +24 -0
  1574. openai/types/realtime/input_audio_buffer_append_event.py +23 -0
  1575. openai/types/realtime/input_audio_buffer_append_event_param.py +22 -0
  1576. openai/types/realtime/input_audio_buffer_clear_event.py +16 -0
  1577. openai/types/realtime/input_audio_buffer_clear_event_param.py +15 -0
  1578. openai/types/realtime/input_audio_buffer_cleared_event.py +15 -0
  1579. openai/types/realtime/input_audio_buffer_commit_event.py +16 -0
  1580. openai/types/realtime/input_audio_buffer_commit_event_param.py +15 -0
  1581. openai/types/realtime/input_audio_buffer_committed_event.py +25 -0
  1582. openai/types/realtime/input_audio_buffer_speech_started_event.py +26 -0
  1583. openai/types/realtime/input_audio_buffer_speech_stopped_event.py +25 -0
  1584. openai/types/realtime/input_audio_buffer_timeout_triggered.py +30 -0
  1585. openai/types/realtime/log_prob_properties.py +18 -0
  1586. openai/types/realtime/mcp_list_tools_completed.py +18 -0
  1587. openai/types/realtime/mcp_list_tools_failed.py +18 -0
  1588. openai/types/realtime/mcp_list_tools_in_progress.py +18 -0
  1589. openai/types/realtime/noise_reduction_type.py +7 -0
  1590. openai/types/realtime/output_audio_buffer_clear_event.py +16 -0
  1591. openai/types/realtime/output_audio_buffer_clear_event_param.py +15 -0
  1592. openai/types/realtime/rate_limits_updated_event.py +33 -0
  1593. openai/types/realtime/realtime_audio_config.py +15 -0
  1594. openai/types/realtime/realtime_audio_config_input.py +63 -0
  1595. openai/types/realtime/realtime_audio_config_input_param.py +65 -0
  1596. openai/types/realtime/realtime_audio_config_output.py +36 -0
  1597. openai/types/realtime/realtime_audio_config_output_param.py +35 -0
  1598. openai/types/realtime/realtime_audio_config_param.py +16 -0
  1599. openai/types/realtime/realtime_audio_formats.py +30 -0
  1600. openai/types/realtime/realtime_audio_formats_param.py +29 -0
  1601. openai/types/realtime/realtime_audio_input_turn_detection.py +98 -0
  1602. openai/types/realtime/realtime_audio_input_turn_detection_param.py +95 -0
  1603. openai/types/realtime/realtime_client_event.py +36 -0
  1604. openai/types/realtime/realtime_client_event_param.py +34 -0
  1605. openai/types/realtime/realtime_connect_params.py +13 -0
  1606. openai/types/realtime/realtime_conversation_item_assistant_message.py +58 -0
  1607. openai/types/realtime/realtime_conversation_item_assistant_message_param.py +58 -0
  1608. openai/types/realtime/realtime_conversation_item_function_call.py +41 -0
  1609. openai/types/realtime/realtime_conversation_item_function_call_output.py +37 -0
  1610. openai/types/realtime/realtime_conversation_item_function_call_output_param.py +36 -0
  1611. openai/types/realtime/realtime_conversation_item_function_call_param.py +40 -0
  1612. openai/types/realtime/realtime_conversation_item_system_message.py +42 -0
  1613. openai/types/realtime/realtime_conversation_item_system_message_param.py +42 -0
  1614. openai/types/realtime/realtime_conversation_item_user_message.py +69 -0
  1615. openai/types/realtime/realtime_conversation_item_user_message_param.py +69 -0
  1616. openai/types/realtime/realtime_error.py +24 -0
  1617. openai/types/realtime/realtime_error_event.py +19 -0
  1618. openai/types/realtime/realtime_function_tool.py +25 -0
  1619. openai/types/realtime/realtime_function_tool_param.py +24 -0
  1620. openai/types/realtime/realtime_mcp_approval_request.py +24 -0
  1621. openai/types/realtime/realtime_mcp_approval_request_param.py +24 -0
  1622. openai/types/realtime/realtime_mcp_approval_response.py +25 -0
  1623. openai/types/realtime/realtime_mcp_approval_response_param.py +25 -0
  1624. openai/types/realtime/realtime_mcp_list_tools.py +36 -0
  1625. openai/types/realtime/realtime_mcp_list_tools_param.py +36 -0
  1626. openai/types/realtime/realtime_mcp_protocol_error.py +15 -0
  1627. openai/types/realtime/realtime_mcp_protocol_error_param.py +15 -0
  1628. openai/types/realtime/realtime_mcp_tool_call.py +43 -0
  1629. openai/types/realtime/realtime_mcp_tool_call_param.py +40 -0
  1630. openai/types/realtime/realtime_mcp_tool_execution_error.py +13 -0
  1631. openai/types/realtime/realtime_mcp_tool_execution_error_param.py +13 -0
  1632. openai/types/realtime/realtime_mcphttp_error.py +15 -0
  1633. openai/types/realtime/realtime_mcphttp_error_param.py +15 -0
  1634. openai/types/realtime/realtime_response.py +98 -0
  1635. openai/types/realtime/realtime_response_create_audio_output.py +29 -0
  1636. openai/types/realtime/realtime_response_create_audio_output_param.py +28 -0
  1637. openai/types/realtime/realtime_response_create_mcp_tool.py +135 -0
  1638. openai/types/realtime/realtime_response_create_mcp_tool_param.py +135 -0
  1639. openai/types/realtime/realtime_response_create_params.py +98 -0
  1640. openai/types/realtime/realtime_response_create_params_param.py +99 -0
  1641. openai/types/realtime/realtime_response_status.py +39 -0
  1642. openai/types/realtime/realtime_response_usage.py +41 -0
  1643. openai/types/realtime/realtime_response_usage_input_token_details.py +35 -0
  1644. openai/types/realtime/realtime_response_usage_output_token_details.py +15 -0
  1645. openai/types/realtime/realtime_server_event.py +155 -0
  1646. openai/types/realtime/realtime_session_client_secret.py +20 -0
  1647. openai/types/realtime/realtime_session_create_request.py +122 -0
  1648. openai/types/realtime/realtime_session_create_request_param.py +122 -0
  1649. openai/types/realtime/realtime_session_create_response.py +475 -0
  1650. openai/types/realtime/realtime_tool_choice_config.py +12 -0
  1651. openai/types/realtime/realtime_tool_choice_config_param.py +14 -0
  1652. openai/types/realtime/realtime_tools_config.py +10 -0
  1653. openai/types/realtime/realtime_tools_config_param.py +143 -0
  1654. openai/types/realtime/realtime_tools_config_union.py +141 -0
  1655. openai/types/realtime/realtime_tools_config_union_param.py +140 -0
  1656. openai/types/realtime/realtime_tracing_config.py +31 -0
  1657. openai/types/realtime/realtime_tracing_config_param.py +31 -0
  1658. openai/types/realtime/realtime_transcription_session_audio.py +12 -0
  1659. openai/types/realtime/realtime_transcription_session_audio_input.py +65 -0
  1660. openai/types/realtime/realtime_transcription_session_audio_input_param.py +67 -0
  1661. openai/types/realtime/realtime_transcription_session_audio_input_turn_detection.py +98 -0
  1662. openai/types/realtime/realtime_transcription_session_audio_input_turn_detection_param.py +95 -0
  1663. openai/types/realtime/realtime_transcription_session_audio_param.py +13 -0
  1664. openai/types/realtime/realtime_transcription_session_create_request.py +27 -0
  1665. openai/types/realtime/realtime_transcription_session_create_request_param.py +28 -0
  1666. openai/types/realtime/realtime_transcription_session_create_response.py +68 -0
  1667. openai/types/realtime/realtime_transcription_session_turn_detection.py +32 -0
  1668. openai/types/realtime/realtime_truncation.py +10 -0
  1669. openai/types/realtime/realtime_truncation_param.py +12 -0
  1670. openai/types/realtime/realtime_truncation_retention_ratio.py +38 -0
  1671. openai/types/realtime/realtime_truncation_retention_ratio_param.py +37 -0
  1672. openai/types/realtime/response_audio_delta_event.py +30 -0
  1673. openai/types/realtime/response_audio_done_event.py +27 -0
  1674. openai/types/realtime/response_audio_transcript_delta_event.py +30 -0
  1675. openai/types/realtime/response_audio_transcript_done_event.py +30 -0
  1676. openai/types/realtime/response_cancel_event.py +22 -0
  1677. openai/types/realtime/response_cancel_event_param.py +21 -0
  1678. openai/types/realtime/response_content_part_added_event.py +45 -0
  1679. openai/types/realtime/response_content_part_done_event.py +45 -0
  1680. openai/types/realtime/response_create_event.py +20 -0
  1681. openai/types/realtime/response_create_event_param.py +20 -0
  1682. openai/types/realtime/response_created_event.py +19 -0
  1683. openai/types/realtime/response_done_event.py +19 -0
  1684. openai/types/realtime/response_function_call_arguments_delta_event.py +30 -0
  1685. openai/types/realtime/response_function_call_arguments_done_event.py +30 -0
  1686. openai/types/realtime/response_mcp_call_arguments_delta.py +31 -0
  1687. openai/types/realtime/response_mcp_call_arguments_done.py +27 -0
  1688. openai/types/realtime/response_mcp_call_completed.py +21 -0
  1689. openai/types/realtime/response_mcp_call_failed.py +21 -0
  1690. openai/types/realtime/response_mcp_call_in_progress.py +21 -0
  1691. openai/types/realtime/response_output_item_added_event.py +25 -0
  1692. openai/types/realtime/response_output_item_done_event.py +25 -0
  1693. openai/types/realtime/response_text_delta_event.py +30 -0
  1694. openai/types/realtime/response_text_done_event.py +30 -0
  1695. openai/types/realtime/session_created_event.py +23 -0
  1696. openai/types/realtime/session_update_event.py +31 -0
  1697. openai/types/realtime/session_update_event_param.py +32 -0
  1698. openai/types/realtime/session_updated_event.py +23 -0
  1699. openai/types/responses/__init__.py +270 -0
  1700. openai/types/responses/apply_patch_tool.py +12 -0
  1701. openai/types/responses/apply_patch_tool_param.py +12 -0
  1702. openai/types/responses/computer_tool.py +21 -0
  1703. openai/types/responses/computer_tool_param.py +21 -0
  1704. openai/types/responses/custom_tool.py +23 -0
  1705. openai/types/responses/custom_tool_param.py +23 -0
  1706. openai/types/responses/easy_input_message.py +26 -0
  1707. openai/types/responses/easy_input_message_param.py +27 -0
  1708. openai/types/responses/file_search_tool.py +58 -0
  1709. openai/types/responses/file_search_tool_param.py +60 -0
  1710. openai/types/responses/function_shell_tool.py +12 -0
  1711. openai/types/responses/function_shell_tool_param.py +12 -0
  1712. openai/types/responses/function_tool.py +28 -0
  1713. openai/types/responses/function_tool_param.py +28 -0
  1714. openai/types/responses/input_item_list_params.py +34 -0
  1715. openai/types/responses/input_token_count_params.py +142 -0
  1716. openai/types/responses/input_token_count_response.py +13 -0
  1717. openai/types/responses/parsed_response.py +105 -0
  1718. openai/types/responses/response.py +307 -0
  1719. openai/types/responses/response_apply_patch_tool_call.py +76 -0
  1720. openai/types/responses/response_apply_patch_tool_call_output.py +31 -0
  1721. openai/types/responses/response_audio_delta_event.py +18 -0
  1722. openai/types/responses/response_audio_done_event.py +15 -0
  1723. openai/types/responses/response_audio_transcript_delta_event.py +18 -0
  1724. openai/types/responses/response_audio_transcript_done_event.py +15 -0
  1725. openai/types/responses/response_code_interpreter_call_code_delta_event.py +27 -0
  1726. openai/types/responses/response_code_interpreter_call_code_done_event.py +24 -0
  1727. openai/types/responses/response_code_interpreter_call_completed_event.py +24 -0
  1728. openai/types/responses/response_code_interpreter_call_in_progress_event.py +24 -0
  1729. openai/types/responses/response_code_interpreter_call_interpreting_event.py +24 -0
  1730. openai/types/responses/response_code_interpreter_tool_call.py +55 -0
  1731. openai/types/responses/response_code_interpreter_tool_call_param.py +54 -0
  1732. openai/types/responses/response_completed_event.py +19 -0
  1733. openai/types/responses/response_computer_tool_call.py +209 -0
  1734. openai/types/responses/response_computer_tool_call_output_item.py +47 -0
  1735. openai/types/responses/response_computer_tool_call_output_screenshot.py +22 -0
  1736. openai/types/responses/response_computer_tool_call_output_screenshot_param.py +21 -0
  1737. openai/types/responses/response_computer_tool_call_param.py +207 -0
  1738. openai/types/responses/response_content_part_added_event.py +44 -0
  1739. openai/types/responses/response_content_part_done_event.py +44 -0
  1740. openai/types/responses/response_conversation_param.py +12 -0
  1741. openai/types/responses/response_create_params.py +334 -0
  1742. openai/types/responses/response_created_event.py +19 -0
  1743. openai/types/responses/response_custom_tool_call.py +25 -0
  1744. openai/types/responses/response_custom_tool_call_input_delta_event.py +24 -0
  1745. openai/types/responses/response_custom_tool_call_input_done_event.py +24 -0
  1746. openai/types/responses/response_custom_tool_call_output.py +33 -0
  1747. openai/types/responses/response_custom_tool_call_output_param.py +31 -0
  1748. openai/types/responses/response_custom_tool_call_param.py +24 -0
  1749. openai/types/responses/response_error.py +34 -0
  1750. openai/types/responses/response_error_event.py +25 -0
  1751. openai/types/responses/response_failed_event.py +19 -0
  1752. openai/types/responses/response_file_search_call_completed_event.py +21 -0
  1753. openai/types/responses/response_file_search_call_in_progress_event.py +21 -0
  1754. openai/types/responses/response_file_search_call_searching_event.py +21 -0
  1755. openai/types/responses/response_file_search_tool_call.py +51 -0
  1756. openai/types/responses/response_file_search_tool_call_param.py +53 -0
  1757. openai/types/responses/response_format_text_config.py +16 -0
  1758. openai/types/responses/response_format_text_config_param.py +16 -0
  1759. openai/types/responses/response_format_text_json_schema_config.py +43 -0
  1760. openai/types/responses/response_format_text_json_schema_config_param.py +41 -0
  1761. openai/types/responses/response_function_call_arguments_delta_event.py +26 -0
  1762. openai/types/responses/response_function_call_arguments_done_event.py +26 -0
  1763. openai/types/responses/response_function_call_output_item.py +16 -0
  1764. openai/types/responses/response_function_call_output_item_list.py +10 -0
  1765. openai/types/responses/response_function_call_output_item_list_param.py +18 -0
  1766. openai/types/responses/response_function_call_output_item_param.py +16 -0
  1767. openai/types/responses/response_function_shell_call_output_content.py +36 -0
  1768. openai/types/responses/response_function_shell_call_output_content_param.py +35 -0
  1769. openai/types/responses/response_function_shell_tool_call.py +44 -0
  1770. openai/types/responses/response_function_shell_tool_call_output.py +70 -0
  1771. openai/types/responses/response_function_tool_call.py +32 -0
  1772. openai/types/responses/response_function_tool_call_item.py +10 -0
  1773. openai/types/responses/response_function_tool_call_output_item.py +40 -0
  1774. openai/types/responses/response_function_tool_call_param.py +31 -0
  1775. openai/types/responses/response_function_web_search.py +67 -0
  1776. openai/types/responses/response_function_web_search_param.py +73 -0
  1777. openai/types/responses/response_image_gen_call_completed_event.py +21 -0
  1778. openai/types/responses/response_image_gen_call_generating_event.py +21 -0
  1779. openai/types/responses/response_image_gen_call_in_progress_event.py +21 -0
  1780. openai/types/responses/response_image_gen_call_partial_image_event.py +30 -0
  1781. openai/types/responses/response_in_progress_event.py +19 -0
  1782. openai/types/responses/response_includable.py +16 -0
  1783. openai/types/responses/response_incomplete_event.py +19 -0
  1784. openai/types/responses/response_input_audio.py +22 -0
  1785. openai/types/responses/response_input_audio_param.py +22 -0
  1786. openai/types/responses/response_input_content.py +15 -0
  1787. openai/types/responses/response_input_content_param.py +14 -0
  1788. openai/types/responses/response_input_file.py +25 -0
  1789. openai/types/responses/response_input_file_content.py +25 -0
  1790. openai/types/responses/response_input_file_content_param.py +25 -0
  1791. openai/types/responses/response_input_file_param.py +25 -0
  1792. openai/types/responses/response_input_image.py +28 -0
  1793. openai/types/responses/response_input_image_content.py +28 -0
  1794. openai/types/responses/response_input_image_content_param.py +28 -0
  1795. openai/types/responses/response_input_image_param.py +28 -0
  1796. openai/types/responses/response_input_item.py +482 -0
  1797. openai/types/responses/response_input_item_param.py +479 -0
  1798. openai/types/responses/response_input_message_content_list.py +10 -0
  1799. openai/types/responses/response_input_message_content_list_param.py +16 -0
  1800. openai/types/responses/response_input_message_item.py +33 -0
  1801. openai/types/responses/response_input_param.py +482 -0
  1802. openai/types/responses/response_input_text.py +15 -0
  1803. openai/types/responses/response_input_text_content.py +15 -0
  1804. openai/types/responses/response_input_text_content_param.py +15 -0
  1805. openai/types/responses/response_input_text_param.py +15 -0
  1806. openai/types/responses/response_item.py +226 -0
  1807. openai/types/responses/response_item_list.py +26 -0
  1808. openai/types/responses/response_mcp_call_arguments_delta_event.py +27 -0
  1809. openai/types/responses/response_mcp_call_arguments_done_event.py +24 -0
  1810. openai/types/responses/response_mcp_call_completed_event.py +21 -0
  1811. openai/types/responses/response_mcp_call_failed_event.py +21 -0
  1812. openai/types/responses/response_mcp_call_in_progress_event.py +21 -0
  1813. openai/types/responses/response_mcp_list_tools_completed_event.py +21 -0
  1814. openai/types/responses/response_mcp_list_tools_failed_event.py +21 -0
  1815. openai/types/responses/response_mcp_list_tools_in_progress_event.py +21 -0
  1816. openai/types/responses/response_output_item.py +189 -0
  1817. openai/types/responses/response_output_item_added_event.py +22 -0
  1818. openai/types/responses/response_output_item_done_event.py +22 -0
  1819. openai/types/responses/response_output_message.py +34 -0
  1820. openai/types/responses/response_output_message_param.py +34 -0
  1821. openai/types/responses/response_output_refusal.py +15 -0
  1822. openai/types/responses/response_output_refusal_param.py +15 -0
  1823. openai/types/responses/response_output_text.py +117 -0
  1824. openai/types/responses/response_output_text_annotation_added_event.py +30 -0
  1825. openai/types/responses/response_output_text_param.py +115 -0
  1826. openai/types/responses/response_prompt.py +28 -0
  1827. openai/types/responses/response_prompt_param.py +29 -0
  1828. openai/types/responses/response_queued_event.py +19 -0
  1829. openai/types/responses/response_reasoning_item.py +51 -0
  1830. openai/types/responses/response_reasoning_item_param.py +51 -0
  1831. openai/types/responses/response_reasoning_summary_part_added_event.py +35 -0
  1832. openai/types/responses/response_reasoning_summary_part_done_event.py +35 -0
  1833. openai/types/responses/response_reasoning_summary_text_delta_event.py +27 -0
  1834. openai/types/responses/response_reasoning_summary_text_done_event.py +27 -0
  1835. openai/types/responses/response_reasoning_text_delta_event.py +27 -0
  1836. openai/types/responses/response_reasoning_text_done_event.py +27 -0
  1837. openai/types/responses/response_refusal_delta_event.py +27 -0
  1838. openai/types/responses/response_refusal_done_event.py +27 -0
  1839. openai/types/responses/response_retrieve_params.py +59 -0
  1840. openai/types/responses/response_status.py +7 -0
  1841. openai/types/responses/response_stream_event.py +120 -0
  1842. openai/types/responses/response_text_config.py +35 -0
  1843. openai/types/responses/response_text_config_param.py +36 -0
  1844. openai/types/responses/response_text_delta_event.py +50 -0
  1845. openai/types/responses/response_text_done_event.py +50 -0
  1846. openai/types/responses/response_usage.py +35 -0
  1847. openai/types/responses/response_web_search_call_completed_event.py +21 -0
  1848. openai/types/responses/response_web_search_call_in_progress_event.py +21 -0
  1849. openai/types/responses/response_web_search_call_searching_event.py +21 -0
  1850. openai/types/responses/tool.py +271 -0
  1851. openai/types/responses/tool_choice_allowed.py +36 -0
  1852. openai/types/responses/tool_choice_allowed_param.py +36 -0
  1853. openai/types/responses/tool_choice_apply_patch.py +12 -0
  1854. openai/types/responses/tool_choice_apply_patch_param.py +12 -0
  1855. openai/types/responses/tool_choice_custom.py +15 -0
  1856. openai/types/responses/tool_choice_custom_param.py +15 -0
  1857. openai/types/responses/tool_choice_function.py +15 -0
  1858. openai/types/responses/tool_choice_function_param.py +15 -0
  1859. openai/types/responses/tool_choice_mcp.py +19 -0
  1860. openai/types/responses/tool_choice_mcp_param.py +19 -0
  1861. openai/types/responses/tool_choice_options.py +7 -0
  1862. openai/types/responses/tool_choice_shell.py +12 -0
  1863. openai/types/responses/tool_choice_shell_param.py +12 -0
  1864. openai/types/responses/tool_choice_types.py +31 -0
  1865. openai/types/responses/tool_choice_types_param.py +33 -0
  1866. openai/types/responses/tool_param.py +271 -0
  1867. openai/types/responses/web_search_preview_tool.py +49 -0
  1868. openai/types/responses/web_search_preview_tool_param.py +49 -0
  1869. openai/types/responses/web_search_tool.py +63 -0
  1870. openai/types/responses/web_search_tool_param.py +65 -0
  1871. openai/types/shared/__init__.py +19 -0
  1872. openai/types/shared/all_models.py +28 -0
  1873. openai/types/shared/chat_model.py +75 -0
  1874. openai/types/shared/comparison_filter.py +34 -0
  1875. openai/types/shared/compound_filter.py +22 -0
  1876. openai/types/shared/custom_tool_input_format.py +28 -0
  1877. openai/types/shared/error_object.py +17 -0
  1878. openai/types/shared/function_definition.py +43 -0
  1879. openai/types/shared/function_parameters.py +8 -0
  1880. openai/types/shared/metadata.py +8 -0
  1881. openai/types/shared/reasoning.py +44 -0
  1882. openai/types/shared/reasoning_effort.py +8 -0
  1883. openai/types/shared/response_format_json_object.py +12 -0
  1884. openai/types/shared/response_format_json_schema.py +48 -0
  1885. openai/types/shared/response_format_text.py +12 -0
  1886. openai/types/shared/response_format_text_grammar.py +15 -0
  1887. openai/types/shared/response_format_text_python.py +12 -0
  1888. openai/types/shared/responses_model.py +28 -0
  1889. openai/types/shared_params/__init__.py +15 -0
  1890. openai/types/shared_params/chat_model.py +77 -0
  1891. openai/types/shared_params/comparison_filter.py +36 -0
  1892. openai/types/shared_params/compound_filter.py +23 -0
  1893. openai/types/shared_params/custom_tool_input_format.py +27 -0
  1894. openai/types/shared_params/function_definition.py +45 -0
  1895. openai/types/shared_params/function_parameters.py +10 -0
  1896. openai/types/shared_params/metadata.py +10 -0
  1897. openai/types/shared_params/reasoning.py +45 -0
  1898. openai/types/shared_params/reasoning_effort.py +10 -0
  1899. openai/types/shared_params/response_format_json_object.py +12 -0
  1900. openai/types/shared_params/response_format_json_schema.py +46 -0
  1901. openai/types/shared_params/response_format_text.py +12 -0
  1902. openai/types/shared_params/responses_model.py +30 -0
  1903. openai/types/static_file_chunking_strategy.py +20 -0
  1904. openai/types/static_file_chunking_strategy_object.py +15 -0
  1905. openai/types/static_file_chunking_strategy_object_param.py +16 -0
  1906. openai/types/static_file_chunking_strategy_param.py +22 -0
  1907. openai/types/upload.py +42 -0
  1908. openai/types/upload_complete_params.py +20 -0
  1909. openai/types/upload_create_params.py +52 -0
  1910. openai/types/uploads/__init__.py +6 -0
  1911. openai/types/uploads/part_create_params.py +14 -0
  1912. openai/types/uploads/upload_part.py +21 -0
  1913. openai/types/vector_store.py +82 -0
  1914. openai/types/vector_store_create_params.py +61 -0
  1915. openai/types/vector_store_deleted.py +15 -0
  1916. openai/types/vector_store_list_params.py +39 -0
  1917. openai/types/vector_store_search_params.py +42 -0
  1918. openai/types/vector_store_search_response.py +39 -0
  1919. openai/types/vector_store_update_params.py +39 -0
  1920. openai/types/vector_stores/__init__.py +13 -0
  1921. openai/types/vector_stores/file_batch_create_params.py +70 -0
  1922. openai/types/vector_stores/file_batch_list_files_params.py +47 -0
  1923. openai/types/vector_stores/file_content_response.py +15 -0
  1924. openai/types/vector_stores/file_create_params.py +35 -0
  1925. openai/types/vector_stores/file_list_params.py +45 -0
  1926. openai/types/vector_stores/file_update_params.py +21 -0
  1927. openai/types/vector_stores/vector_store_file.py +67 -0
  1928. openai/types/vector_stores/vector_store_file_batch.py +54 -0
  1929. openai/types/vector_stores/vector_store_file_deleted.py +15 -0
  1930. openai/types/video.py +53 -0
  1931. openai/types/video_create_error.py +11 -0
  1932. openai/types/video_create_params.py +29 -0
  1933. openai/types/video_delete_response.py +18 -0
  1934. openai/types/video_download_content_params.py +12 -0
  1935. openai/types/video_list_params.py +21 -0
  1936. openai/types/video_model.py +7 -0
  1937. openai/types/video_remix_params.py +12 -0
  1938. openai/types/video_seconds.py +7 -0
  1939. openai/types/video_size.py +7 -0
  1940. openai/types/webhooks/__init__.py +24 -0
  1941. openai/types/webhooks/batch_cancelled_webhook_event.py +30 -0
  1942. openai/types/webhooks/batch_completed_webhook_event.py +30 -0
  1943. openai/types/webhooks/batch_expired_webhook_event.py +30 -0
  1944. openai/types/webhooks/batch_failed_webhook_event.py +30 -0
  1945. openai/types/webhooks/eval_run_canceled_webhook_event.py +30 -0
  1946. openai/types/webhooks/eval_run_failed_webhook_event.py +30 -0
  1947. openai/types/webhooks/eval_run_succeeded_webhook_event.py +30 -0
  1948. openai/types/webhooks/fine_tuning_job_cancelled_webhook_event.py +30 -0
  1949. openai/types/webhooks/fine_tuning_job_failed_webhook_event.py +30 -0
  1950. openai/types/webhooks/fine_tuning_job_succeeded_webhook_event.py +30 -0
  1951. openai/types/webhooks/realtime_call_incoming_webhook_event.py +41 -0
  1952. openai/types/webhooks/response_cancelled_webhook_event.py +30 -0
  1953. openai/types/webhooks/response_completed_webhook_event.py +30 -0
  1954. openai/types/webhooks/response_failed_webhook_event.py +30 -0
  1955. openai/types/webhooks/response_incomplete_webhook_event.py +30 -0
  1956. openai/types/webhooks/unwrap_webhook_event.py +44 -0
  1957. openai/types/websocket_connection_options.py +36 -0
  1958. openai/version.py +3 -0
@@ -0,0 +1,1038 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+ from types import TracebackType
5
+ from typing import TYPE_CHECKING, Any, Generic, TypeVar, Callable, Iterable, Iterator, cast
6
+ from typing_extensions import Awaitable, AsyncIterable, AsyncIterator, assert_never
7
+
8
+ import httpx
9
+
10
+ from ..._utils import is_dict, is_list, consume_sync_iterator, consume_async_iterator
11
+ from ..._compat import model_dump
12
+ from ..._models import construct_type
13
+ from ..._streaming import Stream, AsyncStream
14
+ from ...types.beta import AssistantStreamEvent
15
+ from ...types.beta.threads import (
16
+ Run,
17
+ Text,
18
+ Message,
19
+ ImageFile,
20
+ TextDelta,
21
+ MessageDelta,
22
+ MessageContent,
23
+ MessageContentDelta,
24
+ )
25
+ from ...types.beta.threads.runs import RunStep, ToolCall, RunStepDelta, ToolCallDelta
26
+
27
+
28
+ class AssistantEventHandler:
29
+ text_deltas: Iterable[str]
30
+ """Iterator over just the text deltas in the stream.
31
+
32
+ This corresponds to the `thread.message.delta` event
33
+ in the API.
34
+
35
+ ```py
36
+ for text in stream.text_deltas:
37
+ print(text, end="", flush=True)
38
+ print()
39
+ ```
40
+ """
41
+
42
+ def __init__(self) -> None:
43
+ self._current_event: AssistantStreamEvent | None = None
44
+ self._current_message_content_index: int | None = None
45
+ self._current_message_content: MessageContent | None = None
46
+ self._current_tool_call_index: int | None = None
47
+ self._current_tool_call: ToolCall | None = None
48
+ self.__current_run_step_id: str | None = None
49
+ self.__current_run: Run | None = None
50
+ self.__run_step_snapshots: dict[str, RunStep] = {}
51
+ self.__message_snapshots: dict[str, Message] = {}
52
+ self.__current_message_snapshot: Message | None = None
53
+
54
+ self.text_deltas = self.__text_deltas__()
55
+ self._iterator = self.__stream__()
56
+ self.__stream: Stream[AssistantStreamEvent] | None = None
57
+
58
+ def _init(self, stream: Stream[AssistantStreamEvent]) -> None:
59
+ if self.__stream:
60
+ raise RuntimeError(
61
+ "A single event handler cannot be shared between multiple streams; You will need to construct a new event handler instance"
62
+ )
63
+
64
+ self.__stream = stream
65
+
66
+ def __next__(self) -> AssistantStreamEvent:
67
+ return self._iterator.__next__()
68
+
69
+ def __iter__(self) -> Iterator[AssistantStreamEvent]:
70
+ for item in self._iterator:
71
+ yield item
72
+
73
+ @property
74
+ def current_event(self) -> AssistantStreamEvent | None:
75
+ return self._current_event
76
+
77
+ @property
78
+ def current_run(self) -> Run | None:
79
+ return self.__current_run
80
+
81
+ @property
82
+ def current_run_step_snapshot(self) -> RunStep | None:
83
+ if not self.__current_run_step_id:
84
+ return None
85
+
86
+ return self.__run_step_snapshots[self.__current_run_step_id]
87
+
88
+ @property
89
+ def current_message_snapshot(self) -> Message | None:
90
+ return self.__current_message_snapshot
91
+
92
+ def close(self) -> None:
93
+ """
94
+ Close the response and release the connection.
95
+
96
+ Automatically called when the context manager exits.
97
+ """
98
+ if self.__stream:
99
+ self.__stream.close()
100
+
101
+ def until_done(self) -> None:
102
+ """Waits until the stream has been consumed"""
103
+ consume_sync_iterator(self)
104
+
105
+ def get_final_run(self) -> Run:
106
+ """Wait for the stream to finish and returns the completed Run object"""
107
+ self.until_done()
108
+
109
+ if not self.__current_run:
110
+ raise RuntimeError("No final run object found")
111
+
112
+ return self.__current_run
113
+
114
+ def get_final_run_steps(self) -> list[RunStep]:
115
+ """Wait for the stream to finish and returns the steps taken in this run"""
116
+ self.until_done()
117
+
118
+ if not self.__run_step_snapshots:
119
+ raise RuntimeError("No run steps found")
120
+
121
+ return [step for step in self.__run_step_snapshots.values()]
122
+
123
+ def get_final_messages(self) -> list[Message]:
124
+ """Wait for the stream to finish and returns the messages emitted in this run"""
125
+ self.until_done()
126
+
127
+ if not self.__message_snapshots:
128
+ raise RuntimeError("No messages found")
129
+
130
+ return [message for message in self.__message_snapshots.values()]
131
+
132
+ def __text_deltas__(self) -> Iterator[str]:
133
+ for event in self:
134
+ if event.event != "thread.message.delta":
135
+ continue
136
+
137
+ for content_delta in event.data.delta.content or []:
138
+ if content_delta.type == "text" and content_delta.text and content_delta.text.value:
139
+ yield content_delta.text.value
140
+
141
+ # event handlers
142
+
143
+ def on_end(self) -> None:
144
+ """Fires when the stream has finished.
145
+
146
+ This happens if the stream is read to completion
147
+ or if an exception occurs during iteration.
148
+ """
149
+
150
+ def on_event(self, event: AssistantStreamEvent) -> None:
151
+ """Callback that is fired for every Server-Sent-Event"""
152
+
153
+ def on_run_step_created(self, run_step: RunStep) -> None:
154
+ """Callback that is fired when a run step is created"""
155
+
156
+ def on_run_step_delta(self, delta: RunStepDelta, snapshot: RunStep) -> None:
157
+ """Callback that is fired whenever a run step delta is returned from the API
158
+
159
+ The first argument is just the delta as sent by the API and the second argument
160
+ is the accumulated snapshot of the run step. For example, a tool calls event may
161
+ look like this:
162
+
163
+ # delta
164
+ tool_calls=[
165
+ RunStepDeltaToolCallsCodeInterpreter(
166
+ index=0,
167
+ type='code_interpreter',
168
+ id=None,
169
+ code_interpreter=CodeInterpreter(input=' sympy', outputs=None)
170
+ )
171
+ ]
172
+ # snapshot
173
+ tool_calls=[
174
+ CodeToolCall(
175
+ id='call_wKayJlcYV12NiadiZuJXxcfx',
176
+ code_interpreter=CodeInterpreter(input='from sympy', outputs=[]),
177
+ type='code_interpreter',
178
+ index=0
179
+ )
180
+ ],
181
+ """
182
+
183
+ def on_run_step_done(self, run_step: RunStep) -> None:
184
+ """Callback that is fired when a run step is completed"""
185
+
186
+ def on_tool_call_created(self, tool_call: ToolCall) -> None:
187
+ """Callback that is fired when a tool call is created"""
188
+
189
+ def on_tool_call_delta(self, delta: ToolCallDelta, snapshot: ToolCall) -> None:
190
+ """Callback that is fired when a tool call delta is encountered"""
191
+
192
+ def on_tool_call_done(self, tool_call: ToolCall) -> None:
193
+ """Callback that is fired when a tool call delta is encountered"""
194
+
195
+ def on_exception(self, exception: Exception) -> None:
196
+ """Fired whenever an exception happens during streaming"""
197
+
198
+ def on_timeout(self) -> None:
199
+ """Fires if the request times out"""
200
+
201
+ def on_message_created(self, message: Message) -> None:
202
+ """Callback that is fired when a message is created"""
203
+
204
+ def on_message_delta(self, delta: MessageDelta, snapshot: Message) -> None:
205
+ """Callback that is fired whenever a message delta is returned from the API
206
+
207
+ The first argument is just the delta as sent by the API and the second argument
208
+ is the accumulated snapshot of the message. For example, a text content event may
209
+ look like this:
210
+
211
+ # delta
212
+ MessageDeltaText(
213
+ index=0,
214
+ type='text',
215
+ text=Text(
216
+ value=' Jane'
217
+ ),
218
+ )
219
+ # snapshot
220
+ MessageContentText(
221
+ index=0,
222
+ type='text',
223
+ text=Text(
224
+ value='Certainly, Jane'
225
+ ),
226
+ )
227
+ """
228
+
229
+ def on_message_done(self, message: Message) -> None:
230
+ """Callback that is fired when a message is completed"""
231
+
232
+ def on_text_created(self, text: Text) -> None:
233
+ """Callback that is fired when a text content block is created"""
234
+
235
+ def on_text_delta(self, delta: TextDelta, snapshot: Text) -> None:
236
+ """Callback that is fired whenever a text content delta is returned
237
+ by the API.
238
+
239
+ The first argument is just the delta as sent by the API and the second argument
240
+ is the accumulated snapshot of the text. For example:
241
+
242
+ on_text_delta(TextDelta(value="The"), Text(value="The")),
243
+ on_text_delta(TextDelta(value=" solution"), Text(value="The solution")),
244
+ on_text_delta(TextDelta(value=" to"), Text(value="The solution to")),
245
+ on_text_delta(TextDelta(value=" the"), Text(value="The solution to the")),
246
+ on_text_delta(TextDelta(value=" equation"), Text(value="The solution to the equation")),
247
+ """
248
+
249
+ def on_text_done(self, text: Text) -> None:
250
+ """Callback that is fired when a text content block is finished"""
251
+
252
+ def on_image_file_done(self, image_file: ImageFile) -> None:
253
+ """Callback that is fired when an image file block is finished"""
254
+
255
+ def _emit_sse_event(self, event: AssistantStreamEvent) -> None:
256
+ self._current_event = event
257
+ self.on_event(event)
258
+
259
+ self.__current_message_snapshot, new_content = accumulate_event(
260
+ event=event,
261
+ current_message_snapshot=self.__current_message_snapshot,
262
+ )
263
+ if self.__current_message_snapshot is not None:
264
+ self.__message_snapshots[self.__current_message_snapshot.id] = self.__current_message_snapshot
265
+
266
+ accumulate_run_step(
267
+ event=event,
268
+ run_step_snapshots=self.__run_step_snapshots,
269
+ )
270
+
271
+ for content_delta in new_content:
272
+ assert self.__current_message_snapshot is not None
273
+
274
+ block = self.__current_message_snapshot.content[content_delta.index]
275
+ if block.type == "text":
276
+ self.on_text_created(block.text)
277
+
278
+ if (
279
+ event.event == "thread.run.completed"
280
+ or event.event == "thread.run.cancelled"
281
+ or event.event == "thread.run.expired"
282
+ or event.event == "thread.run.failed"
283
+ or event.event == "thread.run.requires_action"
284
+ or event.event == "thread.run.incomplete"
285
+ ):
286
+ self.__current_run = event.data
287
+ if self._current_tool_call:
288
+ self.on_tool_call_done(self._current_tool_call)
289
+ elif (
290
+ event.event == "thread.run.created"
291
+ or event.event == "thread.run.in_progress"
292
+ or event.event == "thread.run.cancelling"
293
+ or event.event == "thread.run.queued"
294
+ ):
295
+ self.__current_run = event.data
296
+ elif event.event == "thread.message.created":
297
+ self.on_message_created(event.data)
298
+ elif event.event == "thread.message.delta":
299
+ snapshot = self.__current_message_snapshot
300
+ assert snapshot is not None
301
+
302
+ message_delta = event.data.delta
303
+ if message_delta.content is not None:
304
+ for content_delta in message_delta.content:
305
+ if content_delta.type == "text" and content_delta.text:
306
+ snapshot_content = snapshot.content[content_delta.index]
307
+ assert snapshot_content.type == "text"
308
+ self.on_text_delta(content_delta.text, snapshot_content.text)
309
+
310
+ # If the delta is for a new message content:
311
+ # - emit on_text_done/on_image_file_done for the previous message content
312
+ # - emit on_text_created/on_image_created for the new message content
313
+ if content_delta.index != self._current_message_content_index:
314
+ if self._current_message_content is not None:
315
+ if self._current_message_content.type == "text":
316
+ self.on_text_done(self._current_message_content.text)
317
+ elif self._current_message_content.type == "image_file":
318
+ self.on_image_file_done(self._current_message_content.image_file)
319
+
320
+ self._current_message_content_index = content_delta.index
321
+ self._current_message_content = snapshot.content[content_delta.index]
322
+
323
+ # Update the current_message_content (delta event is correctly emitted already)
324
+ self._current_message_content = snapshot.content[content_delta.index]
325
+
326
+ self.on_message_delta(event.data.delta, snapshot)
327
+ elif event.event == "thread.message.completed" or event.event == "thread.message.incomplete":
328
+ self.__current_message_snapshot = event.data
329
+ self.__message_snapshots[event.data.id] = event.data
330
+
331
+ if self._current_message_content_index is not None:
332
+ content = event.data.content[self._current_message_content_index]
333
+ if content.type == "text":
334
+ self.on_text_done(content.text)
335
+ elif content.type == "image_file":
336
+ self.on_image_file_done(content.image_file)
337
+
338
+ self.on_message_done(event.data)
339
+ elif event.event == "thread.run.step.created":
340
+ self.__current_run_step_id = event.data.id
341
+ self.on_run_step_created(event.data)
342
+ elif event.event == "thread.run.step.in_progress":
343
+ self.__current_run_step_id = event.data.id
344
+ elif event.event == "thread.run.step.delta":
345
+ step_snapshot = self.__run_step_snapshots[event.data.id]
346
+
347
+ run_step_delta = event.data.delta
348
+ if (
349
+ run_step_delta.step_details
350
+ and run_step_delta.step_details.type == "tool_calls"
351
+ and run_step_delta.step_details.tool_calls is not None
352
+ ):
353
+ assert step_snapshot.step_details.type == "tool_calls"
354
+ for tool_call_delta in run_step_delta.step_details.tool_calls:
355
+ if tool_call_delta.index == self._current_tool_call_index:
356
+ self.on_tool_call_delta(
357
+ tool_call_delta,
358
+ step_snapshot.step_details.tool_calls[tool_call_delta.index],
359
+ )
360
+
361
+ # If the delta is for a new tool call:
362
+ # - emit on_tool_call_done for the previous tool_call
363
+ # - emit on_tool_call_created for the new tool_call
364
+ if tool_call_delta.index != self._current_tool_call_index:
365
+ if self._current_tool_call is not None:
366
+ self.on_tool_call_done(self._current_tool_call)
367
+
368
+ self._current_tool_call_index = tool_call_delta.index
369
+ self._current_tool_call = step_snapshot.step_details.tool_calls[tool_call_delta.index]
370
+ self.on_tool_call_created(self._current_tool_call)
371
+
372
+ # Update the current_tool_call (delta event is correctly emitted already)
373
+ self._current_tool_call = step_snapshot.step_details.tool_calls[tool_call_delta.index]
374
+
375
+ self.on_run_step_delta(
376
+ event.data.delta,
377
+ step_snapshot,
378
+ )
379
+ elif (
380
+ event.event == "thread.run.step.completed"
381
+ or event.event == "thread.run.step.cancelled"
382
+ or event.event == "thread.run.step.expired"
383
+ or event.event == "thread.run.step.failed"
384
+ ):
385
+ if self._current_tool_call:
386
+ self.on_tool_call_done(self._current_tool_call)
387
+
388
+ self.on_run_step_done(event.data)
389
+ self.__current_run_step_id = None
390
+ elif event.event == "thread.created" or event.event == "thread.message.in_progress" or event.event == "error":
391
+ # currently no special handling
392
+ ...
393
+ else:
394
+ # we only want to error at build-time
395
+ if TYPE_CHECKING: # type: ignore[unreachable]
396
+ assert_never(event)
397
+
398
+ self._current_event = None
399
+
400
+ def __stream__(self) -> Iterator[AssistantStreamEvent]:
401
+ stream = self.__stream
402
+ if not stream:
403
+ raise RuntimeError("Stream has not been started yet")
404
+
405
+ try:
406
+ for event in stream:
407
+ self._emit_sse_event(event)
408
+
409
+ yield event
410
+ except (httpx.TimeoutException, asyncio.TimeoutError) as exc:
411
+ self.on_timeout()
412
+ self.on_exception(exc)
413
+ raise
414
+ except Exception as exc:
415
+ self.on_exception(exc)
416
+ raise
417
+ finally:
418
+ self.on_end()
419
+
420
+
421
+ AssistantEventHandlerT = TypeVar("AssistantEventHandlerT", bound=AssistantEventHandler)
422
+
423
+
424
+ class AssistantStreamManager(Generic[AssistantEventHandlerT]):
425
+ """Wrapper over AssistantStreamEventHandler that is returned by `.stream()`
426
+ so that a context manager can be used.
427
+
428
+ ```py
429
+ with client.threads.create_and_run_stream(...) as stream:
430
+ for event in stream:
431
+ ...
432
+ ```
433
+ """
434
+
435
+ def __init__(
436
+ self,
437
+ api_request: Callable[[], Stream[AssistantStreamEvent]],
438
+ *,
439
+ event_handler: AssistantEventHandlerT,
440
+ ) -> None:
441
+ self.__stream: Stream[AssistantStreamEvent] | None = None
442
+ self.__event_handler = event_handler
443
+ self.__api_request = api_request
444
+
445
+ def __enter__(self) -> AssistantEventHandlerT:
446
+ self.__stream = self.__api_request()
447
+ self.__event_handler._init(self.__stream)
448
+ return self.__event_handler
449
+
450
+ def __exit__(
451
+ self,
452
+ exc_type: type[BaseException] | None,
453
+ exc: BaseException | None,
454
+ exc_tb: TracebackType | None,
455
+ ) -> None:
456
+ if self.__stream is not None:
457
+ self.__stream.close()
458
+
459
+
460
+ class AsyncAssistantEventHandler:
461
+ text_deltas: AsyncIterable[str]
462
+ """Iterator over just the text deltas in the stream.
463
+
464
+ This corresponds to the `thread.message.delta` event
465
+ in the API.
466
+
467
+ ```py
468
+ async for text in stream.text_deltas:
469
+ print(text, end="", flush=True)
470
+ print()
471
+ ```
472
+ """
473
+
474
+ def __init__(self) -> None:
475
+ self._current_event: AssistantStreamEvent | None = None
476
+ self._current_message_content_index: int | None = None
477
+ self._current_message_content: MessageContent | None = None
478
+ self._current_tool_call_index: int | None = None
479
+ self._current_tool_call: ToolCall | None = None
480
+ self.__current_run_step_id: str | None = None
481
+ self.__current_run: Run | None = None
482
+ self.__run_step_snapshots: dict[str, RunStep] = {}
483
+ self.__message_snapshots: dict[str, Message] = {}
484
+ self.__current_message_snapshot: Message | None = None
485
+
486
+ self.text_deltas = self.__text_deltas__()
487
+ self._iterator = self.__stream__()
488
+ self.__stream: AsyncStream[AssistantStreamEvent] | None = None
489
+
490
+ def _init(self, stream: AsyncStream[AssistantStreamEvent]) -> None:
491
+ if self.__stream:
492
+ raise RuntimeError(
493
+ "A single event handler cannot be shared between multiple streams; You will need to construct a new event handler instance"
494
+ )
495
+
496
+ self.__stream = stream
497
+
498
+ async def __anext__(self) -> AssistantStreamEvent:
499
+ return await self._iterator.__anext__()
500
+
501
+ async def __aiter__(self) -> AsyncIterator[AssistantStreamEvent]:
502
+ async for item in self._iterator:
503
+ yield item
504
+
505
+ async def close(self) -> None:
506
+ """
507
+ Close the response and release the connection.
508
+
509
+ Automatically called when the context manager exits.
510
+ """
511
+ if self.__stream:
512
+ await self.__stream.close()
513
+
514
+ @property
515
+ def current_event(self) -> AssistantStreamEvent | None:
516
+ return self._current_event
517
+
518
+ @property
519
+ def current_run(self) -> Run | None:
520
+ return self.__current_run
521
+
522
+ @property
523
+ def current_run_step_snapshot(self) -> RunStep | None:
524
+ if not self.__current_run_step_id:
525
+ return None
526
+
527
+ return self.__run_step_snapshots[self.__current_run_step_id]
528
+
529
+ @property
530
+ def current_message_snapshot(self) -> Message | None:
531
+ return self.__current_message_snapshot
532
+
533
+ async def until_done(self) -> None:
534
+ """Waits until the stream has been consumed"""
535
+ await consume_async_iterator(self)
536
+
537
+ async def get_final_run(self) -> Run:
538
+ """Wait for the stream to finish and returns the completed Run object"""
539
+ await self.until_done()
540
+
541
+ if not self.__current_run:
542
+ raise RuntimeError("No final run object found")
543
+
544
+ return self.__current_run
545
+
546
+ async def get_final_run_steps(self) -> list[RunStep]:
547
+ """Wait for the stream to finish and returns the steps taken in this run"""
548
+ await self.until_done()
549
+
550
+ if not self.__run_step_snapshots:
551
+ raise RuntimeError("No run steps found")
552
+
553
+ return [step for step in self.__run_step_snapshots.values()]
554
+
555
+ async def get_final_messages(self) -> list[Message]:
556
+ """Wait for the stream to finish and returns the messages emitted in this run"""
557
+ await self.until_done()
558
+
559
+ if not self.__message_snapshots:
560
+ raise RuntimeError("No messages found")
561
+
562
+ return [message for message in self.__message_snapshots.values()]
563
+
564
+ async def __text_deltas__(self) -> AsyncIterator[str]:
565
+ async for event in self:
566
+ if event.event != "thread.message.delta":
567
+ continue
568
+
569
+ for content_delta in event.data.delta.content or []:
570
+ if content_delta.type == "text" and content_delta.text and content_delta.text.value:
571
+ yield content_delta.text.value
572
+
573
+ # event handlers
574
+
575
+ async def on_end(self) -> None:
576
+ """Fires when the stream has finished.
577
+
578
+ This happens if the stream is read to completion
579
+ or if an exception occurs during iteration.
580
+ """
581
+
582
+ async def on_event(self, event: AssistantStreamEvent) -> None:
583
+ """Callback that is fired for every Server-Sent-Event"""
584
+
585
+ async def on_run_step_created(self, run_step: RunStep) -> None:
586
+ """Callback that is fired when a run step is created"""
587
+
588
+ async def on_run_step_delta(self, delta: RunStepDelta, snapshot: RunStep) -> None:
589
+ """Callback that is fired whenever a run step delta is returned from the API
590
+
591
+ The first argument is just the delta as sent by the API and the second argument
592
+ is the accumulated snapshot of the run step. For example, a tool calls event may
593
+ look like this:
594
+
595
+ # delta
596
+ tool_calls=[
597
+ RunStepDeltaToolCallsCodeInterpreter(
598
+ index=0,
599
+ type='code_interpreter',
600
+ id=None,
601
+ code_interpreter=CodeInterpreter(input=' sympy', outputs=None)
602
+ )
603
+ ]
604
+ # snapshot
605
+ tool_calls=[
606
+ CodeToolCall(
607
+ id='call_wKayJlcYV12NiadiZuJXxcfx',
608
+ code_interpreter=CodeInterpreter(input='from sympy', outputs=[]),
609
+ type='code_interpreter',
610
+ index=0
611
+ )
612
+ ],
613
+ """
614
+
615
+ async def on_run_step_done(self, run_step: RunStep) -> None:
616
+ """Callback that is fired when a run step is completed"""
617
+
618
+ async def on_tool_call_created(self, tool_call: ToolCall) -> None:
619
+ """Callback that is fired when a tool call is created"""
620
+
621
+ async def on_tool_call_delta(self, delta: ToolCallDelta, snapshot: ToolCall) -> None:
622
+ """Callback that is fired when a tool call delta is encountered"""
623
+
624
+ async def on_tool_call_done(self, tool_call: ToolCall) -> None:
625
+ """Callback that is fired when a tool call delta is encountered"""
626
+
627
+ async def on_exception(self, exception: Exception) -> None:
628
+ """Fired whenever an exception happens during streaming"""
629
+
630
+ async def on_timeout(self) -> None:
631
+ """Fires if the request times out"""
632
+
633
+ async def on_message_created(self, message: Message) -> None:
634
+ """Callback that is fired when a message is created"""
635
+
636
+ async def on_message_delta(self, delta: MessageDelta, snapshot: Message) -> None:
637
+ """Callback that is fired whenever a message delta is returned from the API
638
+
639
+ The first argument is just the delta as sent by the API and the second argument
640
+ is the accumulated snapshot of the message. For example, a text content event may
641
+ look like this:
642
+
643
+ # delta
644
+ MessageDeltaText(
645
+ index=0,
646
+ type='text',
647
+ text=Text(
648
+ value=' Jane'
649
+ ),
650
+ )
651
+ # snapshot
652
+ MessageContentText(
653
+ index=0,
654
+ type='text',
655
+ text=Text(
656
+ value='Certainly, Jane'
657
+ ),
658
+ )
659
+ """
660
+
661
+ async def on_message_done(self, message: Message) -> None:
662
+ """Callback that is fired when a message is completed"""
663
+
664
+ async def on_text_created(self, text: Text) -> None:
665
+ """Callback that is fired when a text content block is created"""
666
+
667
+ async def on_text_delta(self, delta: TextDelta, snapshot: Text) -> None:
668
+ """Callback that is fired whenever a text content delta is returned
669
+ by the API.
670
+
671
+ The first argument is just the delta as sent by the API and the second argument
672
+ is the accumulated snapshot of the text. For example:
673
+
674
+ on_text_delta(TextDelta(value="The"), Text(value="The")),
675
+ on_text_delta(TextDelta(value=" solution"), Text(value="The solution")),
676
+ on_text_delta(TextDelta(value=" to"), Text(value="The solution to")),
677
+ on_text_delta(TextDelta(value=" the"), Text(value="The solution to the")),
678
+ on_text_delta(TextDelta(value=" equation"), Text(value="The solution to the equivalent")),
679
+ """
680
+
681
+ async def on_text_done(self, text: Text) -> None:
682
+ """Callback that is fired when a text content block is finished"""
683
+
684
+ async def on_image_file_done(self, image_file: ImageFile) -> None:
685
+ """Callback that is fired when an image file block is finished"""
686
+
687
+ async def _emit_sse_event(self, event: AssistantStreamEvent) -> None:
688
+ self._current_event = event
689
+ await self.on_event(event)
690
+
691
+ self.__current_message_snapshot, new_content = accumulate_event(
692
+ event=event,
693
+ current_message_snapshot=self.__current_message_snapshot,
694
+ )
695
+ if self.__current_message_snapshot is not None:
696
+ self.__message_snapshots[self.__current_message_snapshot.id] = self.__current_message_snapshot
697
+
698
+ accumulate_run_step(
699
+ event=event,
700
+ run_step_snapshots=self.__run_step_snapshots,
701
+ )
702
+
703
+ for content_delta in new_content:
704
+ assert self.__current_message_snapshot is not None
705
+
706
+ block = self.__current_message_snapshot.content[content_delta.index]
707
+ if block.type == "text":
708
+ await self.on_text_created(block.text)
709
+
710
+ if (
711
+ event.event == "thread.run.completed"
712
+ or event.event == "thread.run.cancelled"
713
+ or event.event == "thread.run.expired"
714
+ or event.event == "thread.run.failed"
715
+ or event.event == "thread.run.requires_action"
716
+ or event.event == "thread.run.incomplete"
717
+ ):
718
+ self.__current_run = event.data
719
+ if self._current_tool_call:
720
+ await self.on_tool_call_done(self._current_tool_call)
721
+ elif (
722
+ event.event == "thread.run.created"
723
+ or event.event == "thread.run.in_progress"
724
+ or event.event == "thread.run.cancelling"
725
+ or event.event == "thread.run.queued"
726
+ ):
727
+ self.__current_run = event.data
728
+ elif event.event == "thread.message.created":
729
+ await self.on_message_created(event.data)
730
+ elif event.event == "thread.message.delta":
731
+ snapshot = self.__current_message_snapshot
732
+ assert snapshot is not None
733
+
734
+ message_delta = event.data.delta
735
+ if message_delta.content is not None:
736
+ for content_delta in message_delta.content:
737
+ if content_delta.type == "text" and content_delta.text:
738
+ snapshot_content = snapshot.content[content_delta.index]
739
+ assert snapshot_content.type == "text"
740
+ await self.on_text_delta(content_delta.text, snapshot_content.text)
741
+
742
+ # If the delta is for a new message content:
743
+ # - emit on_text_done/on_image_file_done for the previous message content
744
+ # - emit on_text_created/on_image_created for the new message content
745
+ if content_delta.index != self._current_message_content_index:
746
+ if self._current_message_content is not None:
747
+ if self._current_message_content.type == "text":
748
+ await self.on_text_done(self._current_message_content.text)
749
+ elif self._current_message_content.type == "image_file":
750
+ await self.on_image_file_done(self._current_message_content.image_file)
751
+
752
+ self._current_message_content_index = content_delta.index
753
+ self._current_message_content = snapshot.content[content_delta.index]
754
+
755
+ # Update the current_message_content (delta event is correctly emitted already)
756
+ self._current_message_content = snapshot.content[content_delta.index]
757
+
758
+ await self.on_message_delta(event.data.delta, snapshot)
759
+ elif event.event == "thread.message.completed" or event.event == "thread.message.incomplete":
760
+ self.__current_message_snapshot = event.data
761
+ self.__message_snapshots[event.data.id] = event.data
762
+
763
+ if self._current_message_content_index is not None:
764
+ content = event.data.content[self._current_message_content_index]
765
+ if content.type == "text":
766
+ await self.on_text_done(content.text)
767
+ elif content.type == "image_file":
768
+ await self.on_image_file_done(content.image_file)
769
+
770
+ await self.on_message_done(event.data)
771
+ elif event.event == "thread.run.step.created":
772
+ self.__current_run_step_id = event.data.id
773
+ await self.on_run_step_created(event.data)
774
+ elif event.event == "thread.run.step.in_progress":
775
+ self.__current_run_step_id = event.data.id
776
+ elif event.event == "thread.run.step.delta":
777
+ step_snapshot = self.__run_step_snapshots[event.data.id]
778
+
779
+ run_step_delta = event.data.delta
780
+ if (
781
+ run_step_delta.step_details
782
+ and run_step_delta.step_details.type == "tool_calls"
783
+ and run_step_delta.step_details.tool_calls is not None
784
+ ):
785
+ assert step_snapshot.step_details.type == "tool_calls"
786
+ for tool_call_delta in run_step_delta.step_details.tool_calls:
787
+ if tool_call_delta.index == self._current_tool_call_index:
788
+ await self.on_tool_call_delta(
789
+ tool_call_delta,
790
+ step_snapshot.step_details.tool_calls[tool_call_delta.index],
791
+ )
792
+
793
+ # If the delta is for a new tool call:
794
+ # - emit on_tool_call_done for the previous tool_call
795
+ # - emit on_tool_call_created for the new tool_call
796
+ if tool_call_delta.index != self._current_tool_call_index:
797
+ if self._current_tool_call is not None:
798
+ await self.on_tool_call_done(self._current_tool_call)
799
+
800
+ self._current_tool_call_index = tool_call_delta.index
801
+ self._current_tool_call = step_snapshot.step_details.tool_calls[tool_call_delta.index]
802
+ await self.on_tool_call_created(self._current_tool_call)
803
+
804
+ # Update the current_tool_call (delta event is correctly emitted already)
805
+ self._current_tool_call = step_snapshot.step_details.tool_calls[tool_call_delta.index]
806
+
807
+ await self.on_run_step_delta(
808
+ event.data.delta,
809
+ step_snapshot,
810
+ )
811
+ elif (
812
+ event.event == "thread.run.step.completed"
813
+ or event.event == "thread.run.step.cancelled"
814
+ or event.event == "thread.run.step.expired"
815
+ or event.event == "thread.run.step.failed"
816
+ ):
817
+ if self._current_tool_call:
818
+ await self.on_tool_call_done(self._current_tool_call)
819
+
820
+ await self.on_run_step_done(event.data)
821
+ self.__current_run_step_id = None
822
+ elif event.event == "thread.created" or event.event == "thread.message.in_progress" or event.event == "error":
823
+ # currently no special handling
824
+ ...
825
+ else:
826
+ # we only want to error at build-time
827
+ if TYPE_CHECKING: # type: ignore[unreachable]
828
+ assert_never(event)
829
+
830
+ self._current_event = None
831
+
832
+ async def __stream__(self) -> AsyncIterator[AssistantStreamEvent]:
833
+ stream = self.__stream
834
+ if not stream:
835
+ raise RuntimeError("Stream has not been started yet")
836
+
837
+ try:
838
+ async for event in stream:
839
+ await self._emit_sse_event(event)
840
+
841
+ yield event
842
+ except (httpx.TimeoutException, asyncio.TimeoutError) as exc:
843
+ await self.on_timeout()
844
+ await self.on_exception(exc)
845
+ raise
846
+ except Exception as exc:
847
+ await self.on_exception(exc)
848
+ raise
849
+ finally:
850
+ await self.on_end()
851
+
852
+
853
+ AsyncAssistantEventHandlerT = TypeVar("AsyncAssistantEventHandlerT", bound=AsyncAssistantEventHandler)
854
+
855
+
856
+ class AsyncAssistantStreamManager(Generic[AsyncAssistantEventHandlerT]):
857
+ """Wrapper over AsyncAssistantStreamEventHandler that is returned by `.stream()`
858
+ so that an async context manager can be used without `await`ing the
859
+ original client call.
860
+
861
+ ```py
862
+ async with client.threads.create_and_run_stream(...) as stream:
863
+ async for event in stream:
864
+ ...
865
+ ```
866
+ """
867
+
868
+ def __init__(
869
+ self,
870
+ api_request: Awaitable[AsyncStream[AssistantStreamEvent]],
871
+ *,
872
+ event_handler: AsyncAssistantEventHandlerT,
873
+ ) -> None:
874
+ self.__stream: AsyncStream[AssistantStreamEvent] | None = None
875
+ self.__event_handler = event_handler
876
+ self.__api_request = api_request
877
+
878
+ async def __aenter__(self) -> AsyncAssistantEventHandlerT:
879
+ self.__stream = await self.__api_request
880
+ self.__event_handler._init(self.__stream)
881
+ return self.__event_handler
882
+
883
+ async def __aexit__(
884
+ self,
885
+ exc_type: type[BaseException] | None,
886
+ exc: BaseException | None,
887
+ exc_tb: TracebackType | None,
888
+ ) -> None:
889
+ if self.__stream is not None:
890
+ await self.__stream.close()
891
+
892
+
893
+ def accumulate_run_step(
894
+ *,
895
+ event: AssistantStreamEvent,
896
+ run_step_snapshots: dict[str, RunStep],
897
+ ) -> None:
898
+ if event.event == "thread.run.step.created":
899
+ run_step_snapshots[event.data.id] = event.data
900
+ return
901
+
902
+ if event.event == "thread.run.step.delta":
903
+ data = event.data
904
+ snapshot = run_step_snapshots[data.id]
905
+
906
+ if data.delta:
907
+ merged = accumulate_delta(
908
+ cast(
909
+ "dict[object, object]",
910
+ model_dump(snapshot, exclude_unset=True, warnings=False),
911
+ ),
912
+ cast(
913
+ "dict[object, object]",
914
+ model_dump(data.delta, exclude_unset=True, warnings=False),
915
+ ),
916
+ )
917
+ run_step_snapshots[snapshot.id] = cast(RunStep, construct_type(type_=RunStep, value=merged))
918
+
919
+ return None
920
+
921
+
922
+ def accumulate_event(
923
+ *,
924
+ event: AssistantStreamEvent,
925
+ current_message_snapshot: Message | None,
926
+ ) -> tuple[Message | None, list[MessageContentDelta]]:
927
+ """Returns a tuple of message snapshot and newly created text message deltas"""
928
+ if event.event == "thread.message.created":
929
+ return event.data, []
930
+
931
+ new_content: list[MessageContentDelta] = []
932
+
933
+ if event.event != "thread.message.delta":
934
+ return current_message_snapshot, []
935
+
936
+ if not current_message_snapshot:
937
+ raise RuntimeError("Encountered a message delta with no previous snapshot")
938
+
939
+ data = event.data
940
+ if data.delta.content:
941
+ for content_delta in data.delta.content:
942
+ try:
943
+ block = current_message_snapshot.content[content_delta.index]
944
+ except IndexError:
945
+ current_message_snapshot.content.insert(
946
+ content_delta.index,
947
+ cast(
948
+ MessageContent,
949
+ construct_type(
950
+ # mypy doesn't allow Content for some reason
951
+ type_=cast(Any, MessageContent),
952
+ value=model_dump(content_delta, exclude_unset=True, warnings=False),
953
+ ),
954
+ ),
955
+ )
956
+ new_content.append(content_delta)
957
+ else:
958
+ merged = accumulate_delta(
959
+ cast(
960
+ "dict[object, object]",
961
+ model_dump(block, exclude_unset=True, warnings=False),
962
+ ),
963
+ cast(
964
+ "dict[object, object]",
965
+ model_dump(content_delta, exclude_unset=True, warnings=False),
966
+ ),
967
+ )
968
+ current_message_snapshot.content[content_delta.index] = cast(
969
+ MessageContent,
970
+ construct_type(
971
+ # mypy doesn't allow Content for some reason
972
+ type_=cast(Any, MessageContent),
973
+ value=merged,
974
+ ),
975
+ )
976
+
977
+ return current_message_snapshot, new_content
978
+
979
+
980
+ def accumulate_delta(acc: dict[object, object], delta: dict[object, object]) -> dict[object, object]:
981
+ for key, delta_value in delta.items():
982
+ if key not in acc:
983
+ acc[key] = delta_value
984
+ continue
985
+
986
+ acc_value = acc[key]
987
+ if acc_value is None:
988
+ acc[key] = delta_value
989
+ continue
990
+
991
+ # the `index` property is used in arrays of objects so it should
992
+ # not be accumulated like other values e.g.
993
+ # [{'foo': 'bar', 'index': 0}]
994
+ #
995
+ # the same applies to `type` properties as they're used for
996
+ # discriminated unions
997
+ if key == "index" or key == "type":
998
+ acc[key] = delta_value
999
+ continue
1000
+
1001
+ if isinstance(acc_value, str) and isinstance(delta_value, str):
1002
+ acc_value += delta_value
1003
+ elif isinstance(acc_value, (int, float)) and isinstance(delta_value, (int, float)):
1004
+ acc_value += delta_value
1005
+ elif is_dict(acc_value) and is_dict(delta_value):
1006
+ acc_value = accumulate_delta(acc_value, delta_value)
1007
+ elif is_list(acc_value) and is_list(delta_value):
1008
+ # for lists of non-dictionary items we'll only ever get new entries
1009
+ # in the array, existing entries will never be changed
1010
+ if all(isinstance(x, (str, int, float)) for x in acc_value):
1011
+ acc_value.extend(delta_value)
1012
+ continue
1013
+
1014
+ for delta_entry in delta_value:
1015
+ if not is_dict(delta_entry):
1016
+ raise TypeError(f"Unexpected list delta entry is not a dictionary: {delta_entry}")
1017
+
1018
+ try:
1019
+ index = delta_entry["index"]
1020
+ except KeyError as exc:
1021
+ raise RuntimeError(f"Expected list delta entry to have an `index` key; {delta_entry}") from exc
1022
+
1023
+ if not isinstance(index, int):
1024
+ raise TypeError(f"Unexpected, list delta entry `index` value is not an integer; {index}")
1025
+
1026
+ try:
1027
+ acc_entry = acc_value[index]
1028
+ except IndexError:
1029
+ acc_value.insert(index, delta_entry)
1030
+ else:
1031
+ if not is_dict(acc_entry):
1032
+ raise TypeError("not handled yet")
1033
+
1034
+ acc_value[index] = accumulate_delta(acc_entry, delta_entry)
1035
+
1036
+ acc[key] = acc_value
1037
+
1038
+ return acc