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.
- genesis_flow-1.0.0.dist-info/METADATA +822 -0
- genesis_flow-1.0.0.dist-info/RECORD +645 -0
- genesis_flow-1.0.0.dist-info/WHEEL +5 -0
- genesis_flow-1.0.0.dist-info/entry_points.txt +19 -0
- genesis_flow-1.0.0.dist-info/licenses/LICENSE.txt +202 -0
- genesis_flow-1.0.0.dist-info/top_level.txt +1 -0
- mlflow/__init__.py +367 -0
- mlflow/__main__.py +3 -0
- mlflow/ag2/__init__.py +56 -0
- mlflow/ag2/ag2_logger.py +294 -0
- mlflow/anthropic/__init__.py +40 -0
- mlflow/anthropic/autolog.py +129 -0
- mlflow/anthropic/chat.py +144 -0
- mlflow/artifacts/__init__.py +268 -0
- mlflow/autogen/__init__.py +144 -0
- mlflow/autogen/chat.py +142 -0
- mlflow/azure/__init__.py +26 -0
- mlflow/azure/auth_handler.py +257 -0
- mlflow/azure/client.py +319 -0
- mlflow/azure/config.py +120 -0
- mlflow/azure/connection_factory.py +340 -0
- mlflow/azure/exceptions.py +27 -0
- mlflow/azure/stores.py +327 -0
- mlflow/azure/utils.py +183 -0
- mlflow/bedrock/__init__.py +45 -0
- mlflow/bedrock/_autolog.py +202 -0
- mlflow/bedrock/chat.py +122 -0
- mlflow/bedrock/stream.py +160 -0
- mlflow/bedrock/utils.py +43 -0
- mlflow/cli.py +707 -0
- mlflow/client.py +12 -0
- mlflow/config/__init__.py +56 -0
- mlflow/crewai/__init__.py +79 -0
- mlflow/crewai/autolog.py +253 -0
- mlflow/crewai/chat.py +29 -0
- mlflow/data/__init__.py +75 -0
- mlflow/data/artifact_dataset_sources.py +170 -0
- mlflow/data/code_dataset_source.py +40 -0
- mlflow/data/dataset.py +123 -0
- mlflow/data/dataset_registry.py +168 -0
- mlflow/data/dataset_source.py +110 -0
- mlflow/data/dataset_source_registry.py +219 -0
- mlflow/data/delta_dataset_source.py +167 -0
- mlflow/data/digest_utils.py +108 -0
- mlflow/data/evaluation_dataset.py +562 -0
- mlflow/data/filesystem_dataset_source.py +81 -0
- mlflow/data/http_dataset_source.py +145 -0
- mlflow/data/huggingface_dataset.py +258 -0
- mlflow/data/huggingface_dataset_source.py +118 -0
- mlflow/data/meta_dataset.py +104 -0
- mlflow/data/numpy_dataset.py +223 -0
- mlflow/data/pandas_dataset.py +231 -0
- mlflow/data/polars_dataset.py +352 -0
- mlflow/data/pyfunc_dataset_mixin.py +31 -0
- mlflow/data/schema.py +76 -0
- mlflow/data/sources.py +1 -0
- mlflow/data/spark_dataset.py +406 -0
- mlflow/data/spark_dataset_source.py +74 -0
- mlflow/data/spark_delta_utils.py +118 -0
- mlflow/data/tensorflow_dataset.py +350 -0
- mlflow/data/uc_volume_dataset_source.py +81 -0
- mlflow/db.py +27 -0
- mlflow/dspy/__init__.py +17 -0
- mlflow/dspy/autolog.py +197 -0
- mlflow/dspy/callback.py +398 -0
- mlflow/dspy/constant.py +1 -0
- mlflow/dspy/load.py +93 -0
- mlflow/dspy/save.py +393 -0
- mlflow/dspy/util.py +109 -0
- mlflow/dspy/wrapper.py +226 -0
- mlflow/entities/__init__.py +104 -0
- mlflow/entities/_mlflow_object.py +52 -0
- mlflow/entities/assessment.py +545 -0
- mlflow/entities/assessment_error.py +80 -0
- mlflow/entities/assessment_source.py +141 -0
- mlflow/entities/dataset.py +92 -0
- mlflow/entities/dataset_input.py +51 -0
- mlflow/entities/dataset_summary.py +62 -0
- mlflow/entities/document.py +48 -0
- mlflow/entities/experiment.py +109 -0
- mlflow/entities/experiment_tag.py +35 -0
- mlflow/entities/file_info.py +45 -0
- mlflow/entities/input_tag.py +35 -0
- mlflow/entities/lifecycle_stage.py +35 -0
- mlflow/entities/logged_model.py +228 -0
- mlflow/entities/logged_model_input.py +26 -0
- mlflow/entities/logged_model_output.py +32 -0
- mlflow/entities/logged_model_parameter.py +46 -0
- mlflow/entities/logged_model_status.py +74 -0
- mlflow/entities/logged_model_tag.py +33 -0
- mlflow/entities/metric.py +200 -0
- mlflow/entities/model_registry/__init__.py +29 -0
- mlflow/entities/model_registry/_model_registry_entity.py +13 -0
- mlflow/entities/model_registry/model_version.py +243 -0
- mlflow/entities/model_registry/model_version_deployment_job_run_state.py +44 -0
- mlflow/entities/model_registry/model_version_deployment_job_state.py +70 -0
- mlflow/entities/model_registry/model_version_search.py +25 -0
- mlflow/entities/model_registry/model_version_stages.py +25 -0
- mlflow/entities/model_registry/model_version_status.py +35 -0
- mlflow/entities/model_registry/model_version_tag.py +35 -0
- mlflow/entities/model_registry/prompt.py +73 -0
- mlflow/entities/model_registry/prompt_version.py +244 -0
- mlflow/entities/model_registry/registered_model.py +175 -0
- mlflow/entities/model_registry/registered_model_alias.py +35 -0
- mlflow/entities/model_registry/registered_model_deployment_job_state.py +39 -0
- mlflow/entities/model_registry/registered_model_search.py +25 -0
- mlflow/entities/model_registry/registered_model_tag.py +35 -0
- mlflow/entities/multipart_upload.py +74 -0
- mlflow/entities/param.py +49 -0
- mlflow/entities/run.py +97 -0
- mlflow/entities/run_data.py +84 -0
- mlflow/entities/run_info.py +188 -0
- mlflow/entities/run_inputs.py +59 -0
- mlflow/entities/run_outputs.py +43 -0
- mlflow/entities/run_status.py +41 -0
- mlflow/entities/run_tag.py +36 -0
- mlflow/entities/source_type.py +31 -0
- mlflow/entities/span.py +774 -0
- mlflow/entities/span_event.py +96 -0
- mlflow/entities/span_status.py +102 -0
- mlflow/entities/trace.py +317 -0
- mlflow/entities/trace_data.py +71 -0
- mlflow/entities/trace_info.py +220 -0
- mlflow/entities/trace_info_v2.py +162 -0
- mlflow/entities/trace_location.py +173 -0
- mlflow/entities/trace_state.py +39 -0
- mlflow/entities/trace_status.py +68 -0
- mlflow/entities/view_type.py +51 -0
- mlflow/environment_variables.py +866 -0
- mlflow/evaluation/__init__.py +16 -0
- mlflow/evaluation/assessment.py +369 -0
- mlflow/evaluation/evaluation.py +411 -0
- mlflow/evaluation/evaluation_tag.py +61 -0
- mlflow/evaluation/fluent.py +48 -0
- mlflow/evaluation/utils.py +201 -0
- mlflow/exceptions.py +213 -0
- mlflow/experiments.py +140 -0
- mlflow/gemini/__init__.py +81 -0
- mlflow/gemini/autolog.py +186 -0
- mlflow/gemini/chat.py +261 -0
- mlflow/genai/__init__.py +71 -0
- mlflow/genai/datasets/__init__.py +67 -0
- mlflow/genai/datasets/evaluation_dataset.py +131 -0
- mlflow/genai/evaluation/__init__.py +3 -0
- mlflow/genai/evaluation/base.py +411 -0
- mlflow/genai/evaluation/constant.py +23 -0
- mlflow/genai/evaluation/utils.py +244 -0
- mlflow/genai/judges/__init__.py +21 -0
- mlflow/genai/judges/databricks.py +404 -0
- mlflow/genai/label_schemas/__init__.py +153 -0
- mlflow/genai/label_schemas/label_schemas.py +209 -0
- mlflow/genai/labeling/__init__.py +159 -0
- mlflow/genai/labeling/labeling.py +250 -0
- mlflow/genai/optimize/__init__.py +13 -0
- mlflow/genai/optimize/base.py +198 -0
- mlflow/genai/optimize/optimizers/__init__.py +4 -0
- mlflow/genai/optimize/optimizers/base_optimizer.py +38 -0
- mlflow/genai/optimize/optimizers/dspy_mipro_optimizer.py +221 -0
- mlflow/genai/optimize/optimizers/dspy_optimizer.py +91 -0
- mlflow/genai/optimize/optimizers/utils/dspy_mipro_callback.py +76 -0
- mlflow/genai/optimize/optimizers/utils/dspy_mipro_utils.py +18 -0
- mlflow/genai/optimize/types.py +75 -0
- mlflow/genai/optimize/util.py +30 -0
- mlflow/genai/prompts/__init__.py +206 -0
- mlflow/genai/scheduled_scorers.py +431 -0
- mlflow/genai/scorers/__init__.py +26 -0
- mlflow/genai/scorers/base.py +492 -0
- mlflow/genai/scorers/builtin_scorers.py +765 -0
- mlflow/genai/scorers/scorer_utils.py +138 -0
- mlflow/genai/scorers/validation.py +165 -0
- mlflow/genai/utils/data_validation.py +146 -0
- mlflow/genai/utils/enum_utils.py +23 -0
- mlflow/genai/utils/trace_utils.py +211 -0
- mlflow/groq/__init__.py +42 -0
- mlflow/groq/_groq_autolog.py +74 -0
- mlflow/johnsnowlabs/__init__.py +888 -0
- mlflow/langchain/__init__.py +24 -0
- mlflow/langchain/api_request_parallel_processor.py +330 -0
- mlflow/langchain/autolog.py +147 -0
- mlflow/langchain/chat_agent_langgraph.py +340 -0
- mlflow/langchain/constant.py +1 -0
- mlflow/langchain/constants.py +1 -0
- mlflow/langchain/databricks_dependencies.py +444 -0
- mlflow/langchain/langchain_tracer.py +597 -0
- mlflow/langchain/model.py +919 -0
- mlflow/langchain/output_parsers.py +142 -0
- mlflow/langchain/retriever_chain.py +153 -0
- mlflow/langchain/runnables.py +527 -0
- mlflow/langchain/utils/chat.py +402 -0
- mlflow/langchain/utils/logging.py +671 -0
- mlflow/langchain/utils/serialization.py +36 -0
- mlflow/legacy_databricks_cli/__init__.py +0 -0
- mlflow/legacy_databricks_cli/configure/__init__.py +0 -0
- mlflow/legacy_databricks_cli/configure/provider.py +482 -0
- mlflow/litellm/__init__.py +175 -0
- mlflow/llama_index/__init__.py +22 -0
- mlflow/llama_index/autolog.py +55 -0
- mlflow/llama_index/chat.py +43 -0
- mlflow/llama_index/constant.py +1 -0
- mlflow/llama_index/model.py +577 -0
- mlflow/llama_index/pyfunc_wrapper.py +332 -0
- mlflow/llama_index/serialize_objects.py +188 -0
- mlflow/llama_index/tracer.py +561 -0
- mlflow/metrics/__init__.py +479 -0
- mlflow/metrics/base.py +39 -0
- mlflow/metrics/genai/__init__.py +25 -0
- mlflow/metrics/genai/base.py +101 -0
- mlflow/metrics/genai/genai_metric.py +771 -0
- mlflow/metrics/genai/metric_definitions.py +450 -0
- mlflow/metrics/genai/model_utils.py +371 -0
- mlflow/metrics/genai/prompt_template.py +68 -0
- mlflow/metrics/genai/prompts/__init__.py +0 -0
- mlflow/metrics/genai/prompts/v1.py +422 -0
- mlflow/metrics/genai/utils.py +6 -0
- mlflow/metrics/metric_definitions.py +619 -0
- mlflow/mismatch.py +34 -0
- mlflow/mistral/__init__.py +34 -0
- mlflow/mistral/autolog.py +71 -0
- mlflow/mistral/chat.py +135 -0
- mlflow/ml_package_versions.py +452 -0
- mlflow/models/__init__.py +97 -0
- mlflow/models/auth_policy.py +83 -0
- mlflow/models/cli.py +354 -0
- mlflow/models/container/__init__.py +294 -0
- mlflow/models/container/scoring_server/__init__.py +0 -0
- mlflow/models/container/scoring_server/nginx.conf +39 -0
- mlflow/models/dependencies_schemas.py +287 -0
- mlflow/models/display_utils.py +158 -0
- mlflow/models/docker_utils.py +211 -0
- mlflow/models/evaluation/__init__.py +23 -0
- mlflow/models/evaluation/_shap_patch.py +64 -0
- mlflow/models/evaluation/artifacts.py +194 -0
- mlflow/models/evaluation/base.py +1811 -0
- mlflow/models/evaluation/calibration_curve.py +109 -0
- mlflow/models/evaluation/default_evaluator.py +996 -0
- mlflow/models/evaluation/deprecated.py +23 -0
- mlflow/models/evaluation/evaluator_registry.py +80 -0
- mlflow/models/evaluation/evaluators/classifier.py +704 -0
- mlflow/models/evaluation/evaluators/default.py +233 -0
- mlflow/models/evaluation/evaluators/regressor.py +96 -0
- mlflow/models/evaluation/evaluators/shap.py +296 -0
- mlflow/models/evaluation/lift_curve.py +178 -0
- mlflow/models/evaluation/utils/metric.py +123 -0
- mlflow/models/evaluation/utils/trace.py +179 -0
- mlflow/models/evaluation/validation.py +434 -0
- mlflow/models/flavor_backend.py +93 -0
- mlflow/models/flavor_backend_registry.py +53 -0
- mlflow/models/model.py +1639 -0
- mlflow/models/model_config.py +150 -0
- mlflow/models/notebook_resources/agent_evaluation_template.html +235 -0
- mlflow/models/notebook_resources/eval_with_dataset_example.py +22 -0
- mlflow/models/notebook_resources/eval_with_synthetic_example.py +22 -0
- mlflow/models/python_api.py +369 -0
- mlflow/models/rag_signatures.py +128 -0
- mlflow/models/resources.py +321 -0
- mlflow/models/signature.py +662 -0
- mlflow/models/utils.py +2054 -0
- mlflow/models/wheeled_model.py +280 -0
- mlflow/openai/__init__.py +57 -0
- mlflow/openai/_agent_tracer.py +364 -0
- mlflow/openai/api_request_parallel_processor.py +131 -0
- mlflow/openai/autolog.py +509 -0
- mlflow/openai/constant.py +1 -0
- mlflow/openai/model.py +824 -0
- mlflow/openai/utils/chat_schema.py +367 -0
- mlflow/optuna/__init__.py +3 -0
- mlflow/optuna/storage.py +646 -0
- mlflow/plugins/__init__.py +72 -0
- mlflow/plugins/base.py +358 -0
- mlflow/plugins/builtin/__init__.py +24 -0
- mlflow/plugins/builtin/pytorch_plugin.py +150 -0
- mlflow/plugins/builtin/sklearn_plugin.py +158 -0
- mlflow/plugins/builtin/transformers_plugin.py +187 -0
- mlflow/plugins/cli.py +321 -0
- mlflow/plugins/discovery.py +340 -0
- mlflow/plugins/manager.py +465 -0
- mlflow/plugins/registry.py +316 -0
- mlflow/plugins/templates/framework_plugin_template.py +329 -0
- mlflow/prompt/constants.py +20 -0
- mlflow/prompt/promptlab_model.py +197 -0
- mlflow/prompt/registry_utils.py +248 -0
- mlflow/promptflow/__init__.py +495 -0
- mlflow/protos/__init__.py +0 -0
- mlflow/protos/assessments_pb2.py +174 -0
- mlflow/protos/databricks_artifacts_pb2.py +489 -0
- mlflow/protos/databricks_filesystem_service_pb2.py +196 -0
- mlflow/protos/databricks_managed_catalog_messages_pb2.py +95 -0
- mlflow/protos/databricks_managed_catalog_service_pb2.py +86 -0
- mlflow/protos/databricks_pb2.py +267 -0
- mlflow/protos/databricks_trace_server_pb2.py +374 -0
- mlflow/protos/databricks_uc_registry_messages_pb2.py +1249 -0
- mlflow/protos/databricks_uc_registry_service_pb2.py +170 -0
- mlflow/protos/facet_feature_statistics_pb2.py +296 -0
- mlflow/protos/internal_pb2.py +77 -0
- mlflow/protos/mlflow_artifacts_pb2.py +336 -0
- mlflow/protos/model_registry_pb2.py +1073 -0
- mlflow/protos/scalapb/__init__.py +0 -0
- mlflow/protos/scalapb/scalapb_pb2.py +104 -0
- mlflow/protos/service_pb2.py +2600 -0
- mlflow/protos/unity_catalog_oss_messages_pb2.py +457 -0
- mlflow/protos/unity_catalog_oss_service_pb2.py +130 -0
- mlflow/protos/unity_catalog_prompt_messages_pb2.py +447 -0
- mlflow/protos/unity_catalog_prompt_messages_pb2_grpc.py +24 -0
- mlflow/protos/unity_catalog_prompt_service_pb2.py +164 -0
- mlflow/protos/unity_catalog_prompt_service_pb2_grpc.py +785 -0
- mlflow/py.typed +0 -0
- mlflow/pydantic_ai/__init__.py +57 -0
- mlflow/pydantic_ai/autolog.py +173 -0
- mlflow/pyfunc/__init__.py +3844 -0
- mlflow/pyfunc/_mlflow_pyfunc_backend_predict.py +61 -0
- mlflow/pyfunc/backend.py +523 -0
- mlflow/pyfunc/context.py +78 -0
- mlflow/pyfunc/dbconnect_artifact_cache.py +144 -0
- mlflow/pyfunc/loaders/__init__.py +7 -0
- mlflow/pyfunc/loaders/chat_agent.py +117 -0
- mlflow/pyfunc/loaders/chat_model.py +125 -0
- mlflow/pyfunc/loaders/code_model.py +31 -0
- mlflow/pyfunc/loaders/responses_agent.py +112 -0
- mlflow/pyfunc/mlserver.py +46 -0
- mlflow/pyfunc/model.py +1473 -0
- mlflow/pyfunc/scoring_server/__init__.py +604 -0
- mlflow/pyfunc/scoring_server/app.py +7 -0
- mlflow/pyfunc/scoring_server/client.py +146 -0
- mlflow/pyfunc/spark_model_cache.py +48 -0
- mlflow/pyfunc/stdin_server.py +44 -0
- mlflow/pyfunc/utils/__init__.py +3 -0
- mlflow/pyfunc/utils/data_validation.py +224 -0
- mlflow/pyfunc/utils/environment.py +22 -0
- mlflow/pyfunc/utils/input_converter.py +47 -0
- mlflow/pyfunc/utils/serving_data_parser.py +11 -0
- mlflow/pytorch/__init__.py +1171 -0
- mlflow/pytorch/_lightning_autolog.py +580 -0
- mlflow/pytorch/_pytorch_autolog.py +50 -0
- mlflow/pytorch/pickle_module.py +35 -0
- mlflow/rfunc/__init__.py +42 -0
- mlflow/rfunc/backend.py +134 -0
- mlflow/runs.py +89 -0
- mlflow/server/__init__.py +302 -0
- mlflow/server/auth/__init__.py +1224 -0
- mlflow/server/auth/__main__.py +4 -0
- mlflow/server/auth/basic_auth.ini +6 -0
- mlflow/server/auth/cli.py +11 -0
- mlflow/server/auth/client.py +537 -0
- mlflow/server/auth/config.py +34 -0
- mlflow/server/auth/db/__init__.py +0 -0
- mlflow/server/auth/db/cli.py +18 -0
- mlflow/server/auth/db/migrations/__init__.py +0 -0
- mlflow/server/auth/db/migrations/alembic.ini +110 -0
- mlflow/server/auth/db/migrations/env.py +76 -0
- mlflow/server/auth/db/migrations/versions/8606fa83a998_initial_migration.py +51 -0
- mlflow/server/auth/db/migrations/versions/__init__.py +0 -0
- mlflow/server/auth/db/models.py +67 -0
- mlflow/server/auth/db/utils.py +37 -0
- mlflow/server/auth/entities.py +165 -0
- mlflow/server/auth/logo.py +14 -0
- mlflow/server/auth/permissions.py +65 -0
- mlflow/server/auth/routes.py +18 -0
- mlflow/server/auth/sqlalchemy_store.py +263 -0
- mlflow/server/graphql/__init__.py +0 -0
- mlflow/server/graphql/autogenerated_graphql_schema.py +353 -0
- mlflow/server/graphql/graphql_custom_scalars.py +24 -0
- mlflow/server/graphql/graphql_errors.py +15 -0
- mlflow/server/graphql/graphql_no_batching.py +89 -0
- mlflow/server/graphql/graphql_schema_extensions.py +74 -0
- mlflow/server/handlers.py +3217 -0
- mlflow/server/prometheus_exporter.py +17 -0
- mlflow/server/validation.py +30 -0
- mlflow/shap/__init__.py +691 -0
- mlflow/sklearn/__init__.py +1994 -0
- mlflow/sklearn/utils.py +1041 -0
- mlflow/smolagents/__init__.py +66 -0
- mlflow/smolagents/autolog.py +139 -0
- mlflow/smolagents/chat.py +29 -0
- mlflow/store/__init__.py +10 -0
- mlflow/store/_unity_catalog/__init__.py +1 -0
- mlflow/store/_unity_catalog/lineage/__init__.py +1 -0
- mlflow/store/_unity_catalog/lineage/constants.py +2 -0
- mlflow/store/_unity_catalog/registry/__init__.py +6 -0
- mlflow/store/_unity_catalog/registry/prompt_info.py +75 -0
- mlflow/store/_unity_catalog/registry/rest_store.py +1740 -0
- mlflow/store/_unity_catalog/registry/uc_oss_rest_store.py +507 -0
- mlflow/store/_unity_catalog/registry/utils.py +121 -0
- mlflow/store/artifact/__init__.py +0 -0
- mlflow/store/artifact/artifact_repo.py +472 -0
- mlflow/store/artifact/artifact_repository_registry.py +154 -0
- mlflow/store/artifact/azure_blob_artifact_repo.py +275 -0
- mlflow/store/artifact/azure_data_lake_artifact_repo.py +295 -0
- mlflow/store/artifact/cli.py +141 -0
- mlflow/store/artifact/cloud_artifact_repo.py +332 -0
- mlflow/store/artifact/databricks_artifact_repo.py +729 -0
- mlflow/store/artifact/databricks_artifact_repo_resources.py +301 -0
- mlflow/store/artifact/databricks_logged_model_artifact_repo.py +93 -0
- mlflow/store/artifact/databricks_models_artifact_repo.py +216 -0
- mlflow/store/artifact/databricks_sdk_artifact_repo.py +134 -0
- mlflow/store/artifact/databricks_sdk_models_artifact_repo.py +97 -0
- mlflow/store/artifact/dbfs_artifact_repo.py +240 -0
- mlflow/store/artifact/ftp_artifact_repo.py +132 -0
- mlflow/store/artifact/gcs_artifact_repo.py +296 -0
- mlflow/store/artifact/hdfs_artifact_repo.py +209 -0
- mlflow/store/artifact/http_artifact_repo.py +218 -0
- mlflow/store/artifact/local_artifact_repo.py +142 -0
- mlflow/store/artifact/mlflow_artifacts_repo.py +94 -0
- mlflow/store/artifact/models_artifact_repo.py +259 -0
- mlflow/store/artifact/optimized_s3_artifact_repo.py +356 -0
- mlflow/store/artifact/presigned_url_artifact_repo.py +173 -0
- mlflow/store/artifact/r2_artifact_repo.py +70 -0
- mlflow/store/artifact/runs_artifact_repo.py +265 -0
- mlflow/store/artifact/s3_artifact_repo.py +330 -0
- mlflow/store/artifact/sftp_artifact_repo.py +141 -0
- mlflow/store/artifact/uc_volume_artifact_repo.py +76 -0
- mlflow/store/artifact/unity_catalog_models_artifact_repo.py +168 -0
- mlflow/store/artifact/unity_catalog_oss_models_artifact_repo.py +168 -0
- mlflow/store/artifact/utils/__init__.py +0 -0
- mlflow/store/artifact/utils/models.py +148 -0
- mlflow/store/db/__init__.py +0 -0
- mlflow/store/db/base_sql_model.py +3 -0
- mlflow/store/db/db_types.py +10 -0
- mlflow/store/db/utils.py +314 -0
- mlflow/store/db_migrations/__init__.py +0 -0
- mlflow/store/db_migrations/alembic.ini +74 -0
- mlflow/store/db_migrations/env.py +84 -0
- mlflow/store/db_migrations/versions/0584bdc529eb_add_cascading_deletion_to_datasets_from_experiments.py +88 -0
- mlflow/store/db_migrations/versions/0a8213491aaa_drop_duplicate_killed_constraint.py +49 -0
- mlflow/store/db_migrations/versions/0c779009ac13_add_deleted_time_field_to_runs_table.py +24 -0
- mlflow/store/db_migrations/versions/181f10493468_allow_nulls_for_metric_values.py +35 -0
- mlflow/store/db_migrations/versions/27a6a02d2cf1_add_model_version_tags_table.py +38 -0
- mlflow/store/db_migrations/versions/2b4d017a5e9b_add_model_registry_tables_to_db.py +77 -0
- mlflow/store/db_migrations/versions/2d6e25af4d3e_increase_max_param_val_length.py +33 -0
- mlflow/store/db_migrations/versions/3500859a5d39_add_model_aliases_table.py +50 -0
- mlflow/store/db_migrations/versions/39d1c3be5f05_add_is_nan_constraint_for_metrics_tables_if_necessary.py +41 -0
- mlflow/store/db_migrations/versions/400f98739977_add_logged_model_tables.py +123 -0
- mlflow/store/db_migrations/versions/4465047574b1_increase_max_dataset_schema_size.py +38 -0
- mlflow/store/db_migrations/versions/451aebb31d03_add_metric_step.py +35 -0
- mlflow/store/db_migrations/versions/5b0e9adcef9c_add_cascade_deletion_to_trace_tables_fk.py +40 -0
- mlflow/store/db_migrations/versions/6953534de441_add_step_to_inputs_table.py +25 -0
- mlflow/store/db_migrations/versions/728d730b5ebd_add_registered_model_tags_table.py +38 -0
- mlflow/store/db_migrations/versions/7ac759974ad8_update_run_tags_with_larger_limit.py +36 -0
- mlflow/store/db_migrations/versions/7f2a7d5fae7d_add_datasets_inputs_input_tags_tables.py +82 -0
- mlflow/store/db_migrations/versions/84291f40a231_add_run_link_to_model_version.py +26 -0
- mlflow/store/db_migrations/versions/867495a8f9d4_add_trace_tables.py +90 -0
- mlflow/store/db_migrations/versions/89d4b8295536_create_latest_metrics_table.py +169 -0
- mlflow/store/db_migrations/versions/90e64c465722_migrate_user_column_to_tags.py +64 -0
- mlflow/store/db_migrations/versions/97727af70f4d_creation_time_last_update_time_experiments.py +25 -0
- mlflow/store/db_migrations/versions/__init__.py +0 -0
- mlflow/store/db_migrations/versions/a8c4a736bde6_allow_nulls_for_run_id.py +27 -0
- mlflow/store/db_migrations/versions/acf3f17fdcc7_add_storage_location_field_to_model_.py +29 -0
- mlflow/store/db_migrations/versions/bd07f7e963c5_create_index_on_run_uuid.py +26 -0
- mlflow/store/db_migrations/versions/bda7b8c39065_increase_model_version_tag_value_limit.py +38 -0
- mlflow/store/db_migrations/versions/c48cb773bb87_reset_default_value_for_is_nan_in_metrics_table_for_mysql.py +41 -0
- mlflow/store/db_migrations/versions/cbc13b556ace_add_v3_trace_schema_columns.py +31 -0
- mlflow/store/db_migrations/versions/cc1f77228345_change_param_value_length_to_500.py +34 -0
- mlflow/store/db_migrations/versions/cfd24bdc0731_update_run_status_constraint_with_killed.py +78 -0
- mlflow/store/db_migrations/versions/df50e92ffc5e_add_experiment_tags_table.py +38 -0
- mlflow/store/db_migrations/versions/f5a4f2784254_increase_run_tag_value_limit.py +36 -0
- mlflow/store/entities/__init__.py +3 -0
- mlflow/store/entities/paged_list.py +18 -0
- mlflow/store/model_registry/__init__.py +10 -0
- mlflow/store/model_registry/abstract_store.py +1081 -0
- mlflow/store/model_registry/base_rest_store.py +44 -0
- mlflow/store/model_registry/databricks_workspace_model_registry_rest_store.py +37 -0
- mlflow/store/model_registry/dbmodels/__init__.py +0 -0
- mlflow/store/model_registry/dbmodels/models.py +206 -0
- mlflow/store/model_registry/file_store.py +1091 -0
- mlflow/store/model_registry/rest_store.py +481 -0
- mlflow/store/model_registry/sqlalchemy_store.py +1286 -0
- mlflow/store/tracking/__init__.py +23 -0
- mlflow/store/tracking/abstract_store.py +816 -0
- mlflow/store/tracking/dbmodels/__init__.py +0 -0
- mlflow/store/tracking/dbmodels/initial_models.py +243 -0
- mlflow/store/tracking/dbmodels/models.py +1073 -0
- mlflow/store/tracking/file_store.py +2438 -0
- mlflow/store/tracking/postgres_managed_identity.py +146 -0
- mlflow/store/tracking/rest_store.py +1131 -0
- mlflow/store/tracking/sqlalchemy_store.py +2785 -0
- mlflow/system_metrics/__init__.py +61 -0
- mlflow/system_metrics/metrics/__init__.py +0 -0
- mlflow/system_metrics/metrics/base_metrics_monitor.py +32 -0
- mlflow/system_metrics/metrics/cpu_monitor.py +23 -0
- mlflow/system_metrics/metrics/disk_monitor.py +21 -0
- mlflow/system_metrics/metrics/gpu_monitor.py +71 -0
- mlflow/system_metrics/metrics/network_monitor.py +34 -0
- mlflow/system_metrics/metrics/rocm_monitor.py +123 -0
- mlflow/system_metrics/system_metrics_monitor.py +198 -0
- mlflow/tracing/__init__.py +16 -0
- mlflow/tracing/assessment.py +356 -0
- mlflow/tracing/client.py +531 -0
- mlflow/tracing/config.py +125 -0
- mlflow/tracing/constant.py +105 -0
- mlflow/tracing/destination.py +81 -0
- mlflow/tracing/display/__init__.py +40 -0
- mlflow/tracing/display/display_handler.py +196 -0
- mlflow/tracing/export/async_export_queue.py +186 -0
- mlflow/tracing/export/inference_table.py +138 -0
- mlflow/tracing/export/mlflow_v3.py +137 -0
- mlflow/tracing/export/utils.py +70 -0
- mlflow/tracing/fluent.py +1417 -0
- mlflow/tracing/processor/base_mlflow.py +199 -0
- mlflow/tracing/processor/inference_table.py +175 -0
- mlflow/tracing/processor/mlflow_v3.py +47 -0
- mlflow/tracing/processor/otel.py +73 -0
- mlflow/tracing/provider.py +487 -0
- mlflow/tracing/trace_manager.py +200 -0
- mlflow/tracing/utils/__init__.py +616 -0
- mlflow/tracing/utils/artifact_utils.py +28 -0
- mlflow/tracing/utils/copy.py +55 -0
- mlflow/tracing/utils/environment.py +55 -0
- mlflow/tracing/utils/exception.py +21 -0
- mlflow/tracing/utils/once.py +35 -0
- mlflow/tracing/utils/otlp.py +63 -0
- mlflow/tracing/utils/processor.py +54 -0
- mlflow/tracing/utils/search.py +292 -0
- mlflow/tracing/utils/timeout.py +250 -0
- mlflow/tracing/utils/token.py +19 -0
- mlflow/tracing/utils/truncation.py +124 -0
- mlflow/tracing/utils/warning.py +76 -0
- mlflow/tracking/__init__.py +39 -0
- mlflow/tracking/_model_registry/__init__.py +1 -0
- mlflow/tracking/_model_registry/client.py +764 -0
- mlflow/tracking/_model_registry/fluent.py +853 -0
- mlflow/tracking/_model_registry/registry.py +67 -0
- mlflow/tracking/_model_registry/utils.py +251 -0
- mlflow/tracking/_tracking_service/__init__.py +0 -0
- mlflow/tracking/_tracking_service/client.py +883 -0
- mlflow/tracking/_tracking_service/registry.py +56 -0
- mlflow/tracking/_tracking_service/utils.py +275 -0
- mlflow/tracking/artifact_utils.py +179 -0
- mlflow/tracking/client.py +5900 -0
- mlflow/tracking/context/__init__.py +0 -0
- mlflow/tracking/context/abstract_context.py +35 -0
- mlflow/tracking/context/databricks_cluster_context.py +15 -0
- mlflow/tracking/context/databricks_command_context.py +15 -0
- mlflow/tracking/context/databricks_job_context.py +49 -0
- mlflow/tracking/context/databricks_notebook_context.py +41 -0
- mlflow/tracking/context/databricks_repo_context.py +43 -0
- mlflow/tracking/context/default_context.py +51 -0
- mlflow/tracking/context/git_context.py +32 -0
- mlflow/tracking/context/registry.py +98 -0
- mlflow/tracking/context/system_environment_context.py +15 -0
- mlflow/tracking/default_experiment/__init__.py +1 -0
- mlflow/tracking/default_experiment/abstract_context.py +43 -0
- mlflow/tracking/default_experiment/databricks_notebook_experiment_provider.py +44 -0
- mlflow/tracking/default_experiment/registry.py +75 -0
- mlflow/tracking/fluent.py +3595 -0
- mlflow/tracking/metric_value_conversion_utils.py +93 -0
- mlflow/tracking/multimedia.py +206 -0
- mlflow/tracking/registry.py +86 -0
- mlflow/tracking/request_auth/__init__.py +0 -0
- mlflow/tracking/request_auth/abstract_request_auth_provider.py +34 -0
- mlflow/tracking/request_auth/registry.py +60 -0
- mlflow/tracking/request_header/__init__.py +0 -0
- mlflow/tracking/request_header/abstract_request_header_provider.py +36 -0
- mlflow/tracking/request_header/databricks_request_header_provider.py +38 -0
- mlflow/tracking/request_header/default_request_header_provider.py +17 -0
- mlflow/tracking/request_header/registry.py +79 -0
- mlflow/transformers/__init__.py +2982 -0
- mlflow/transformers/flavor_config.py +258 -0
- mlflow/transformers/hub_utils.py +83 -0
- mlflow/transformers/llm_inference_utils.py +468 -0
- mlflow/transformers/model_io.py +301 -0
- mlflow/transformers/peft.py +51 -0
- mlflow/transformers/signature.py +183 -0
- mlflow/transformers/torch_utils.py +55 -0
- mlflow/types/__init__.py +21 -0
- mlflow/types/agent.py +270 -0
- mlflow/types/chat.py +240 -0
- mlflow/types/llm.py +935 -0
- mlflow/types/responses.py +139 -0
- mlflow/types/responses_helpers.py +416 -0
- mlflow/types/schema.py +1505 -0
- mlflow/types/type_hints.py +647 -0
- mlflow/types/utils.py +753 -0
- mlflow/utils/__init__.py +283 -0
- mlflow/utils/_capture_modules.py +256 -0
- mlflow/utils/_capture_transformers_modules.py +75 -0
- mlflow/utils/_spark_utils.py +201 -0
- mlflow/utils/_unity_catalog_oss_utils.py +97 -0
- mlflow/utils/_unity_catalog_utils.py +479 -0
- mlflow/utils/annotations.py +218 -0
- mlflow/utils/arguments_utils.py +16 -0
- mlflow/utils/async_logging/__init__.py +1 -0
- mlflow/utils/async_logging/async_artifacts_logging_queue.py +258 -0
- mlflow/utils/async_logging/async_logging_queue.py +366 -0
- mlflow/utils/async_logging/run_artifact.py +38 -0
- mlflow/utils/async_logging/run_batch.py +58 -0
- mlflow/utils/async_logging/run_operations.py +49 -0
- mlflow/utils/autologging_utils/__init__.py +737 -0
- mlflow/utils/autologging_utils/client.py +432 -0
- mlflow/utils/autologging_utils/config.py +33 -0
- mlflow/utils/autologging_utils/events.py +294 -0
- mlflow/utils/autologging_utils/logging_and_warnings.py +328 -0
- mlflow/utils/autologging_utils/metrics_queue.py +71 -0
- mlflow/utils/autologging_utils/safety.py +1104 -0
- mlflow/utils/autologging_utils/versioning.py +95 -0
- mlflow/utils/checkpoint_utils.py +206 -0
- mlflow/utils/class_utils.py +6 -0
- mlflow/utils/cli_args.py +257 -0
- mlflow/utils/conda.py +354 -0
- mlflow/utils/credentials.py +231 -0
- mlflow/utils/data_utils.py +17 -0
- mlflow/utils/databricks_utils.py +1436 -0
- mlflow/utils/docstring_utils.py +477 -0
- mlflow/utils/doctor.py +133 -0
- mlflow/utils/download_cloud_file_chunk.py +43 -0
- mlflow/utils/env_manager.py +16 -0
- mlflow/utils/env_pack.py +131 -0
- mlflow/utils/environment.py +1009 -0
- mlflow/utils/exception_utils.py +14 -0
- mlflow/utils/file_utils.py +978 -0
- mlflow/utils/git_utils.py +77 -0
- mlflow/utils/gorilla.py +797 -0
- mlflow/utils/import_hooks/__init__.py +363 -0
- mlflow/utils/lazy_load.py +51 -0
- mlflow/utils/logging_utils.py +168 -0
- mlflow/utils/mime_type_utils.py +58 -0
- mlflow/utils/mlflow_tags.py +103 -0
- mlflow/utils/model_utils.py +486 -0
- mlflow/utils/name_utils.py +346 -0
- mlflow/utils/nfs_on_spark.py +62 -0
- mlflow/utils/openai_utils.py +164 -0
- mlflow/utils/os.py +12 -0
- mlflow/utils/oss_registry_utils.py +29 -0
- mlflow/utils/plugins.py +17 -0
- mlflow/utils/process.py +182 -0
- mlflow/utils/promptlab_utils.py +146 -0
- mlflow/utils/proto_json_utils.py +743 -0
- mlflow/utils/pydantic_utils.py +54 -0
- mlflow/utils/request_utils.py +279 -0
- mlflow/utils/requirements_utils.py +704 -0
- mlflow/utils/rest_utils.py +673 -0
- mlflow/utils/search_logged_model_utils.py +127 -0
- mlflow/utils/search_utils.py +2111 -0
- mlflow/utils/secure_loading.py +221 -0
- mlflow/utils/security_validation.py +384 -0
- mlflow/utils/server_cli_utils.py +61 -0
- mlflow/utils/spark_utils.py +15 -0
- mlflow/utils/string_utils.py +138 -0
- mlflow/utils/thread_utils.py +63 -0
- mlflow/utils/time.py +54 -0
- mlflow/utils/timeout.py +42 -0
- mlflow/utils/uri.py +572 -0
- mlflow/utils/validation.py +662 -0
- mlflow/utils/virtualenv.py +458 -0
- mlflow/utils/warnings_utils.py +25 -0
- mlflow/utils/yaml_utils.py +179 -0
- 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
|
+
]
|