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,206 @@
1
+ import warnings
2
+ from contextlib import contextmanager
3
+ from typing import Optional, Union
4
+
5
+ import mlflow.tracking._model_registry.fluent as registry_api
6
+ from mlflow.entities.model_registry.prompt import Prompt
7
+ from mlflow.entities.model_registry.prompt_version import PromptVersion
8
+ from mlflow.prompt.registry_utils import require_prompt_registry
9
+ from mlflow.store.entities.paged_list import PagedList
10
+ from mlflow.utils.annotations import experimental
11
+
12
+
13
+ @contextmanager
14
+ def suppress_genai_migration_warning():
15
+ """Suppress the deprecation warning when the api is called from `mlflow.genai` namespace."""
16
+ with warnings.catch_warnings():
17
+ warnings.filterwarnings(
18
+ action="ignore",
19
+ category=FutureWarning,
20
+ message="The `mlflow.*` API is moved to the `mlflow.genai` namespace.*",
21
+ )
22
+ yield
23
+
24
+
25
+ @experimental(version="3.0.0")
26
+ @require_prompt_registry
27
+ def register_prompt(
28
+ name: str,
29
+ template: str,
30
+ commit_message: Optional[str] = None,
31
+ tags: Optional[dict[str, str]] = None,
32
+ ) -> PromptVersion:
33
+ """
34
+ Register a new :py:class:`Prompt <mlflow.entities.Prompt>` in the MLflow Prompt Registry.
35
+
36
+ A :py:class:`Prompt <mlflow.entities.Prompt>` is a pair of name and
37
+ template text at minimum. With MLflow Prompt Registry, you can create, manage, and
38
+ version control prompts with the MLflow's robust model tracking framework.
39
+
40
+ If there is no registered prompt with the given name, a new prompt will be created.
41
+ Otherwise, a new version of the existing prompt will be created.
42
+
43
+
44
+ Args:
45
+ name: The name of the prompt.
46
+ template: The template text of the prompt. It can contain variables enclosed in
47
+ double curly braces, e.g. {variable}, which will be replaced with actual values
48
+ by the `format` method.
49
+
50
+ .. note::
51
+
52
+ If you want to use the prompt with a framework that uses single curly braces
53
+ e.g. LangChain, you can use the `to_single_brace_format` method to convert the
54
+ loaded prompt to a format that uses single curly braces.
55
+
56
+ .. code-block:: python
57
+
58
+ prompt = client.load_prompt("my_prompt")
59
+ langchain_format = prompt.to_single_brace_format()
60
+
61
+ commit_message: A message describing the changes made to the prompt, similar to a
62
+ Git commit message. Optional.
63
+ tags: A dictionary of tags associated with the **prompt version**.
64
+ This is useful for storing version-specific information, such as the author of
65
+ the changes. Optional.
66
+
67
+ Returns:
68
+ A :py:class:`Prompt <mlflow.entities.Prompt>` object that was created.
69
+
70
+ Example:
71
+
72
+ .. code-block:: python
73
+
74
+ import mlflow
75
+
76
+ # Register a new prompt
77
+ mlflow.genai.register_prompt(
78
+ name="my_prompt",
79
+ template="Respond to the user's message as a {{style}} AI.",
80
+ )
81
+
82
+ # Load the prompt from the registry
83
+ prompt = mlflow.genai.load_prompt("my_prompt")
84
+
85
+ # Use the prompt in your application
86
+ import openai
87
+
88
+ openai_client = openai.OpenAI()
89
+ openai_client.chat.completion.create(
90
+ model="gpt-4o-mini",
91
+ messages=[
92
+ {"role": "system", "content": prompt.format(style="friendly")},
93
+ {"role": "user", "content": "Hello, how are you?"},
94
+ ],
95
+ )
96
+
97
+ # Update the prompt with a new version
98
+ prompt = mlflow.genai.register_prompt(
99
+ name="my_prompt",
100
+ template="Respond to the user's message as a {{style}} AI. {{greeting}}",
101
+ commit_message="Add a greeting to the prompt.",
102
+ tags={"author": "Bob"},
103
+ )
104
+ """
105
+ with suppress_genai_migration_warning():
106
+ return registry_api.register_prompt(
107
+ name=name,
108
+ template=template,
109
+ commit_message=commit_message,
110
+ tags=tags,
111
+ )
112
+
113
+
114
+ @experimental(version="3.0.0")
115
+ @require_prompt_registry
116
+ def search_prompts(
117
+ filter_string: Optional[str] = None,
118
+ max_results: Optional[int] = None,
119
+ ) -> PagedList[Prompt]:
120
+ with suppress_genai_migration_warning():
121
+ return registry_api.search_prompts(filter_string=filter_string, max_results=max_results)
122
+
123
+
124
+ @experimental(version="3.0.0")
125
+ @require_prompt_registry
126
+ def load_prompt(
127
+ name_or_uri: str, version: Optional[Union[str, int]] = None, allow_missing: bool = False
128
+ ) -> PromptVersion:
129
+ """
130
+ Load a :py:class:`Prompt <mlflow.entities.Prompt>` from the MLflow Prompt Registry.
131
+
132
+ The prompt can be specified by name and version, or by URI.
133
+
134
+ Args:
135
+ name_or_uri: The name of the prompt, or the URI in the format "prompts:/name/version".
136
+ version: The version of the prompt (required when using name, not allowed when using URI).
137
+ allow_missing: If True, return None instead of raising Exception if the specified prompt
138
+ is not found.
139
+
140
+ Example:
141
+
142
+ .. code-block:: python
143
+
144
+ import mlflow
145
+
146
+ # Load a specific version of the prompt
147
+ prompt = mlflow.genai.load_prompt("my_prompt", version=1)
148
+
149
+ # Load a specific version of the prompt by URI
150
+ prompt = mlflow.genai.load_prompt("prompts:/my_prompt/1")
151
+
152
+ # Load a prompt version with an alias "production"
153
+ prompt = mlflow.genai.load_prompt("prompts:/my_prompt@production")
154
+
155
+ """
156
+ with suppress_genai_migration_warning():
157
+ return registry_api.load_prompt(
158
+ name_or_uri=name_or_uri, version=version, allow_missing=allow_missing
159
+ )
160
+
161
+
162
+ @experimental(version="3.0.0")
163
+ @require_prompt_registry
164
+ def set_prompt_alias(name: str, alias: str, version: int) -> None:
165
+ """
166
+ Set an alias for a :py:class:`Prompt <mlflow.entities.Prompt>` in the MLflow Prompt Registry.
167
+
168
+ Args:
169
+ name: The name of the prompt.
170
+ alias: The alias to set for the prompt.
171
+ version: The version of the prompt.
172
+
173
+ Example:
174
+
175
+ .. code-block:: python
176
+
177
+ import mlflow
178
+
179
+ # Set an alias for the prompt
180
+ mlflow.genai.set_prompt_alias(name="my_prompt", version=1, alias="production")
181
+
182
+ # Load the prompt by alias (use "@" to specify the alias)
183
+ prompt = mlflow.genai.load_prompt("prompts:/my_prompt@production")
184
+
185
+ # Switch the alias to a new version of the prompt
186
+ mlflow.genai.set_prompt_alias(name="my_prompt", version=2, alias="production")
187
+
188
+ # Delete the alias
189
+ mlflow.genai.delete_prompt_alias(name="my_prompt", alias="production")
190
+ """
191
+ with suppress_genai_migration_warning():
192
+ return registry_api.set_prompt_alias(name=name, version=version, alias=alias)
193
+
194
+
195
+ @experimental(version="3.0.0")
196
+ @require_prompt_registry
197
+ def delete_prompt_alias(name: str, alias: str) -> None:
198
+ """
199
+ Delete an alias for a :py:class:`Prompt <mlflow.entities.Prompt>` in the MLflow Prompt Registry.
200
+
201
+ Args:
202
+ name: The name of the prompt.
203
+ alias: The alias to delete for the prompt.
204
+ """
205
+ with suppress_genai_migration_warning():
206
+ return registry_api.delete_prompt_alias(name=name, alias=alias)
@@ -0,0 +1,431 @@
1
+ from dataclasses import dataclass
2
+ from typing import Optional
3
+
4
+ from mlflow.genai.scorers.base import Scorer
5
+ from mlflow.utils.annotations import experimental
6
+
7
+ _ERROR_MSG = (
8
+ "The `databricks-agents` package is required to use `mlflow.genai.scheduled_scorers`. "
9
+ "Please install it with `pip install databricks-agents`."
10
+ )
11
+
12
+
13
+ @experimental(version="3.0.0")
14
+ @dataclass()
15
+ class ScorerScheduleConfig:
16
+ """
17
+ A scheduled scorer configuration for automated monitoring of generative AI applications.
18
+
19
+ Scheduled scorers are used to automatically evaluate traces logged to MLflow experiments
20
+ by production applications. They are part of [Databricks Lakehouse Monitoring for GenAI](https://docs.databricks.com/aws/en/generative-ai/agent-evaluation/monitoring),
21
+ which helps track quality metrics like groundedness, safety, and guideline adherence
22
+ alongside operational metrics like volume, latency, and cost.
23
+
24
+ When configured, scheduled scorers run automatically in the background to evaluate
25
+ a sample of traces based on the specified sampling rate and filter criteria. The
26
+ Assessments are displayed in the Traces tab of the MLflow experiment and can be used to
27
+ identify quality issues in production.
28
+
29
+ Args:
30
+ scorer: The scorer function to run on sampled traces. Must be either a built-in
31
+ scorer (e.g., Safety, Correctness) or a function decorated with @scorer.
32
+ Subclasses of Scorer are not supported.
33
+ scheduled_scorer_name: The name for this scheduled scorer configuration
34
+ within the experiment. This name must be unique among all scheduled scorers
35
+ in the same experiment.
36
+ We recommend using the scorer's name (e.g., scorer.name) for consistency.
37
+ sample_rate: The fraction of traces to evaluate, between 0.0 and 1.0. For example,
38
+ 0.1 means 10% of traces will be randomly selected for evaluation.
39
+ filter_string: An optional MLflow search_traces compatible filter string to apply
40
+ before sampling traces. Only traces matching this filter will be considered
41
+ for evaluation. Uses the same syntax as mlflow.search_traces().
42
+
43
+ Example:
44
+ .. code-block:: python
45
+
46
+ from mlflow.genai.scorers import Safety, scorer
47
+ from mlflow.genai.scheduled_scorers import ScorerScheduleConfig
48
+
49
+ # Using a built-in scorer
50
+ safety_config = ScorerScheduleConfig(
51
+ scorer=Safety(),
52
+ scheduled_scorer_name="production_safety",
53
+ sample_rate=0.2, # Evaluate 20% of traces
54
+ filter_string="trace.status = 'OK'",
55
+ )
56
+
57
+
58
+ # Using a custom scorer
59
+ @scorer
60
+ def response_length(outputs):
61
+ return len(str(outputs)) > 100
62
+
63
+
64
+ length_config = ScorerScheduleConfig(
65
+ scorer=response_length,
66
+ scheduled_scorer_name="adequate_length",
67
+ sample_rate=0.1, # Evaluate 10% of traces
68
+ filter_string="trace.status = 'OK'",
69
+ )
70
+
71
+ Note:
72
+ Scheduled scorers are executed automatically by Databricks and do not need to be
73
+ manually triggered. The Assessments appear in the Traces tab of the MLflow
74
+ experiment. Only traces logged directly to the experiment are monitored; traces
75
+ logged to individual runs within the experiment are not evaluated.
76
+
77
+ .. warning::
78
+ This API is in Beta and may change or be removed in a future release without warning.
79
+ """
80
+
81
+ scorer: Scorer
82
+ scheduled_scorer_name: str
83
+ sample_rate: float
84
+ filter_string: Optional[str] = None
85
+
86
+
87
+ # Scheduled Scorer CRUD operations
88
+ @experimental(version="3.0.0")
89
+ def add_scheduled_scorer( # clint: disable=missing-docstring-param # noqa: D417
90
+ *,
91
+ scheduled_scorer_name: str,
92
+ scorer: Scorer,
93
+ sample_rate: float,
94
+ filter_string: Optional[str] = None,
95
+ experiment_id: Optional[str] = None,
96
+ **kwargs,
97
+ ) -> ScorerScheduleConfig:
98
+ """
99
+ Add a scheduled scorer to automatically monitor traces in an MLflow experiment.
100
+
101
+ This function configures a scorer function to run automatically on traces logged to the
102
+ specified experiment. The scorer will evaluate a sample of traces based on the sampling rate
103
+ and any filter criteria. Assessments are displayed in the Traces tab of the MLflow experiment.
104
+
105
+ Args:
106
+ scheduled_scorer_name: The name for this scheduled scorer within the experiment.
107
+ We recommend using the scorer's name (e.g., scorer.name) for consistency.
108
+ scorer: The scorer function to execute on sampled traces. Must be either a
109
+ built-in scorer or a function decorated with @scorer. Subclasses of Scorer
110
+ are not supported.
111
+ sample_rate: The fraction of traces to evaluate, between 0.0 and 1.0. For example,
112
+ 0.3 means 30% of traces will be randomly selected for evaluation.
113
+ filter_string: An optional MLflow search_traces compatible filter string. Only
114
+ traces matching this filter will be considered for evaluation. If None,
115
+ all traces in the experiment are eligible for sampling.
116
+ experiment_id: The ID of the MLflow experiment to monitor. If None, uses the
117
+ currently active experiment.
118
+
119
+ Returns:
120
+ A ScorerScheduleConfig object representing the configured scheduled scorer.
121
+
122
+ Example:
123
+ .. code-block:: python
124
+
125
+ import mlflow
126
+ from mlflow.genai.scorers import Safety, Correctness
127
+ from mlflow.genai.scheduled_scorers import add_scheduled_scorer
128
+
129
+ # Set up your experiment
130
+ experiment = mlflow.set_experiment("my_genai_app_monitoring")
131
+
132
+ # Add a safety scorer to monitor 50% of traces
133
+ safety_scorer = add_scheduled_scorer(
134
+ scheduled_scorer_name="safety_monitor",
135
+ scorer=Safety(),
136
+ sample_rate=0.5,
137
+ filter_string="trace.status = 'OK'",
138
+ )
139
+
140
+ # Add a correctness scorer with different sampling
141
+ correctness_scorer = add_scheduled_scorer(
142
+ scheduled_scorer_name="correctness_monitor",
143
+ scorer=Correctness(),
144
+ sample_rate=0.2, # More expensive, so lower sample rate
145
+ experiment_id=experiment.experiment_id, # Explicitly specify experiment
146
+ )
147
+
148
+ Note:
149
+ Once added, the scheduled scorer will begin evaluating new traces automatically.
150
+ There may be a delay between when traces are logged and when they are evaluated.
151
+ Only traces logged directly to the experiment are monitored; traces logged to
152
+ individual runs within the experiment are not evaluated.
153
+
154
+ .. warning::
155
+ This API is in Beta and may change or be removed in a future release without warning.
156
+ """
157
+ try:
158
+ from databricks.agents.scorers import add_scheduled_scorer
159
+ except ImportError as e:
160
+ raise ImportError(_ERROR_MSG) from e
161
+ return add_scheduled_scorer(
162
+ experiment_id, scheduled_scorer_name, scorer, sample_rate, filter_string, **kwargs
163
+ )
164
+
165
+
166
+ @experimental(version="3.0.0")
167
+ def update_scheduled_scorer( # clint: disable=missing-docstring-param # noqa: D417
168
+ *,
169
+ scheduled_scorer_name: str,
170
+ scorer: Optional[Scorer] = None,
171
+ sample_rate: Optional[float] = None,
172
+ filter_string: Optional[str] = None,
173
+ experiment_id: Optional[str] = None,
174
+ **kwargs,
175
+ ) -> ScorerScheduleConfig:
176
+ """
177
+ Update an existing scheduled scorer configuration.
178
+
179
+ This function modifies the configuration of an existing scheduled scorer, allowing you
180
+ to change the scorer function, sampling rate, or filter criteria. Only the provided
181
+ parameters will be updated; omitted parameters will retain their current values.
182
+ The scorer will continue to run automatically with the new configuration.
183
+
184
+ Args:
185
+ scheduled_scorer_name: The name of the existing scheduled scorer to update. Must match
186
+ the name used when the scorer was originally added. We recommend using the
187
+ scorer's name (e.g., scorer.name) for consistency.
188
+ scorer: The new scorer function to execute on sampled traces. Must be either
189
+ a built-in scorer or a function decorated with @scorer. If None, the
190
+ current scorer function will be retained.
191
+ sample_rate: The new fraction of traces to evaluate, between 0.0 and 1.0.
192
+ If None, the current sample rate will be retained.
193
+ filter_string: The new MLflow search_traces compatible filter string. If None,
194
+ the current filter string will be retained. Pass an empty string to remove
195
+ the filter entirely.
196
+ experiment_id: The ID of the MLflow experiment containing the scheduled scorer.
197
+ If None, uses the currently active experiment.
198
+
199
+ Returns:
200
+ A ScorerScheduleConfig object representing the updated scheduled scorer configuration.
201
+
202
+ Example:
203
+ .. code-block:: python
204
+
205
+ from mlflow.genai.scorers import Safety
206
+ from mlflow.genai.scheduled_scorers import update_scheduled_scorer
207
+
208
+ # Update an existing safety scorer to increase sampling rate
209
+ updated_scorer = update_scheduled_scorer(
210
+ scheduled_scorer_name="safety_monitor",
211
+ sample_rate=0.8, # Increased from 0.5 to 0.8
212
+ )
213
+
214
+ .. warning::
215
+ This API is in Beta and may change or be removed in a future release without warning.
216
+ """
217
+ try:
218
+ from databricks.agents.scorers import update_scheduled_scorer
219
+ except ImportError as e:
220
+ raise ImportError(_ERROR_MSG) from e
221
+ return update_scheduled_scorer(
222
+ experiment_id, scheduled_scorer_name, scorer, sample_rate, filter_string, **kwargs
223
+ )
224
+
225
+
226
+ @experimental(version="3.0.0")
227
+ def delete_scheduled_scorer( # clint: disable=missing-docstring-param # noqa: D417
228
+ *,
229
+ scheduled_scorer_name: str,
230
+ experiment_id: Optional[str] = None,
231
+ **kwargs,
232
+ ) -> None:
233
+ """
234
+ Delete a scheduled scorer from an MLflow experiment.
235
+
236
+ This function removes a scheduled scorer configuration, stopping automatic evaluation
237
+ of traces. Existing Assessments will remain in the Traces tab of the MLflow
238
+ experiment, but no new evaluations will be performed.
239
+
240
+ Args:
241
+ scheduled_scorer_name: The name of the scheduled scorer to delete. Must match the name
242
+ used when the scorer was originally added.
243
+ experiment_id: The ID of the MLflow experiment containing the scheduled scorer.
244
+ If None, uses the currently active experiment.
245
+
246
+ Example:
247
+ .. code-block:: python
248
+
249
+ from mlflow.genai.scheduled_scorers import delete_scheduled_scorer
250
+
251
+ # Remove a scheduled scorer that's no longer needed
252
+ delete_scheduled_scorer(scheduled_scorer_name="safety_monitor")
253
+
254
+ # To delete all scheduled scorers at once, use set_scheduled_scorers
255
+ # with an empty list instead:
256
+ from mlflow.genai.scheduled_scorers import set_scheduled_scorers
257
+
258
+ set_scheduled_scorers(
259
+ scheduled_scorers=[] # Empty list removes all scorers
260
+ )
261
+
262
+ Note:
263
+ Deletion is immediate and cannot be undone. If you need the same scorer
264
+ configuration later, you will need to add it again using add_scheduled_scorer.
265
+
266
+ .. warning::
267
+ This API is in Beta and may change or be removed in a future release without warning.
268
+ """
269
+ try:
270
+ from databricks.agents.scorers import delete_scheduled_scorer
271
+ except ImportError as e:
272
+ raise ImportError(_ERROR_MSG) from e
273
+ return delete_scheduled_scorer(experiment_id, scheduled_scorer_name, **kwargs)
274
+
275
+
276
+ @experimental(version="3.0.0")
277
+ def get_scheduled_scorer( # clint: disable=missing-docstring-param # noqa: D417
278
+ *,
279
+ scheduled_scorer_name: str,
280
+ experiment_id: Optional[str] = None,
281
+ **kwargs,
282
+ ) -> ScorerScheduleConfig:
283
+ """
284
+ Retrieve the configuration of a specific scheduled scorer.
285
+
286
+ This function returns the current configuration of a scheduled scorer, including
287
+ its scorer function, sampling rate, and filter criteria.
288
+
289
+ Args:
290
+ scheduled_scorer_name: The name of the scheduled scorer to retrieve.
291
+ experiment_id: The ID of the MLflow experiment containing the scheduled scorer.
292
+ If None, uses the currently active experiment.
293
+
294
+ Returns:
295
+ A ScorerScheduleConfig object containing the current configuration of the specified
296
+ scheduled scorer.
297
+
298
+ Example:
299
+ .. code-block:: python
300
+
301
+ from mlflow.genai.scheduled_scorers import get_scheduled_scorer
302
+
303
+ # Get the current configuration of a scheduled scorer
304
+ scorer_config = get_scheduled_scorer(scheduled_scorer_name="safety_monitor")
305
+
306
+ print(f"Sample rate: {scorer_config.sample_rate}")
307
+ print(f"Filter: {scorer_config.filter_string}")
308
+ print(f"Scorer: {scorer_config.scorer.name}")
309
+
310
+ .. warning::
311
+ This API is in Beta and may change or be removed in a future release without warning.
312
+ """
313
+ try:
314
+ from databricks.agents.scorers import get_scheduled_scorer
315
+ except ImportError as e:
316
+ raise ImportError(_ERROR_MSG) from e
317
+ return get_scheduled_scorer(experiment_id, scheduled_scorer_name, **kwargs)
318
+
319
+
320
+ @experimental(version="3.0.0")
321
+ def list_scheduled_scorers( # clint: disable=missing-docstring-param # noqa: D417
322
+ *, experiment_id: Optional[str] = None, **kwargs
323
+ ) -> list[ScorerScheduleConfig]:
324
+ """
325
+ List all scheduled scorers for an experiment.
326
+
327
+ This function returns all scheduled scorers configured for the specified experiment,
328
+ or for the current active experiment if no experiment ID is provided.
329
+
330
+ Args:
331
+ experiment_id: The ID of the MLflow experiment to list scheduled scorers for.
332
+ If None, uses the currently active experiment.
333
+
334
+ Returns:
335
+ A list of ScheduledScorerConfig objects representing all scheduled scorers configured
336
+ for the specified experiment.
337
+
338
+ Example:
339
+ .. code-block:: python
340
+
341
+ import mlflow
342
+ from mlflow.genai.scheduled_scorers import list_scheduled_scorers
343
+
344
+ # List scorers for a specific experiment
345
+ scorers = list_scheduled_scorers(experiment_id="12345")
346
+ for scorer in scorers:
347
+ print(f"Scorer: {scorer.scheduled_scorer_name}")
348
+ print(f"Sample rate: {scorer.sample_rate}")
349
+ print(f"Filter: {scorer.filter_string}")
350
+
351
+ # List scorers for the current active experiment
352
+ mlflow.set_experiment("my_genai_app_monitoring")
353
+ current_scorers = list_scheduled_scorers()
354
+ print(f"Found {len(current_scorers)} scheduled scorers")
355
+
356
+ .. warning::
357
+ This API is in Beta and may change or be removed in a future release without warning.
358
+ """
359
+ try:
360
+ from databricks.agents.scorers import list_scheduled_scorers
361
+ except ImportError as e:
362
+ raise ImportError(_ERROR_MSG) from e
363
+ return list_scheduled_scorers(experiment_id, **kwargs)
364
+
365
+
366
+ @experimental(version="3.0.0")
367
+ def set_scheduled_scorers( # clint: disable=missing-docstring-param # noqa: D417
368
+ *,
369
+ scheduled_scorers: list[ScorerScheduleConfig],
370
+ experiment_id: Optional[str] = None,
371
+ **kwargs,
372
+ ) -> None:
373
+ """
374
+ Replace all scheduled scorers for an experiment with the provided list.
375
+
376
+ This function removes all existing scheduled scorers for the specified experiment
377
+ and replaces them with the new list. This is useful for batch configuration updates
378
+ or when you want to ensure only specific scorers are active.
379
+
380
+ Args:
381
+ scheduled_scorers: A list of ScheduledScorerConfig objects to set as the complete
382
+ set of scheduled scorers for the experiment. Any existing scheduled scorers
383
+ not in this list will be removed.
384
+ experiment_id: The ID of the MLflow experiment to configure. If None, uses the
385
+ currently active experiment.
386
+
387
+ Example:
388
+ .. code-block:: python
389
+
390
+ from mlflow.genai.scorers import Safety, Correctness, RelevanceToQuery
391
+ from mlflow.genai.scheduled_scorers import ScorerScheduleConfig, set_scheduled_scorers
392
+
393
+ # Define a complete monitoring configuration
394
+ monitoring_config = [
395
+ ScorerScheduleConfig(
396
+ scorer=Safety(),
397
+ scheduled_scorer_name="safety_check",
398
+ sample_rate=1.0, # Check all traces for safety
399
+ ),
400
+ ScorerScheduleConfig(
401
+ scorer=Correctness(),
402
+ scheduled_scorer_name="correctness_check",
403
+ sample_rate=0.2, # Sample 20% for correctness (more expensive)
404
+ filter_string="trace.status = 'OK'",
405
+ ),
406
+ ScorerScheduleConfig(
407
+ scorer=RelevanceToQuery(),
408
+ scheduled_scorer_name="relevance_check",
409
+ sample_rate=0.5, # Sample 50% for relevance
410
+ ),
411
+ ]
412
+
413
+ # Apply this configuration, replacing any existing scorers
414
+ set_scheduled_scorers(scheduled_scorers=monitoring_config)
415
+
416
+ Warning:
417
+ This function will remove all existing scheduled scorers for the experiment
418
+ that are not included in the provided list. Use add_scheduled_scorer() if you
419
+ want to add scorers without affecting existing ones.
420
+
421
+ Note:
422
+ Existing Assessments will remain in the Traces tab of the MLflow experiment.
423
+
424
+ .. warning::
425
+ This API is in Beta and may change or be removed in a future release without warning.
426
+ """
427
+ try:
428
+ from databricks.agents.scorers import set_scheduled_scorers
429
+ except ImportError as e:
430
+ raise ImportError(_ERROR_MSG) from e
431
+ return set_scheduled_scorers(experiment_id, scheduled_scorers, **kwargs)
@@ -0,0 +1,26 @@
1
+ from mlflow.genai.scorers.base import Scorer, scorer
2
+ from mlflow.genai.scorers.builtin_scorers import (
3
+ Correctness,
4
+ ExpectationsGuidelines,
5
+ Guidelines,
6
+ RelevanceToQuery,
7
+ RetrievalGroundedness,
8
+ RetrievalRelevance,
9
+ RetrievalSufficiency,
10
+ Safety,
11
+ get_all_scorers,
12
+ )
13
+
14
+ __all__ = [
15
+ "Correctness",
16
+ "ExpectationsGuidelines",
17
+ "Guidelines",
18
+ "RelevanceToQuery",
19
+ "RetrievalGroundedness",
20
+ "RetrievalRelevance",
21
+ "RetrievalSufficiency",
22
+ "Safety",
23
+ "Scorer",
24
+ "scorer",
25
+ "get_all_scorers",
26
+ ]