genesis-flow 1.0.0__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 (645) hide show
  1. genesis_flow-1.0.0.dist-info/METADATA +822 -0
  2. genesis_flow-1.0.0.dist-info/RECORD +645 -0
  3. genesis_flow-1.0.0.dist-info/WHEEL +5 -0
  4. genesis_flow-1.0.0.dist-info/entry_points.txt +19 -0
  5. genesis_flow-1.0.0.dist-info/licenses/LICENSE.txt +202 -0
  6. genesis_flow-1.0.0.dist-info/top_level.txt +1 -0
  7. mlflow/__init__.py +367 -0
  8. mlflow/__main__.py +3 -0
  9. mlflow/ag2/__init__.py +56 -0
  10. mlflow/ag2/ag2_logger.py +294 -0
  11. mlflow/anthropic/__init__.py +40 -0
  12. mlflow/anthropic/autolog.py +129 -0
  13. mlflow/anthropic/chat.py +144 -0
  14. mlflow/artifacts/__init__.py +268 -0
  15. mlflow/autogen/__init__.py +144 -0
  16. mlflow/autogen/chat.py +142 -0
  17. mlflow/azure/__init__.py +26 -0
  18. mlflow/azure/auth_handler.py +257 -0
  19. mlflow/azure/client.py +319 -0
  20. mlflow/azure/config.py +120 -0
  21. mlflow/azure/connection_factory.py +340 -0
  22. mlflow/azure/exceptions.py +27 -0
  23. mlflow/azure/stores.py +327 -0
  24. mlflow/azure/utils.py +183 -0
  25. mlflow/bedrock/__init__.py +45 -0
  26. mlflow/bedrock/_autolog.py +202 -0
  27. mlflow/bedrock/chat.py +122 -0
  28. mlflow/bedrock/stream.py +160 -0
  29. mlflow/bedrock/utils.py +43 -0
  30. mlflow/cli.py +707 -0
  31. mlflow/client.py +12 -0
  32. mlflow/config/__init__.py +56 -0
  33. mlflow/crewai/__init__.py +79 -0
  34. mlflow/crewai/autolog.py +253 -0
  35. mlflow/crewai/chat.py +29 -0
  36. mlflow/data/__init__.py +75 -0
  37. mlflow/data/artifact_dataset_sources.py +170 -0
  38. mlflow/data/code_dataset_source.py +40 -0
  39. mlflow/data/dataset.py +123 -0
  40. mlflow/data/dataset_registry.py +168 -0
  41. mlflow/data/dataset_source.py +110 -0
  42. mlflow/data/dataset_source_registry.py +219 -0
  43. mlflow/data/delta_dataset_source.py +167 -0
  44. mlflow/data/digest_utils.py +108 -0
  45. mlflow/data/evaluation_dataset.py +562 -0
  46. mlflow/data/filesystem_dataset_source.py +81 -0
  47. mlflow/data/http_dataset_source.py +145 -0
  48. mlflow/data/huggingface_dataset.py +258 -0
  49. mlflow/data/huggingface_dataset_source.py +118 -0
  50. mlflow/data/meta_dataset.py +104 -0
  51. mlflow/data/numpy_dataset.py +223 -0
  52. mlflow/data/pandas_dataset.py +231 -0
  53. mlflow/data/polars_dataset.py +352 -0
  54. mlflow/data/pyfunc_dataset_mixin.py +31 -0
  55. mlflow/data/schema.py +76 -0
  56. mlflow/data/sources.py +1 -0
  57. mlflow/data/spark_dataset.py +406 -0
  58. mlflow/data/spark_dataset_source.py +74 -0
  59. mlflow/data/spark_delta_utils.py +118 -0
  60. mlflow/data/tensorflow_dataset.py +350 -0
  61. mlflow/data/uc_volume_dataset_source.py +81 -0
  62. mlflow/db.py +27 -0
  63. mlflow/dspy/__init__.py +17 -0
  64. mlflow/dspy/autolog.py +197 -0
  65. mlflow/dspy/callback.py +398 -0
  66. mlflow/dspy/constant.py +1 -0
  67. mlflow/dspy/load.py +93 -0
  68. mlflow/dspy/save.py +393 -0
  69. mlflow/dspy/util.py +109 -0
  70. mlflow/dspy/wrapper.py +226 -0
  71. mlflow/entities/__init__.py +104 -0
  72. mlflow/entities/_mlflow_object.py +52 -0
  73. mlflow/entities/assessment.py +545 -0
  74. mlflow/entities/assessment_error.py +80 -0
  75. mlflow/entities/assessment_source.py +141 -0
  76. mlflow/entities/dataset.py +92 -0
  77. mlflow/entities/dataset_input.py +51 -0
  78. mlflow/entities/dataset_summary.py +62 -0
  79. mlflow/entities/document.py +48 -0
  80. mlflow/entities/experiment.py +109 -0
  81. mlflow/entities/experiment_tag.py +35 -0
  82. mlflow/entities/file_info.py +45 -0
  83. mlflow/entities/input_tag.py +35 -0
  84. mlflow/entities/lifecycle_stage.py +35 -0
  85. mlflow/entities/logged_model.py +228 -0
  86. mlflow/entities/logged_model_input.py +26 -0
  87. mlflow/entities/logged_model_output.py +32 -0
  88. mlflow/entities/logged_model_parameter.py +46 -0
  89. mlflow/entities/logged_model_status.py +74 -0
  90. mlflow/entities/logged_model_tag.py +33 -0
  91. mlflow/entities/metric.py +200 -0
  92. mlflow/entities/model_registry/__init__.py +29 -0
  93. mlflow/entities/model_registry/_model_registry_entity.py +13 -0
  94. mlflow/entities/model_registry/model_version.py +243 -0
  95. mlflow/entities/model_registry/model_version_deployment_job_run_state.py +44 -0
  96. mlflow/entities/model_registry/model_version_deployment_job_state.py +70 -0
  97. mlflow/entities/model_registry/model_version_search.py +25 -0
  98. mlflow/entities/model_registry/model_version_stages.py +25 -0
  99. mlflow/entities/model_registry/model_version_status.py +35 -0
  100. mlflow/entities/model_registry/model_version_tag.py +35 -0
  101. mlflow/entities/model_registry/prompt.py +73 -0
  102. mlflow/entities/model_registry/prompt_version.py +244 -0
  103. mlflow/entities/model_registry/registered_model.py +175 -0
  104. mlflow/entities/model_registry/registered_model_alias.py +35 -0
  105. mlflow/entities/model_registry/registered_model_deployment_job_state.py +39 -0
  106. mlflow/entities/model_registry/registered_model_search.py +25 -0
  107. mlflow/entities/model_registry/registered_model_tag.py +35 -0
  108. mlflow/entities/multipart_upload.py +74 -0
  109. mlflow/entities/param.py +49 -0
  110. mlflow/entities/run.py +97 -0
  111. mlflow/entities/run_data.py +84 -0
  112. mlflow/entities/run_info.py +188 -0
  113. mlflow/entities/run_inputs.py +59 -0
  114. mlflow/entities/run_outputs.py +43 -0
  115. mlflow/entities/run_status.py +41 -0
  116. mlflow/entities/run_tag.py +36 -0
  117. mlflow/entities/source_type.py +31 -0
  118. mlflow/entities/span.py +774 -0
  119. mlflow/entities/span_event.py +96 -0
  120. mlflow/entities/span_status.py +102 -0
  121. mlflow/entities/trace.py +317 -0
  122. mlflow/entities/trace_data.py +71 -0
  123. mlflow/entities/trace_info.py +220 -0
  124. mlflow/entities/trace_info_v2.py +162 -0
  125. mlflow/entities/trace_location.py +173 -0
  126. mlflow/entities/trace_state.py +39 -0
  127. mlflow/entities/trace_status.py +68 -0
  128. mlflow/entities/view_type.py +51 -0
  129. mlflow/environment_variables.py +866 -0
  130. mlflow/evaluation/__init__.py +16 -0
  131. mlflow/evaluation/assessment.py +369 -0
  132. mlflow/evaluation/evaluation.py +411 -0
  133. mlflow/evaluation/evaluation_tag.py +61 -0
  134. mlflow/evaluation/fluent.py +48 -0
  135. mlflow/evaluation/utils.py +201 -0
  136. mlflow/exceptions.py +213 -0
  137. mlflow/experiments.py +140 -0
  138. mlflow/gemini/__init__.py +81 -0
  139. mlflow/gemini/autolog.py +186 -0
  140. mlflow/gemini/chat.py +261 -0
  141. mlflow/genai/__init__.py +71 -0
  142. mlflow/genai/datasets/__init__.py +67 -0
  143. mlflow/genai/datasets/evaluation_dataset.py +131 -0
  144. mlflow/genai/evaluation/__init__.py +3 -0
  145. mlflow/genai/evaluation/base.py +411 -0
  146. mlflow/genai/evaluation/constant.py +23 -0
  147. mlflow/genai/evaluation/utils.py +244 -0
  148. mlflow/genai/judges/__init__.py +21 -0
  149. mlflow/genai/judges/databricks.py +404 -0
  150. mlflow/genai/label_schemas/__init__.py +153 -0
  151. mlflow/genai/label_schemas/label_schemas.py +209 -0
  152. mlflow/genai/labeling/__init__.py +159 -0
  153. mlflow/genai/labeling/labeling.py +250 -0
  154. mlflow/genai/optimize/__init__.py +13 -0
  155. mlflow/genai/optimize/base.py +198 -0
  156. mlflow/genai/optimize/optimizers/__init__.py +4 -0
  157. mlflow/genai/optimize/optimizers/base_optimizer.py +38 -0
  158. mlflow/genai/optimize/optimizers/dspy_mipro_optimizer.py +221 -0
  159. mlflow/genai/optimize/optimizers/dspy_optimizer.py +91 -0
  160. mlflow/genai/optimize/optimizers/utils/dspy_mipro_callback.py +76 -0
  161. mlflow/genai/optimize/optimizers/utils/dspy_mipro_utils.py +18 -0
  162. mlflow/genai/optimize/types.py +75 -0
  163. mlflow/genai/optimize/util.py +30 -0
  164. mlflow/genai/prompts/__init__.py +206 -0
  165. mlflow/genai/scheduled_scorers.py +431 -0
  166. mlflow/genai/scorers/__init__.py +26 -0
  167. mlflow/genai/scorers/base.py +492 -0
  168. mlflow/genai/scorers/builtin_scorers.py +765 -0
  169. mlflow/genai/scorers/scorer_utils.py +138 -0
  170. mlflow/genai/scorers/validation.py +165 -0
  171. mlflow/genai/utils/data_validation.py +146 -0
  172. mlflow/genai/utils/enum_utils.py +23 -0
  173. mlflow/genai/utils/trace_utils.py +211 -0
  174. mlflow/groq/__init__.py +42 -0
  175. mlflow/groq/_groq_autolog.py +74 -0
  176. mlflow/johnsnowlabs/__init__.py +888 -0
  177. mlflow/langchain/__init__.py +24 -0
  178. mlflow/langchain/api_request_parallel_processor.py +330 -0
  179. mlflow/langchain/autolog.py +147 -0
  180. mlflow/langchain/chat_agent_langgraph.py +340 -0
  181. mlflow/langchain/constant.py +1 -0
  182. mlflow/langchain/constants.py +1 -0
  183. mlflow/langchain/databricks_dependencies.py +444 -0
  184. mlflow/langchain/langchain_tracer.py +597 -0
  185. mlflow/langchain/model.py +919 -0
  186. mlflow/langchain/output_parsers.py +142 -0
  187. mlflow/langchain/retriever_chain.py +153 -0
  188. mlflow/langchain/runnables.py +527 -0
  189. mlflow/langchain/utils/chat.py +402 -0
  190. mlflow/langchain/utils/logging.py +671 -0
  191. mlflow/langchain/utils/serialization.py +36 -0
  192. mlflow/legacy_databricks_cli/__init__.py +0 -0
  193. mlflow/legacy_databricks_cli/configure/__init__.py +0 -0
  194. mlflow/legacy_databricks_cli/configure/provider.py +482 -0
  195. mlflow/litellm/__init__.py +175 -0
  196. mlflow/llama_index/__init__.py +22 -0
  197. mlflow/llama_index/autolog.py +55 -0
  198. mlflow/llama_index/chat.py +43 -0
  199. mlflow/llama_index/constant.py +1 -0
  200. mlflow/llama_index/model.py +577 -0
  201. mlflow/llama_index/pyfunc_wrapper.py +332 -0
  202. mlflow/llama_index/serialize_objects.py +188 -0
  203. mlflow/llama_index/tracer.py +561 -0
  204. mlflow/metrics/__init__.py +479 -0
  205. mlflow/metrics/base.py +39 -0
  206. mlflow/metrics/genai/__init__.py +25 -0
  207. mlflow/metrics/genai/base.py +101 -0
  208. mlflow/metrics/genai/genai_metric.py +771 -0
  209. mlflow/metrics/genai/metric_definitions.py +450 -0
  210. mlflow/metrics/genai/model_utils.py +371 -0
  211. mlflow/metrics/genai/prompt_template.py +68 -0
  212. mlflow/metrics/genai/prompts/__init__.py +0 -0
  213. mlflow/metrics/genai/prompts/v1.py +422 -0
  214. mlflow/metrics/genai/utils.py +6 -0
  215. mlflow/metrics/metric_definitions.py +619 -0
  216. mlflow/mismatch.py +34 -0
  217. mlflow/mistral/__init__.py +34 -0
  218. mlflow/mistral/autolog.py +71 -0
  219. mlflow/mistral/chat.py +135 -0
  220. mlflow/ml_package_versions.py +452 -0
  221. mlflow/models/__init__.py +97 -0
  222. mlflow/models/auth_policy.py +83 -0
  223. mlflow/models/cli.py +354 -0
  224. mlflow/models/container/__init__.py +294 -0
  225. mlflow/models/container/scoring_server/__init__.py +0 -0
  226. mlflow/models/container/scoring_server/nginx.conf +39 -0
  227. mlflow/models/dependencies_schemas.py +287 -0
  228. mlflow/models/display_utils.py +158 -0
  229. mlflow/models/docker_utils.py +211 -0
  230. mlflow/models/evaluation/__init__.py +23 -0
  231. mlflow/models/evaluation/_shap_patch.py +64 -0
  232. mlflow/models/evaluation/artifacts.py +194 -0
  233. mlflow/models/evaluation/base.py +1811 -0
  234. mlflow/models/evaluation/calibration_curve.py +109 -0
  235. mlflow/models/evaluation/default_evaluator.py +996 -0
  236. mlflow/models/evaluation/deprecated.py +23 -0
  237. mlflow/models/evaluation/evaluator_registry.py +80 -0
  238. mlflow/models/evaluation/evaluators/classifier.py +704 -0
  239. mlflow/models/evaluation/evaluators/default.py +233 -0
  240. mlflow/models/evaluation/evaluators/regressor.py +96 -0
  241. mlflow/models/evaluation/evaluators/shap.py +296 -0
  242. mlflow/models/evaluation/lift_curve.py +178 -0
  243. mlflow/models/evaluation/utils/metric.py +123 -0
  244. mlflow/models/evaluation/utils/trace.py +179 -0
  245. mlflow/models/evaluation/validation.py +434 -0
  246. mlflow/models/flavor_backend.py +93 -0
  247. mlflow/models/flavor_backend_registry.py +53 -0
  248. mlflow/models/model.py +1639 -0
  249. mlflow/models/model_config.py +150 -0
  250. mlflow/models/notebook_resources/agent_evaluation_template.html +235 -0
  251. mlflow/models/notebook_resources/eval_with_dataset_example.py +22 -0
  252. mlflow/models/notebook_resources/eval_with_synthetic_example.py +22 -0
  253. mlflow/models/python_api.py +369 -0
  254. mlflow/models/rag_signatures.py +128 -0
  255. mlflow/models/resources.py +321 -0
  256. mlflow/models/signature.py +662 -0
  257. mlflow/models/utils.py +2054 -0
  258. mlflow/models/wheeled_model.py +280 -0
  259. mlflow/openai/__init__.py +57 -0
  260. mlflow/openai/_agent_tracer.py +364 -0
  261. mlflow/openai/api_request_parallel_processor.py +131 -0
  262. mlflow/openai/autolog.py +509 -0
  263. mlflow/openai/constant.py +1 -0
  264. mlflow/openai/model.py +824 -0
  265. mlflow/openai/utils/chat_schema.py +367 -0
  266. mlflow/optuna/__init__.py +3 -0
  267. mlflow/optuna/storage.py +646 -0
  268. mlflow/plugins/__init__.py +72 -0
  269. mlflow/plugins/base.py +358 -0
  270. mlflow/plugins/builtin/__init__.py +24 -0
  271. mlflow/plugins/builtin/pytorch_plugin.py +150 -0
  272. mlflow/plugins/builtin/sklearn_plugin.py +158 -0
  273. mlflow/plugins/builtin/transformers_plugin.py +187 -0
  274. mlflow/plugins/cli.py +321 -0
  275. mlflow/plugins/discovery.py +340 -0
  276. mlflow/plugins/manager.py +465 -0
  277. mlflow/plugins/registry.py +316 -0
  278. mlflow/plugins/templates/framework_plugin_template.py +329 -0
  279. mlflow/prompt/constants.py +20 -0
  280. mlflow/prompt/promptlab_model.py +197 -0
  281. mlflow/prompt/registry_utils.py +248 -0
  282. mlflow/promptflow/__init__.py +495 -0
  283. mlflow/protos/__init__.py +0 -0
  284. mlflow/protos/assessments_pb2.py +174 -0
  285. mlflow/protos/databricks_artifacts_pb2.py +489 -0
  286. mlflow/protos/databricks_filesystem_service_pb2.py +196 -0
  287. mlflow/protos/databricks_managed_catalog_messages_pb2.py +95 -0
  288. mlflow/protos/databricks_managed_catalog_service_pb2.py +86 -0
  289. mlflow/protos/databricks_pb2.py +267 -0
  290. mlflow/protos/databricks_trace_server_pb2.py +374 -0
  291. mlflow/protos/databricks_uc_registry_messages_pb2.py +1249 -0
  292. mlflow/protos/databricks_uc_registry_service_pb2.py +170 -0
  293. mlflow/protos/facet_feature_statistics_pb2.py +296 -0
  294. mlflow/protos/internal_pb2.py +77 -0
  295. mlflow/protos/mlflow_artifacts_pb2.py +336 -0
  296. mlflow/protos/model_registry_pb2.py +1073 -0
  297. mlflow/protos/scalapb/__init__.py +0 -0
  298. mlflow/protos/scalapb/scalapb_pb2.py +104 -0
  299. mlflow/protos/service_pb2.py +2600 -0
  300. mlflow/protos/unity_catalog_oss_messages_pb2.py +457 -0
  301. mlflow/protos/unity_catalog_oss_service_pb2.py +130 -0
  302. mlflow/protos/unity_catalog_prompt_messages_pb2.py +447 -0
  303. mlflow/protos/unity_catalog_prompt_messages_pb2_grpc.py +24 -0
  304. mlflow/protos/unity_catalog_prompt_service_pb2.py +164 -0
  305. mlflow/protos/unity_catalog_prompt_service_pb2_grpc.py +785 -0
  306. mlflow/py.typed +0 -0
  307. mlflow/pydantic_ai/__init__.py +57 -0
  308. mlflow/pydantic_ai/autolog.py +173 -0
  309. mlflow/pyfunc/__init__.py +3844 -0
  310. mlflow/pyfunc/_mlflow_pyfunc_backend_predict.py +61 -0
  311. mlflow/pyfunc/backend.py +523 -0
  312. mlflow/pyfunc/context.py +78 -0
  313. mlflow/pyfunc/dbconnect_artifact_cache.py +144 -0
  314. mlflow/pyfunc/loaders/__init__.py +7 -0
  315. mlflow/pyfunc/loaders/chat_agent.py +117 -0
  316. mlflow/pyfunc/loaders/chat_model.py +125 -0
  317. mlflow/pyfunc/loaders/code_model.py +31 -0
  318. mlflow/pyfunc/loaders/responses_agent.py +112 -0
  319. mlflow/pyfunc/mlserver.py +46 -0
  320. mlflow/pyfunc/model.py +1473 -0
  321. mlflow/pyfunc/scoring_server/__init__.py +604 -0
  322. mlflow/pyfunc/scoring_server/app.py +7 -0
  323. mlflow/pyfunc/scoring_server/client.py +146 -0
  324. mlflow/pyfunc/spark_model_cache.py +48 -0
  325. mlflow/pyfunc/stdin_server.py +44 -0
  326. mlflow/pyfunc/utils/__init__.py +3 -0
  327. mlflow/pyfunc/utils/data_validation.py +224 -0
  328. mlflow/pyfunc/utils/environment.py +22 -0
  329. mlflow/pyfunc/utils/input_converter.py +47 -0
  330. mlflow/pyfunc/utils/serving_data_parser.py +11 -0
  331. mlflow/pytorch/__init__.py +1171 -0
  332. mlflow/pytorch/_lightning_autolog.py +580 -0
  333. mlflow/pytorch/_pytorch_autolog.py +50 -0
  334. mlflow/pytorch/pickle_module.py +35 -0
  335. mlflow/rfunc/__init__.py +42 -0
  336. mlflow/rfunc/backend.py +134 -0
  337. mlflow/runs.py +89 -0
  338. mlflow/server/__init__.py +302 -0
  339. mlflow/server/auth/__init__.py +1224 -0
  340. mlflow/server/auth/__main__.py +4 -0
  341. mlflow/server/auth/basic_auth.ini +6 -0
  342. mlflow/server/auth/cli.py +11 -0
  343. mlflow/server/auth/client.py +537 -0
  344. mlflow/server/auth/config.py +34 -0
  345. mlflow/server/auth/db/__init__.py +0 -0
  346. mlflow/server/auth/db/cli.py +18 -0
  347. mlflow/server/auth/db/migrations/__init__.py +0 -0
  348. mlflow/server/auth/db/migrations/alembic.ini +110 -0
  349. mlflow/server/auth/db/migrations/env.py +76 -0
  350. mlflow/server/auth/db/migrations/versions/8606fa83a998_initial_migration.py +51 -0
  351. mlflow/server/auth/db/migrations/versions/__init__.py +0 -0
  352. mlflow/server/auth/db/models.py +67 -0
  353. mlflow/server/auth/db/utils.py +37 -0
  354. mlflow/server/auth/entities.py +165 -0
  355. mlflow/server/auth/logo.py +14 -0
  356. mlflow/server/auth/permissions.py +65 -0
  357. mlflow/server/auth/routes.py +18 -0
  358. mlflow/server/auth/sqlalchemy_store.py +263 -0
  359. mlflow/server/graphql/__init__.py +0 -0
  360. mlflow/server/graphql/autogenerated_graphql_schema.py +353 -0
  361. mlflow/server/graphql/graphql_custom_scalars.py +24 -0
  362. mlflow/server/graphql/graphql_errors.py +15 -0
  363. mlflow/server/graphql/graphql_no_batching.py +89 -0
  364. mlflow/server/graphql/graphql_schema_extensions.py +74 -0
  365. mlflow/server/handlers.py +3217 -0
  366. mlflow/server/prometheus_exporter.py +17 -0
  367. mlflow/server/validation.py +30 -0
  368. mlflow/shap/__init__.py +691 -0
  369. mlflow/sklearn/__init__.py +1994 -0
  370. mlflow/sklearn/utils.py +1041 -0
  371. mlflow/smolagents/__init__.py +66 -0
  372. mlflow/smolagents/autolog.py +139 -0
  373. mlflow/smolagents/chat.py +29 -0
  374. mlflow/store/__init__.py +10 -0
  375. mlflow/store/_unity_catalog/__init__.py +1 -0
  376. mlflow/store/_unity_catalog/lineage/__init__.py +1 -0
  377. mlflow/store/_unity_catalog/lineage/constants.py +2 -0
  378. mlflow/store/_unity_catalog/registry/__init__.py +6 -0
  379. mlflow/store/_unity_catalog/registry/prompt_info.py +75 -0
  380. mlflow/store/_unity_catalog/registry/rest_store.py +1740 -0
  381. mlflow/store/_unity_catalog/registry/uc_oss_rest_store.py +507 -0
  382. mlflow/store/_unity_catalog/registry/utils.py +121 -0
  383. mlflow/store/artifact/__init__.py +0 -0
  384. mlflow/store/artifact/artifact_repo.py +472 -0
  385. mlflow/store/artifact/artifact_repository_registry.py +154 -0
  386. mlflow/store/artifact/azure_blob_artifact_repo.py +275 -0
  387. mlflow/store/artifact/azure_data_lake_artifact_repo.py +295 -0
  388. mlflow/store/artifact/cli.py +141 -0
  389. mlflow/store/artifact/cloud_artifact_repo.py +332 -0
  390. mlflow/store/artifact/databricks_artifact_repo.py +729 -0
  391. mlflow/store/artifact/databricks_artifact_repo_resources.py +301 -0
  392. mlflow/store/artifact/databricks_logged_model_artifact_repo.py +93 -0
  393. mlflow/store/artifact/databricks_models_artifact_repo.py +216 -0
  394. mlflow/store/artifact/databricks_sdk_artifact_repo.py +134 -0
  395. mlflow/store/artifact/databricks_sdk_models_artifact_repo.py +97 -0
  396. mlflow/store/artifact/dbfs_artifact_repo.py +240 -0
  397. mlflow/store/artifact/ftp_artifact_repo.py +132 -0
  398. mlflow/store/artifact/gcs_artifact_repo.py +296 -0
  399. mlflow/store/artifact/hdfs_artifact_repo.py +209 -0
  400. mlflow/store/artifact/http_artifact_repo.py +218 -0
  401. mlflow/store/artifact/local_artifact_repo.py +142 -0
  402. mlflow/store/artifact/mlflow_artifacts_repo.py +94 -0
  403. mlflow/store/artifact/models_artifact_repo.py +259 -0
  404. mlflow/store/artifact/optimized_s3_artifact_repo.py +356 -0
  405. mlflow/store/artifact/presigned_url_artifact_repo.py +173 -0
  406. mlflow/store/artifact/r2_artifact_repo.py +70 -0
  407. mlflow/store/artifact/runs_artifact_repo.py +265 -0
  408. mlflow/store/artifact/s3_artifact_repo.py +330 -0
  409. mlflow/store/artifact/sftp_artifact_repo.py +141 -0
  410. mlflow/store/artifact/uc_volume_artifact_repo.py +76 -0
  411. mlflow/store/artifact/unity_catalog_models_artifact_repo.py +168 -0
  412. mlflow/store/artifact/unity_catalog_oss_models_artifact_repo.py +168 -0
  413. mlflow/store/artifact/utils/__init__.py +0 -0
  414. mlflow/store/artifact/utils/models.py +148 -0
  415. mlflow/store/db/__init__.py +0 -0
  416. mlflow/store/db/base_sql_model.py +3 -0
  417. mlflow/store/db/db_types.py +10 -0
  418. mlflow/store/db/utils.py +314 -0
  419. mlflow/store/db_migrations/__init__.py +0 -0
  420. mlflow/store/db_migrations/alembic.ini +74 -0
  421. mlflow/store/db_migrations/env.py +84 -0
  422. mlflow/store/db_migrations/versions/0584bdc529eb_add_cascading_deletion_to_datasets_from_experiments.py +88 -0
  423. mlflow/store/db_migrations/versions/0a8213491aaa_drop_duplicate_killed_constraint.py +49 -0
  424. mlflow/store/db_migrations/versions/0c779009ac13_add_deleted_time_field_to_runs_table.py +24 -0
  425. mlflow/store/db_migrations/versions/181f10493468_allow_nulls_for_metric_values.py +35 -0
  426. mlflow/store/db_migrations/versions/27a6a02d2cf1_add_model_version_tags_table.py +38 -0
  427. mlflow/store/db_migrations/versions/2b4d017a5e9b_add_model_registry_tables_to_db.py +77 -0
  428. mlflow/store/db_migrations/versions/2d6e25af4d3e_increase_max_param_val_length.py +33 -0
  429. mlflow/store/db_migrations/versions/3500859a5d39_add_model_aliases_table.py +50 -0
  430. mlflow/store/db_migrations/versions/39d1c3be5f05_add_is_nan_constraint_for_metrics_tables_if_necessary.py +41 -0
  431. mlflow/store/db_migrations/versions/400f98739977_add_logged_model_tables.py +123 -0
  432. mlflow/store/db_migrations/versions/4465047574b1_increase_max_dataset_schema_size.py +38 -0
  433. mlflow/store/db_migrations/versions/451aebb31d03_add_metric_step.py +35 -0
  434. mlflow/store/db_migrations/versions/5b0e9adcef9c_add_cascade_deletion_to_trace_tables_fk.py +40 -0
  435. mlflow/store/db_migrations/versions/6953534de441_add_step_to_inputs_table.py +25 -0
  436. mlflow/store/db_migrations/versions/728d730b5ebd_add_registered_model_tags_table.py +38 -0
  437. mlflow/store/db_migrations/versions/7ac759974ad8_update_run_tags_with_larger_limit.py +36 -0
  438. mlflow/store/db_migrations/versions/7f2a7d5fae7d_add_datasets_inputs_input_tags_tables.py +82 -0
  439. mlflow/store/db_migrations/versions/84291f40a231_add_run_link_to_model_version.py +26 -0
  440. mlflow/store/db_migrations/versions/867495a8f9d4_add_trace_tables.py +90 -0
  441. mlflow/store/db_migrations/versions/89d4b8295536_create_latest_metrics_table.py +169 -0
  442. mlflow/store/db_migrations/versions/90e64c465722_migrate_user_column_to_tags.py +64 -0
  443. mlflow/store/db_migrations/versions/97727af70f4d_creation_time_last_update_time_experiments.py +25 -0
  444. mlflow/store/db_migrations/versions/__init__.py +0 -0
  445. mlflow/store/db_migrations/versions/a8c4a736bde6_allow_nulls_for_run_id.py +27 -0
  446. mlflow/store/db_migrations/versions/acf3f17fdcc7_add_storage_location_field_to_model_.py +29 -0
  447. mlflow/store/db_migrations/versions/bd07f7e963c5_create_index_on_run_uuid.py +26 -0
  448. mlflow/store/db_migrations/versions/bda7b8c39065_increase_model_version_tag_value_limit.py +38 -0
  449. mlflow/store/db_migrations/versions/c48cb773bb87_reset_default_value_for_is_nan_in_metrics_table_for_mysql.py +41 -0
  450. mlflow/store/db_migrations/versions/cbc13b556ace_add_v3_trace_schema_columns.py +31 -0
  451. mlflow/store/db_migrations/versions/cc1f77228345_change_param_value_length_to_500.py +34 -0
  452. mlflow/store/db_migrations/versions/cfd24bdc0731_update_run_status_constraint_with_killed.py +78 -0
  453. mlflow/store/db_migrations/versions/df50e92ffc5e_add_experiment_tags_table.py +38 -0
  454. mlflow/store/db_migrations/versions/f5a4f2784254_increase_run_tag_value_limit.py +36 -0
  455. mlflow/store/entities/__init__.py +3 -0
  456. mlflow/store/entities/paged_list.py +18 -0
  457. mlflow/store/model_registry/__init__.py +10 -0
  458. mlflow/store/model_registry/abstract_store.py +1081 -0
  459. mlflow/store/model_registry/base_rest_store.py +44 -0
  460. mlflow/store/model_registry/databricks_workspace_model_registry_rest_store.py +37 -0
  461. mlflow/store/model_registry/dbmodels/__init__.py +0 -0
  462. mlflow/store/model_registry/dbmodels/models.py +206 -0
  463. mlflow/store/model_registry/file_store.py +1091 -0
  464. mlflow/store/model_registry/rest_store.py +481 -0
  465. mlflow/store/model_registry/sqlalchemy_store.py +1286 -0
  466. mlflow/store/tracking/__init__.py +23 -0
  467. mlflow/store/tracking/abstract_store.py +816 -0
  468. mlflow/store/tracking/dbmodels/__init__.py +0 -0
  469. mlflow/store/tracking/dbmodels/initial_models.py +243 -0
  470. mlflow/store/tracking/dbmodels/models.py +1073 -0
  471. mlflow/store/tracking/file_store.py +2438 -0
  472. mlflow/store/tracking/postgres_managed_identity.py +146 -0
  473. mlflow/store/tracking/rest_store.py +1131 -0
  474. mlflow/store/tracking/sqlalchemy_store.py +2785 -0
  475. mlflow/system_metrics/__init__.py +61 -0
  476. mlflow/system_metrics/metrics/__init__.py +0 -0
  477. mlflow/system_metrics/metrics/base_metrics_monitor.py +32 -0
  478. mlflow/system_metrics/metrics/cpu_monitor.py +23 -0
  479. mlflow/system_metrics/metrics/disk_monitor.py +21 -0
  480. mlflow/system_metrics/metrics/gpu_monitor.py +71 -0
  481. mlflow/system_metrics/metrics/network_monitor.py +34 -0
  482. mlflow/system_metrics/metrics/rocm_monitor.py +123 -0
  483. mlflow/system_metrics/system_metrics_monitor.py +198 -0
  484. mlflow/tracing/__init__.py +16 -0
  485. mlflow/tracing/assessment.py +356 -0
  486. mlflow/tracing/client.py +531 -0
  487. mlflow/tracing/config.py +125 -0
  488. mlflow/tracing/constant.py +105 -0
  489. mlflow/tracing/destination.py +81 -0
  490. mlflow/tracing/display/__init__.py +40 -0
  491. mlflow/tracing/display/display_handler.py +196 -0
  492. mlflow/tracing/export/async_export_queue.py +186 -0
  493. mlflow/tracing/export/inference_table.py +138 -0
  494. mlflow/tracing/export/mlflow_v3.py +137 -0
  495. mlflow/tracing/export/utils.py +70 -0
  496. mlflow/tracing/fluent.py +1417 -0
  497. mlflow/tracing/processor/base_mlflow.py +199 -0
  498. mlflow/tracing/processor/inference_table.py +175 -0
  499. mlflow/tracing/processor/mlflow_v3.py +47 -0
  500. mlflow/tracing/processor/otel.py +73 -0
  501. mlflow/tracing/provider.py +487 -0
  502. mlflow/tracing/trace_manager.py +200 -0
  503. mlflow/tracing/utils/__init__.py +616 -0
  504. mlflow/tracing/utils/artifact_utils.py +28 -0
  505. mlflow/tracing/utils/copy.py +55 -0
  506. mlflow/tracing/utils/environment.py +55 -0
  507. mlflow/tracing/utils/exception.py +21 -0
  508. mlflow/tracing/utils/once.py +35 -0
  509. mlflow/tracing/utils/otlp.py +63 -0
  510. mlflow/tracing/utils/processor.py +54 -0
  511. mlflow/tracing/utils/search.py +292 -0
  512. mlflow/tracing/utils/timeout.py +250 -0
  513. mlflow/tracing/utils/token.py +19 -0
  514. mlflow/tracing/utils/truncation.py +124 -0
  515. mlflow/tracing/utils/warning.py +76 -0
  516. mlflow/tracking/__init__.py +39 -0
  517. mlflow/tracking/_model_registry/__init__.py +1 -0
  518. mlflow/tracking/_model_registry/client.py +764 -0
  519. mlflow/tracking/_model_registry/fluent.py +853 -0
  520. mlflow/tracking/_model_registry/registry.py +67 -0
  521. mlflow/tracking/_model_registry/utils.py +251 -0
  522. mlflow/tracking/_tracking_service/__init__.py +0 -0
  523. mlflow/tracking/_tracking_service/client.py +883 -0
  524. mlflow/tracking/_tracking_service/registry.py +56 -0
  525. mlflow/tracking/_tracking_service/utils.py +275 -0
  526. mlflow/tracking/artifact_utils.py +179 -0
  527. mlflow/tracking/client.py +5900 -0
  528. mlflow/tracking/context/__init__.py +0 -0
  529. mlflow/tracking/context/abstract_context.py +35 -0
  530. mlflow/tracking/context/databricks_cluster_context.py +15 -0
  531. mlflow/tracking/context/databricks_command_context.py +15 -0
  532. mlflow/tracking/context/databricks_job_context.py +49 -0
  533. mlflow/tracking/context/databricks_notebook_context.py +41 -0
  534. mlflow/tracking/context/databricks_repo_context.py +43 -0
  535. mlflow/tracking/context/default_context.py +51 -0
  536. mlflow/tracking/context/git_context.py +32 -0
  537. mlflow/tracking/context/registry.py +98 -0
  538. mlflow/tracking/context/system_environment_context.py +15 -0
  539. mlflow/tracking/default_experiment/__init__.py +1 -0
  540. mlflow/tracking/default_experiment/abstract_context.py +43 -0
  541. mlflow/tracking/default_experiment/databricks_notebook_experiment_provider.py +44 -0
  542. mlflow/tracking/default_experiment/registry.py +75 -0
  543. mlflow/tracking/fluent.py +3595 -0
  544. mlflow/tracking/metric_value_conversion_utils.py +93 -0
  545. mlflow/tracking/multimedia.py +206 -0
  546. mlflow/tracking/registry.py +86 -0
  547. mlflow/tracking/request_auth/__init__.py +0 -0
  548. mlflow/tracking/request_auth/abstract_request_auth_provider.py +34 -0
  549. mlflow/tracking/request_auth/registry.py +60 -0
  550. mlflow/tracking/request_header/__init__.py +0 -0
  551. mlflow/tracking/request_header/abstract_request_header_provider.py +36 -0
  552. mlflow/tracking/request_header/databricks_request_header_provider.py +38 -0
  553. mlflow/tracking/request_header/default_request_header_provider.py +17 -0
  554. mlflow/tracking/request_header/registry.py +79 -0
  555. mlflow/transformers/__init__.py +2982 -0
  556. mlflow/transformers/flavor_config.py +258 -0
  557. mlflow/transformers/hub_utils.py +83 -0
  558. mlflow/transformers/llm_inference_utils.py +468 -0
  559. mlflow/transformers/model_io.py +301 -0
  560. mlflow/transformers/peft.py +51 -0
  561. mlflow/transformers/signature.py +183 -0
  562. mlflow/transformers/torch_utils.py +55 -0
  563. mlflow/types/__init__.py +21 -0
  564. mlflow/types/agent.py +270 -0
  565. mlflow/types/chat.py +240 -0
  566. mlflow/types/llm.py +935 -0
  567. mlflow/types/responses.py +139 -0
  568. mlflow/types/responses_helpers.py +416 -0
  569. mlflow/types/schema.py +1505 -0
  570. mlflow/types/type_hints.py +647 -0
  571. mlflow/types/utils.py +753 -0
  572. mlflow/utils/__init__.py +283 -0
  573. mlflow/utils/_capture_modules.py +256 -0
  574. mlflow/utils/_capture_transformers_modules.py +75 -0
  575. mlflow/utils/_spark_utils.py +201 -0
  576. mlflow/utils/_unity_catalog_oss_utils.py +97 -0
  577. mlflow/utils/_unity_catalog_utils.py +479 -0
  578. mlflow/utils/annotations.py +218 -0
  579. mlflow/utils/arguments_utils.py +16 -0
  580. mlflow/utils/async_logging/__init__.py +1 -0
  581. mlflow/utils/async_logging/async_artifacts_logging_queue.py +258 -0
  582. mlflow/utils/async_logging/async_logging_queue.py +366 -0
  583. mlflow/utils/async_logging/run_artifact.py +38 -0
  584. mlflow/utils/async_logging/run_batch.py +58 -0
  585. mlflow/utils/async_logging/run_operations.py +49 -0
  586. mlflow/utils/autologging_utils/__init__.py +737 -0
  587. mlflow/utils/autologging_utils/client.py +432 -0
  588. mlflow/utils/autologging_utils/config.py +33 -0
  589. mlflow/utils/autologging_utils/events.py +294 -0
  590. mlflow/utils/autologging_utils/logging_and_warnings.py +328 -0
  591. mlflow/utils/autologging_utils/metrics_queue.py +71 -0
  592. mlflow/utils/autologging_utils/safety.py +1104 -0
  593. mlflow/utils/autologging_utils/versioning.py +95 -0
  594. mlflow/utils/checkpoint_utils.py +206 -0
  595. mlflow/utils/class_utils.py +6 -0
  596. mlflow/utils/cli_args.py +257 -0
  597. mlflow/utils/conda.py +354 -0
  598. mlflow/utils/credentials.py +231 -0
  599. mlflow/utils/data_utils.py +17 -0
  600. mlflow/utils/databricks_utils.py +1436 -0
  601. mlflow/utils/docstring_utils.py +477 -0
  602. mlflow/utils/doctor.py +133 -0
  603. mlflow/utils/download_cloud_file_chunk.py +43 -0
  604. mlflow/utils/env_manager.py +16 -0
  605. mlflow/utils/env_pack.py +131 -0
  606. mlflow/utils/environment.py +1009 -0
  607. mlflow/utils/exception_utils.py +14 -0
  608. mlflow/utils/file_utils.py +978 -0
  609. mlflow/utils/git_utils.py +77 -0
  610. mlflow/utils/gorilla.py +797 -0
  611. mlflow/utils/import_hooks/__init__.py +363 -0
  612. mlflow/utils/lazy_load.py +51 -0
  613. mlflow/utils/logging_utils.py +168 -0
  614. mlflow/utils/mime_type_utils.py +58 -0
  615. mlflow/utils/mlflow_tags.py +103 -0
  616. mlflow/utils/model_utils.py +486 -0
  617. mlflow/utils/name_utils.py +346 -0
  618. mlflow/utils/nfs_on_spark.py +62 -0
  619. mlflow/utils/openai_utils.py +164 -0
  620. mlflow/utils/os.py +12 -0
  621. mlflow/utils/oss_registry_utils.py +29 -0
  622. mlflow/utils/plugins.py +17 -0
  623. mlflow/utils/process.py +182 -0
  624. mlflow/utils/promptlab_utils.py +146 -0
  625. mlflow/utils/proto_json_utils.py +743 -0
  626. mlflow/utils/pydantic_utils.py +54 -0
  627. mlflow/utils/request_utils.py +279 -0
  628. mlflow/utils/requirements_utils.py +704 -0
  629. mlflow/utils/rest_utils.py +673 -0
  630. mlflow/utils/search_logged_model_utils.py +127 -0
  631. mlflow/utils/search_utils.py +2111 -0
  632. mlflow/utils/secure_loading.py +221 -0
  633. mlflow/utils/security_validation.py +384 -0
  634. mlflow/utils/server_cli_utils.py +61 -0
  635. mlflow/utils/spark_utils.py +15 -0
  636. mlflow/utils/string_utils.py +138 -0
  637. mlflow/utils/thread_utils.py +63 -0
  638. mlflow/utils/time.py +54 -0
  639. mlflow/utils/timeout.py +42 -0
  640. mlflow/utils/uri.py +572 -0
  641. mlflow/utils/validation.py +662 -0
  642. mlflow/utils/virtualenv.py +458 -0
  643. mlflow/utils/warnings_utils.py +25 -0
  644. mlflow/utils/yaml_utils.py +179 -0
  645. mlflow/version.py +24 -0
@@ -0,0 +1,139 @@
1
+ from mlflow.utils.pydantic_utils import IS_PYDANTIC_V2_OR_NEWER, model_validator
2
+
3
+ if not IS_PYDANTIC_V2_OR_NEWER:
4
+ raise ImportError(
5
+ "mlflow.types.responses is not supported in Pydantic v1. "
6
+ "Please upgrade to Pydantic v2 or newer."
7
+ )
8
+ import json
9
+ from typing import Any, Optional, Union
10
+
11
+ from pydantic import ConfigDict
12
+
13
+ from mlflow.types.agent import ChatContext
14
+ from mlflow.types.chat import BaseModel
15
+ from mlflow.types.responses_helpers import (
16
+ BaseRequestPayload,
17
+ Message,
18
+ OutputItem,
19
+ Response,
20
+ ResponseCompletedEvent,
21
+ ResponseErrorEvent,
22
+ ResponseOutputItemDoneEvent,
23
+ ResponseTextAnnotationDeltaEvent,
24
+ ResponseTextDeltaEvent,
25
+ )
26
+
27
+ __all__ = [
28
+ "ResponsesAgentRequest",
29
+ "ResponsesAgentResponse",
30
+ "ResponsesAgentStreamEvent",
31
+ ]
32
+
33
+ from mlflow.types.schema import Schema
34
+ from mlflow.types.type_hints import _infer_schema_from_type_hint
35
+ from mlflow.utils.autologging_utils.logging_and_warnings import (
36
+ MlflowEventsAndWarningsBehaviorGlobally,
37
+ )
38
+
39
+
40
+ class ResponsesAgentRequest(BaseRequestPayload):
41
+ """Request object for ResponsesAgent.
42
+
43
+ Args:
44
+ input: List of simple `role` and `content` messages or output items. See examples at
45
+ https://mlflow.org/docs/latest/llms/responses-agent-intro/#testing-out-your-agent and
46
+ https://mlflow.org/docs/latest/llms/responses-agent-intro/#creating-agent-output.
47
+ custom_inputs (Dict[str, Any]): An optional param to provide arbitrary additional context
48
+ to the model. The dictionary values must be JSON-serializable.
49
+ **Optional** defaults to ``None``
50
+ context (:py:class:`mlflow.types.agent.ChatContext`): The context to be used in the chat
51
+ endpoint. Includes conversation_id and user_id. **Optional** defaults to ``None``
52
+ """
53
+
54
+ input: list[Union[Message, OutputItem]]
55
+ custom_inputs: Optional[dict[str, Any]] = None
56
+ context: Optional[ChatContext] = None
57
+
58
+
59
+ class ResponsesAgentResponse(Response):
60
+ """Response object for ResponsesAgent.
61
+
62
+ Args:
63
+ output: List of output items. See examples at
64
+ https://mlflow.org/docs/latest/llms/responses-agent-intro/#creating-agent-output.
65
+ reasoning: Reasoning parameters
66
+ usage: Usage information
67
+ custom_outputs (Dict[str, Any]): An optional param to provide arbitrary additional context
68
+ from the model. The dictionary values must be JSON-serializable. **Optional**, defaults
69
+ to ``None``
70
+ """
71
+
72
+ custom_outputs: Optional[dict[str, Any]] = None
73
+
74
+
75
+ class ResponsesAgentStreamEvent(BaseModel):
76
+ """Stream event for ResponsesAgent.
77
+ See examples at https://mlflow.org/docs/latest/llms/responses-agent-intro/#streaming-agent-output
78
+
79
+ Args:
80
+ type (str): Type of the stream event
81
+ custom_outputs (Dict[str, Any]): An optional param to provide arbitrary additional context
82
+ from the model. The dictionary values must be JSON-serializable. **Optional**, defaults
83
+ to ``None``
84
+ """
85
+
86
+ model_config = ConfigDict(extra="allow")
87
+ type: str
88
+ custom_outputs: Optional[dict[str, Any]] = None
89
+
90
+ @model_validator(mode="after")
91
+ def check_type(self) -> "ResponsesAgentStreamEvent":
92
+ type = self.type
93
+ if type == "response.output_item.done":
94
+ ResponseOutputItemDoneEvent(**self.model_dump_compat())
95
+ elif type == "response.output_text.delta":
96
+ ResponseTextDeltaEvent(**self.model_dump_compat())
97
+ elif type == "response.output_text.annotation.added":
98
+ ResponseTextAnnotationDeltaEvent(**self.model_dump_compat())
99
+ elif type == "error":
100
+ ResponseErrorEvent(**self.model_dump_compat())
101
+ elif type == "response.completed":
102
+ ResponseCompletedEvent(**self.model_dump_compat())
103
+ """
104
+ unvalidated types: {
105
+ "response.created",
106
+ "response.in_progress",
107
+ "response.completed",
108
+ "response.failed",
109
+ "response.incomplete",
110
+ "response.content_part.added",
111
+ "response.content_part.done",
112
+ "response.output_text.done",
113
+ "response.output_item.added",
114
+ "response.refusal.delta",
115
+ "response.refusal.done",
116
+ "response.function_call_arguments.delta",
117
+ "response.function_call_arguments.done",
118
+ "response.file_search_call.in_progress",
119
+ "response.file_search_call.searching",
120
+ "response.file_search_call.completed",
121
+ "response.web_search_call.in_progress",
122
+ "response.web_search_call.searching",
123
+ "response.web_search_call.completed",
124
+ "response.error",
125
+ }
126
+ """
127
+ return self
128
+
129
+
130
+ with MlflowEventsAndWarningsBehaviorGlobally(
131
+ reroute_warnings=False,
132
+ disable_event_logs=True,
133
+ disable_warnings=True,
134
+ ):
135
+ properties = _infer_schema_from_type_hint(ResponsesAgentRequest).to_dict()[0]["properties"]
136
+ formatted_properties = [{**prop, "name": name} for name, prop in properties.items()]
137
+ RESPONSES_AGENT_INPUT_SCHEMA = Schema.from_json(json.dumps(formatted_properties))
138
+ RESPONSES_AGENT_OUTPUT_SCHEMA = _infer_schema_from_type_hint(ResponsesAgentResponse)
139
+ RESPONSES_AGENT_INPUT_EXAMPLE = {"input": [{"role": "user", "content": "Hello!"}]}
@@ -0,0 +1,416 @@
1
+ from mlflow.utils.pydantic_utils import IS_PYDANTIC_V2_OR_NEWER, model_validator
2
+
3
+ if not IS_PYDANTIC_V2_OR_NEWER:
4
+ raise ImportError(
5
+ "mlflow.types.responses is not supported in Pydantic v1. "
6
+ "Please upgrade to Pydantic v2 or newer."
7
+ )
8
+
9
+ import warnings
10
+ from typing import Any, Optional, Union
11
+
12
+ from pydantic import ConfigDict
13
+
14
+ from mlflow.types.chat import BaseModel
15
+
16
+ """
17
+ Classes are inspired by classes for Response and ResponseStreamEvent in openai-python
18
+
19
+ https://github.com/openai/openai-python/blob/ed53107e10e6c86754866b48f8bd862659134ca8/src/openai/types/responses/response.py#L31
20
+ https://github.com/openai/openai-python/blob/ed53107e10e6c86754866b48f8bd862659134ca8/src/openai/types/responses/response_stream_event.py#L42
21
+ """
22
+
23
+
24
+ #########################
25
+ # Response helper classes
26
+ #########################
27
+ class Status(BaseModel):
28
+ status: Optional[str] = None
29
+
30
+ @model_validator(mode="after")
31
+ def check_status(self) -> "Status":
32
+ if self.status is not None and self.status not in {
33
+ "in_progress",
34
+ "completed",
35
+ "incomplete",
36
+ }:
37
+ raise ValueError(
38
+ f"Invalid status: {self.status} for {self.__class__.__name__}. "
39
+ "Must be 'in_progress', 'completed', or 'incomplete'."
40
+ )
41
+ return self
42
+
43
+
44
+ class ResponseError(BaseModel):
45
+ code: Optional[str] = None
46
+ message: str
47
+
48
+
49
+ class AnnotationFileCitation(BaseModel):
50
+ file_id: str
51
+ index: int
52
+ type: str = "file_citation"
53
+
54
+
55
+ class AnnotationURLCitation(BaseModel):
56
+ end_index: Optional[int] = None
57
+ start_index: Optional[int] = None
58
+ title: str
59
+ type: str = "url_citation"
60
+ url: str
61
+
62
+
63
+ class AnnotationFilePath(BaseModel):
64
+ file_id: str
65
+ index: int
66
+ type: str = "file_path"
67
+
68
+
69
+ class Annotation(BaseModel):
70
+ model_config = ConfigDict(extra="allow")
71
+ type: str
72
+
73
+ @model_validator(mode="after")
74
+ def check_type(self) -> "Annotation":
75
+ if self.type == "file_citation":
76
+ AnnotationFileCitation(**self.model_dump_compat())
77
+ elif self.type == "url_citation":
78
+ AnnotationURLCitation(**self.model_dump_compat())
79
+ elif self.type == "file_path":
80
+ AnnotationFilePath(**self.model_dump_compat())
81
+ else:
82
+ raise ValueError(f"Invalid annotation type: {self.type}")
83
+ return self
84
+
85
+
86
+ class ResponseOutputText(BaseModel):
87
+ annotations: Optional[list[Annotation]] = None
88
+ text: str
89
+ type: str = "output_text"
90
+
91
+
92
+ class ResponseOutputRefusal(BaseModel):
93
+ refusal: str
94
+ type: str = "refusal"
95
+
96
+
97
+ class Content(BaseModel):
98
+ model_config = ConfigDict(extra="allow")
99
+ type: str
100
+
101
+ @model_validator(mode="after")
102
+ def check_type(self) -> "Content":
103
+ if self.type == "output_text":
104
+ ResponseOutputText(**self.model_dump_compat())
105
+ elif self.type == "refusal":
106
+ ResponseOutputRefusal(**self.model_dump_compat())
107
+ else:
108
+ raise ValueError(f"Invalid content type: {self.type} for {self.__class__.__name__}")
109
+ return self
110
+
111
+
112
+ class ResponseOutputMessage(Status):
113
+ id: str
114
+ content: list[Content]
115
+ role: str = "assistant"
116
+ type: str = "message"
117
+
118
+ @model_validator(mode="after")
119
+ def check_role(self) -> "ResponseOutputMessage":
120
+ if self.role != "assistant":
121
+ raise ValueError(f"Invalid role: {self.role}. Must be 'assistant'.")
122
+ return self
123
+
124
+ @model_validator(mode="after")
125
+ def check_content(self) -> "ResponseOutputMessage":
126
+ if not self.content:
127
+ raise ValueError(f"content must not be an empty list for {self.__class__.__name__}")
128
+ return self
129
+
130
+
131
+ class ResponseFunctionToolCall(Status):
132
+ arguments: str
133
+ call_id: str
134
+ name: str
135
+ type: str = "function_call"
136
+ id: Optional[str] = None
137
+
138
+
139
+ class Summary(BaseModel):
140
+ text: str
141
+ type: str = "summary_text"
142
+
143
+
144
+ class ResponseReasoningItem(Status):
145
+ id: str
146
+ summary: list[Summary]
147
+ type: str = "reasoning"
148
+
149
+
150
+ class OutputItem(BaseModel):
151
+ model_config = ConfigDict(extra="allow")
152
+ type: str
153
+
154
+ @model_validator(mode="after")
155
+ def check_type(self) -> "OutputItem":
156
+ if self.type == "message":
157
+ ResponseOutputMessage(**self.model_dump_compat())
158
+ elif self.type == "function_call":
159
+ ResponseFunctionToolCall(**self.model_dump_compat())
160
+ elif self.type == "reasoning":
161
+ ResponseReasoningItem(**self.model_dump_compat())
162
+ elif self.type == "function_call_output":
163
+ FunctionCallOutput(**self.model_dump_compat())
164
+ elif self.type not in {
165
+ "file_search_call",
166
+ "computer_call",
167
+ "web_search_call",
168
+ }:
169
+ raise ValueError(f"Invalid type: {self.type} for {self.__class__.__name__}")
170
+ return self
171
+
172
+
173
+ class IncompleteDetails(BaseModel):
174
+ reason: Optional[str] = None
175
+
176
+ @model_validator(mode="after")
177
+ def check_reason(self) -> "IncompleteDetails":
178
+ if self.reason and self.reason not in {"max_output_tokens", "content_filter"}:
179
+ warnings.warn(f"Invalid reason: {self.reason}")
180
+ return self
181
+
182
+
183
+ class ToolChoiceFunction(BaseModel):
184
+ name: str
185
+ type: str = "function"
186
+
187
+
188
+ class FunctionTool(BaseModel):
189
+ name: str
190
+ parameters: dict[str, Any]
191
+ strict: Optional[bool] = None
192
+ type: str = "function"
193
+ description: Optional[str] = None
194
+
195
+
196
+ class Tool(BaseModel):
197
+ model_config = ConfigDict(extra="allow")
198
+ type: str
199
+
200
+ @model_validator(mode="after")
201
+ def check_type(self) -> "Tool":
202
+ if self.type == "function":
203
+ FunctionTool(**self.model_dump_compat())
204
+ elif self.type not in {"file_search", "computer_use", "web_search"}:
205
+ warnings.warn(f"Invalid tool type: {self.type}")
206
+ return self
207
+
208
+
209
+ class ToolChoice(BaseModel):
210
+ tool_choice: Optional[Union[str, ToolChoiceFunction]] = None
211
+
212
+ @model_validator(mode="after")
213
+ def check_tool_choice(self) -> "ToolChoice":
214
+ if (
215
+ self.tool_choice
216
+ and isinstance(self.tool_choice, str)
217
+ and self.tool_choice not in {"none", "auto", "required"}
218
+ ):
219
+ warnings.warn(f"Invalid tool choice: {self.tool_choice}")
220
+ return self
221
+
222
+
223
+ class ReasoningParams(BaseModel):
224
+ effort: Optional[str] = None
225
+ generate_summary: Optional[str] = None
226
+
227
+ @model_validator(mode="after")
228
+ def check_generate_summary(self) -> "ReasoningParams":
229
+ if self.generate_summary and self.generate_summary not in {"concise", "detailed"}:
230
+ warnings.warn(f"Invalid generate_summary: {self.generate_summary}")
231
+ return self
232
+
233
+ @model_validator(mode="after")
234
+ def check_effort(self) -> "ReasoningParams":
235
+ if self.effort and self.effort not in {"low", "medium", "high"}:
236
+ warnings.warn(f"Invalid effort: {self.effort}")
237
+ return self
238
+
239
+
240
+ class InputTokensDetails(BaseModel):
241
+ cached_tokens: int
242
+
243
+
244
+ class OutputTokensDetails(BaseModel):
245
+ reasoning_tokens: int
246
+
247
+
248
+ class ResponseUsage(BaseModel):
249
+ input_tokens: int
250
+ input_tokens_details: InputTokensDetails
251
+ output_tokens: int
252
+ output_tokens_details: OutputTokensDetails
253
+ total_tokens: int
254
+
255
+
256
+ class Truncation(BaseModel):
257
+ truncation: Optional[str] = None
258
+
259
+ @model_validator(mode="after")
260
+ def check_truncation(self) -> "Truncation":
261
+ if self.truncation and self.truncation not in {"auto", "disabled"}:
262
+ warnings.warn(f"Invalid truncation: {self.truncation}. Must be 'auto' or 'disabled'.")
263
+ return self
264
+
265
+
266
+ class Response(Truncation, ToolChoice):
267
+ id: Optional[str] = None
268
+ created_at: Optional[float] = None
269
+ error: Optional[ResponseError] = None
270
+ incomplete_details: Optional[IncompleteDetails] = None
271
+ instructions: Optional[str] = None
272
+ metadata: Optional[dict[str, str]] = None
273
+ model: Optional[str] = None
274
+ object: str = "response"
275
+ output: list[OutputItem]
276
+ parallel_tool_calls: Optional[bool] = None
277
+ temperature: Optional[float] = None
278
+ tools: Optional[list[Tool]] = None
279
+ top_p: Optional[float] = None
280
+ max_output_tokens: Optional[int] = None
281
+ previous_response_id: Optional[str] = None
282
+ reasoning: Optional[ReasoningParams] = None
283
+ status: Optional[str] = None
284
+ text: Optional[Any] = None
285
+ usage: Optional[ResponseUsage] = None
286
+ user: Optional[str] = None
287
+
288
+ @property
289
+ def output_text(self) -> str:
290
+ """Convenience property that aggregates all `output_text` items from the `output`
291
+ list.
292
+
293
+ If no `output_text` content blocks exist, then an empty string is returned.
294
+ """
295
+ texts: list[str] = []
296
+ for output in self.output:
297
+ if output.type == "message":
298
+ for content in output.content:
299
+ if content.type == "output_text":
300
+ texts.append(content.text)
301
+
302
+ return "".join(texts)
303
+
304
+ @model_validator(mode="after")
305
+ def check_status(self) -> "Response":
306
+ if self.status and self.status not in {
307
+ "completed",
308
+ "failed",
309
+ "in_progress",
310
+ "incomplete",
311
+ }:
312
+ warnings.warn(
313
+ f"Invalid status: {self.status}. Must be 'completed', 'failed', "
314
+ "'in_progress', or 'incomplete'."
315
+ )
316
+ return self
317
+
318
+
319
+ #################################
320
+ # ResponsesRequest helper classes
321
+ #################################
322
+ class ResponseInputTextParam(BaseModel):
323
+ text: str
324
+ type: str = "input_text"
325
+
326
+
327
+ class Message(Status):
328
+ content: Union[str, list[Union[ResponseInputTextParam, dict[str, Any]]]]
329
+ role: str
330
+ status: Optional[str] = None
331
+ type: str = "message"
332
+
333
+ @model_validator(mode="after")
334
+ def check_content(self) -> "Message":
335
+ if not self.content:
336
+ raise ValueError("content must not be empty")
337
+ if isinstance(self.content, list):
338
+ for item in self.content:
339
+ if isinstance(item, dict):
340
+ if "type" not in item:
341
+ raise ValueError(
342
+ "dictionary type content field values must have key 'type'"
343
+ )
344
+ if item["type"] == "input_text":
345
+ ResponseInputTextParam(**item)
346
+ elif item["type"] not in {"input_image", "input_file"}:
347
+ raise ValueError(f"Invalid type: {item['type']}.")
348
+ return self
349
+
350
+ @model_validator(mode="after")
351
+ def check_role(self) -> "Message":
352
+ if self.role not in {"user", "assistant", "system", "developer"}:
353
+ raise ValueError(
354
+ f"Invalid role: {self.role}. Must be 'user', 'assistant', 'system', or 'developer'."
355
+ )
356
+ return self
357
+
358
+
359
+ class FunctionCallOutput(Status):
360
+ call_id: str
361
+ output: str
362
+ type: str = "function_call_output"
363
+
364
+
365
+ class BaseRequestPayload(Truncation, ToolChoice):
366
+ max_output_tokens: Optional[int] = None
367
+ metadata: Optional[dict[str, str]] = None
368
+ parallel_tool_calls: Optional[bool] = None
369
+ tools: Optional[list[Tool]] = None
370
+ reasoning: Optional[ReasoningParams] = None
371
+ store: Optional[bool] = None
372
+ stream: Optional[bool] = None
373
+ temperature: Optional[float] = None
374
+ text: Optional[Any] = None
375
+ top_p: Optional[float] = None
376
+ user: Optional[str] = None
377
+
378
+
379
+ #####################################
380
+ # ResponsesStreamEvent helper classes
381
+ #####################################
382
+
383
+
384
+ class ResponseTextDeltaEvent(BaseModel):
385
+ content_index: Optional[int] = None
386
+ delta: str
387
+ item_id: str
388
+ output_index: Optional[int] = None
389
+ type: str = "response.output_text.delta"
390
+
391
+
392
+ class ResponseTextAnnotationDeltaEvent(BaseModel):
393
+ annotation: Annotation
394
+ annotation_index: int
395
+ content_index: Optional[int] = None
396
+ item_id: str
397
+ output_index: Optional[int] = None
398
+ type: str = "response.output_text.annotation.added"
399
+
400
+
401
+ class ResponseOutputItemDoneEvent(BaseModel):
402
+ item: OutputItem
403
+ output_index: Optional[int] = None
404
+ type: str = "response.output_item.done"
405
+
406
+
407
+ class ResponseErrorEvent(BaseModel):
408
+ code: Optional[str] = None
409
+ message: str
410
+ param: Optional[str] = None
411
+ type: str = "error"
412
+
413
+
414
+ class ResponseCompletedEvent(BaseModel):
415
+ response: Response
416
+ type: str = "response.completed"