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,153 @@
|
|
1
|
+
"""
|
2
|
+
Databricks Agent Label Schemas Python SDK. For more details see Databricks Agent Evaluation:
|
3
|
+
<https://docs.databricks.com/en/generative-ai/agent-evaluation/index.html>
|
4
|
+
|
5
|
+
The API docs can be found here:
|
6
|
+
<https://api-docs.databricks.com/python/databricks-agents/latest/databricks_agent_eval.html#review-app>
|
7
|
+
"""
|
8
|
+
|
9
|
+
from typing import TYPE_CHECKING, Literal, Optional, Union
|
10
|
+
|
11
|
+
from mlflow.genai.label_schemas.label_schemas import (
|
12
|
+
InputCategorical,
|
13
|
+
InputCategoricalList,
|
14
|
+
InputNumeric,
|
15
|
+
InputText,
|
16
|
+
InputTextList,
|
17
|
+
LabelSchema,
|
18
|
+
LabelSchemaType,
|
19
|
+
)
|
20
|
+
from mlflow.genai.labeling import ReviewApp
|
21
|
+
|
22
|
+
if TYPE_CHECKING:
|
23
|
+
from databricks.agents.review_app import ReviewApp
|
24
|
+
|
25
|
+
_ERROR_MSG = (
|
26
|
+
"The `databricks-agents` package is required to use `mlflow.genai.label_schemas`. "
|
27
|
+
"Please install it with `pip install databricks-agents`."
|
28
|
+
)
|
29
|
+
|
30
|
+
EXPECTED_FACTS = "expected_facts"
|
31
|
+
GUIDELINES = "guidelines"
|
32
|
+
EXPECTED_RESPONSE = "expected_response"
|
33
|
+
|
34
|
+
|
35
|
+
def create_label_schema(
|
36
|
+
name: str,
|
37
|
+
*,
|
38
|
+
type: Literal["feedback", "expectation"],
|
39
|
+
title: str,
|
40
|
+
input: Union[
|
41
|
+
InputCategorical,
|
42
|
+
InputCategoricalList,
|
43
|
+
InputText,
|
44
|
+
InputTextList,
|
45
|
+
InputNumeric,
|
46
|
+
],
|
47
|
+
instruction: Optional[str] = None,
|
48
|
+
enable_comment: bool = False,
|
49
|
+
overwrite: bool = False,
|
50
|
+
) -> LabelSchema:
|
51
|
+
"""Create a new label schema for the review app.
|
52
|
+
|
53
|
+
A label schema defines the type of input that stakeholders will provide when labeling items
|
54
|
+
in the review app.
|
55
|
+
|
56
|
+
.. note::
|
57
|
+
This functionality is only available in Databricks. Please run
|
58
|
+
`pip install mlflow[databricks]` to use it.
|
59
|
+
|
60
|
+
Args:
|
61
|
+
name: The name of the label schema. Must be unique across the review app.
|
62
|
+
type: The type of the label schema. Either "feedback" or "expectation".
|
63
|
+
title: The title of the label schema shown to stakeholders.
|
64
|
+
input: The input type of the label schema.
|
65
|
+
instruction: Optional. The instruction shown to stakeholders.
|
66
|
+
enable_comment: Optional. Whether to enable comments for the label schema.
|
67
|
+
overwrite: Optional. Whether to overwrite the existing label schema with the same name.
|
68
|
+
|
69
|
+
Returns:
|
70
|
+
LabelSchema: The created label schema.
|
71
|
+
"""
|
72
|
+
try:
|
73
|
+
from databricks.agents import review_app
|
74
|
+
except ImportError:
|
75
|
+
raise ImportError(_ERROR_MSG) from None
|
76
|
+
|
77
|
+
app = review_app.get_review_app()
|
78
|
+
return app.create_label_schema(
|
79
|
+
name=name,
|
80
|
+
type=type,
|
81
|
+
title=title,
|
82
|
+
input=input._to_databricks_input(),
|
83
|
+
instruction=instruction,
|
84
|
+
enable_comment=enable_comment,
|
85
|
+
overwrite=overwrite,
|
86
|
+
)
|
87
|
+
|
88
|
+
|
89
|
+
def get_label_schema(name: str) -> LabelSchema:
|
90
|
+
"""Get a label schema from the review app.
|
91
|
+
|
92
|
+
.. note::
|
93
|
+
This functionality is only available in Databricks. Please run
|
94
|
+
`pip install mlflow[databricks]` to use it.
|
95
|
+
|
96
|
+
Args:
|
97
|
+
name: The name of the label schema to get.
|
98
|
+
|
99
|
+
Returns:
|
100
|
+
LabelSchema: The label schema.
|
101
|
+
"""
|
102
|
+
try:
|
103
|
+
from databricks.agents import review_app
|
104
|
+
except ImportError:
|
105
|
+
raise ImportError(_ERROR_MSG) from None
|
106
|
+
|
107
|
+
app = review_app.get_review_app()
|
108
|
+
label_schema = next(
|
109
|
+
(label_schema for label_schema in app.label_schemas if label_schema.name == name),
|
110
|
+
None,
|
111
|
+
)
|
112
|
+
if label_schema is None:
|
113
|
+
raise ValueError(f"Label schema with name `{name}` not found")
|
114
|
+
return LabelSchema._from_databricks_label_schema(label_schema)
|
115
|
+
|
116
|
+
|
117
|
+
def delete_label_schema(name: str) -> "ReviewApp":
|
118
|
+
"""Delete a label schema from the review app.
|
119
|
+
|
120
|
+
.. note::
|
121
|
+
This functionality is only available in Databricks. Please run
|
122
|
+
`pip install mlflow[databricks]` to use it.
|
123
|
+
|
124
|
+
Args:
|
125
|
+
name: The name of the label schema to delete.
|
126
|
+
|
127
|
+
Returns:
|
128
|
+
ReviewApp: The review app.
|
129
|
+
"""
|
130
|
+
try:
|
131
|
+
from databricks.agents import review_app
|
132
|
+
except ImportError:
|
133
|
+
raise ImportError(_ERROR_MSG) from None
|
134
|
+
|
135
|
+
app = review_app.get_review_app()
|
136
|
+
return ReviewApp(app.delete_label_schema(name))
|
137
|
+
|
138
|
+
|
139
|
+
__all__ = [
|
140
|
+
"EXPECTED_FACTS",
|
141
|
+
"GUIDELINES",
|
142
|
+
"EXPECTED_RESPONSE",
|
143
|
+
"LabelSchemaType",
|
144
|
+
"LabelSchema",
|
145
|
+
"InputCategorical",
|
146
|
+
"InputCategoricalList",
|
147
|
+
"InputNumeric",
|
148
|
+
"InputText",
|
149
|
+
"InputTextList",
|
150
|
+
"create_label_schema",
|
151
|
+
"get_label_schema",
|
152
|
+
"delete_label_schema",
|
153
|
+
]
|
@@ -0,0 +1,209 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from dataclasses import dataclass
|
3
|
+
from typing import TYPE_CHECKING, Optional, TypeVar, Union
|
4
|
+
|
5
|
+
from mlflow.genai.utils.enum_utils import StrEnum
|
6
|
+
|
7
|
+
if TYPE_CHECKING:
|
8
|
+
from databricks.agents.review_app import label_schemas as _label_schemas
|
9
|
+
|
10
|
+
_InputCategorical = _label_schemas.InputCategorical
|
11
|
+
_InputCategoricalList = _label_schemas.InputCategoricalList
|
12
|
+
_InputNumeric = _label_schemas.InputNumeric
|
13
|
+
_InputText = _label_schemas.InputText
|
14
|
+
_InputTextList = _label_schemas.InputTextList
|
15
|
+
_LabelSchema = _label_schemas.LabelSchema
|
16
|
+
|
17
|
+
DatabricksInputType = TypeVar("DatabricksInputType")
|
18
|
+
_InputType = TypeVar("_InputType", bound="InputType")
|
19
|
+
|
20
|
+
|
21
|
+
class InputType(ABC):
|
22
|
+
"""Base class for all input types."""
|
23
|
+
|
24
|
+
@abstractmethod
|
25
|
+
def _to_databricks_input(self) -> DatabricksInputType:
|
26
|
+
"""Convert to the internal Databricks input type."""
|
27
|
+
|
28
|
+
@classmethod
|
29
|
+
@abstractmethod
|
30
|
+
def _from_databricks_input(cls, input_obj: DatabricksInputType) -> _InputType:
|
31
|
+
"""Create from the internal Databricks input type."""
|
32
|
+
|
33
|
+
|
34
|
+
@dataclass
|
35
|
+
class InputCategorical(InputType):
|
36
|
+
"""A single-select dropdown for collecting assessments from stakeholders.
|
37
|
+
|
38
|
+
.. note::
|
39
|
+
This functionality is only available in Databricks. Please run
|
40
|
+
`pip install mlflow[databricks]` to use it.
|
41
|
+
"""
|
42
|
+
|
43
|
+
options: list[str]
|
44
|
+
"""List of available options for the categorical selection."""
|
45
|
+
|
46
|
+
def _to_databricks_input(self) -> "_InputCategorical":
|
47
|
+
"""Convert to the internal Databricks input type."""
|
48
|
+
from databricks.agents.review_app import label_schemas as _label_schemas
|
49
|
+
|
50
|
+
return _label_schemas.InputCategorical(options=self.options)
|
51
|
+
|
52
|
+
@classmethod
|
53
|
+
def _from_databricks_input(cls, input_obj: "_InputCategorical") -> "InputCategorical":
|
54
|
+
"""Create from the internal Databricks input type."""
|
55
|
+
return cls(options=input_obj.options)
|
56
|
+
|
57
|
+
|
58
|
+
@dataclass
|
59
|
+
class InputCategoricalList(InputType):
|
60
|
+
"""A multi-select dropdown for collecting assessments from stakeholders.
|
61
|
+
|
62
|
+
.. note::
|
63
|
+
This functionality is only available in Databricks. Please run
|
64
|
+
`pip install mlflow[databricks]` to use it.
|
65
|
+
"""
|
66
|
+
|
67
|
+
options: list[str]
|
68
|
+
"""List of available options for the multi-select categorical (dropdown)."""
|
69
|
+
|
70
|
+
def _to_databricks_input(self) -> "_InputCategoricalList":
|
71
|
+
"""Convert to the internal Databricks input type."""
|
72
|
+
from databricks.agents.review_app import label_schemas as _label_schemas
|
73
|
+
|
74
|
+
return _label_schemas.InputCategoricalList(options=self.options)
|
75
|
+
|
76
|
+
@classmethod
|
77
|
+
def _from_databricks_input(cls, input_obj: "_InputCategoricalList") -> "InputCategoricalList":
|
78
|
+
"""Create from the internal Databricks input type."""
|
79
|
+
return cls(options=input_obj.options)
|
80
|
+
|
81
|
+
|
82
|
+
@dataclass
|
83
|
+
class InputTextList(InputType):
|
84
|
+
"""Like `Text`, but allows multiple entries.
|
85
|
+
|
86
|
+
.. note::
|
87
|
+
This functionality is only available in Databricks. Please run
|
88
|
+
`pip install mlflow[databricks]` to use it.
|
89
|
+
"""
|
90
|
+
|
91
|
+
max_length_each: Optional[int] = None
|
92
|
+
"""Maximum character length for each individual text entry. None means no limit."""
|
93
|
+
|
94
|
+
max_count: Optional[int] = None
|
95
|
+
"""Maximum number of text entries allowed. None means no limit."""
|
96
|
+
|
97
|
+
def _to_databricks_input(self) -> "_InputTextList":
|
98
|
+
"""Convert to the internal Databricks input type."""
|
99
|
+
from databricks.agents.review_app import label_schemas as _label_schemas
|
100
|
+
|
101
|
+
return _label_schemas.InputTextList(
|
102
|
+
max_length_each=self.max_length_each, max_count=self.max_count
|
103
|
+
)
|
104
|
+
|
105
|
+
@classmethod
|
106
|
+
def _from_databricks_input(cls, input_obj: "_InputTextList") -> "InputTextList":
|
107
|
+
"""Create from the internal Databricks input type."""
|
108
|
+
return cls(max_length_each=input_obj.max_length_each, max_count=input_obj.max_count)
|
109
|
+
|
110
|
+
|
111
|
+
@dataclass
|
112
|
+
class InputText(InputType):
|
113
|
+
"""A free-form text box for collecting assessments from stakeholders.
|
114
|
+
|
115
|
+
.. note::
|
116
|
+
This functionality is only available in Databricks. Please run
|
117
|
+
`pip install mlflow[databricks]` to use it.
|
118
|
+
"""
|
119
|
+
|
120
|
+
max_length: Optional[int] = None
|
121
|
+
"""Maximum character length for the text input. None means no limit."""
|
122
|
+
|
123
|
+
def _to_databricks_input(self) -> "_InputText":
|
124
|
+
"""Convert to the internal Databricks input type."""
|
125
|
+
from databricks.agents.review_app import label_schemas as _label_schemas
|
126
|
+
|
127
|
+
return _label_schemas.InputText(max_length=self.max_length)
|
128
|
+
|
129
|
+
@classmethod
|
130
|
+
def _from_databricks_input(cls, input_obj: "_InputText") -> "InputText":
|
131
|
+
"""Create from the internal Databricks input type."""
|
132
|
+
return cls(max_length=input_obj.max_length)
|
133
|
+
|
134
|
+
|
135
|
+
@dataclass
|
136
|
+
class InputNumeric(InputType):
|
137
|
+
"""A numeric input for collecting assessments from stakeholders.
|
138
|
+
|
139
|
+
.. note::
|
140
|
+
This functionality is only available in Databricks. Please run
|
141
|
+
`pip install mlflow[databricks]` to use it.
|
142
|
+
"""
|
143
|
+
|
144
|
+
min_value: Optional[float] = None
|
145
|
+
"""Minimum allowed numeric value. None means no minimum limit."""
|
146
|
+
|
147
|
+
max_value: Optional[float] = None
|
148
|
+
"""Maximum allowed numeric value. None means no maximum limit."""
|
149
|
+
|
150
|
+
def _to_databricks_input(self) -> "_InputNumeric":
|
151
|
+
"""Convert to the internal Databricks input type."""
|
152
|
+
from databricks.agents.review_app import label_schemas as _label_schemas
|
153
|
+
|
154
|
+
return _label_schemas.InputNumeric(min_value=self.min_value, max_value=self.max_value)
|
155
|
+
|
156
|
+
@classmethod
|
157
|
+
def _from_databricks_input(cls, input_obj: "_InputNumeric") -> "InputNumeric":
|
158
|
+
"""Create from the internal Databricks input type."""
|
159
|
+
return cls(min_value=input_obj.min_value, max_value=input_obj.max_value)
|
160
|
+
|
161
|
+
|
162
|
+
class LabelSchemaType(StrEnum):
|
163
|
+
"""Type of label schema."""
|
164
|
+
|
165
|
+
FEEDBACK = "feedback"
|
166
|
+
EXPECTATION = "expectation"
|
167
|
+
|
168
|
+
|
169
|
+
@dataclass(frozen=True)
|
170
|
+
class LabelSchema:
|
171
|
+
"""A label schema for collecting input from stakeholders.
|
172
|
+
|
173
|
+
.. note::
|
174
|
+
This functionality is only available in Databricks. Please run
|
175
|
+
`pip install mlflow[databricks]` to use it.
|
176
|
+
"""
|
177
|
+
|
178
|
+
name: str
|
179
|
+
"""Unique name identifier for the label schema."""
|
180
|
+
|
181
|
+
type: LabelSchemaType
|
182
|
+
"""Type of the label schema, either 'feedback' or 'expectation'."""
|
183
|
+
|
184
|
+
title: str
|
185
|
+
"""Display title shown to stakeholders in the labeling review UI."""
|
186
|
+
|
187
|
+
input: Union[InputCategorical, InputCategoricalList, InputText, InputTextList, InputNumeric]
|
188
|
+
"""
|
189
|
+
Input type specification that defines how stakeholders will provide their assessment
|
190
|
+
(e.g., dropdown, text box, numeric input)
|
191
|
+
"""
|
192
|
+
instruction: Optional[str] = None
|
193
|
+
"""Optional detailed instructions shown to stakeholders for guidance."""
|
194
|
+
|
195
|
+
enable_comment: bool = False
|
196
|
+
"""Whether to enable additional comment functionality for reviewers."""
|
197
|
+
|
198
|
+
@classmethod
|
199
|
+
def _from_databricks_label_schema(cls, schema: "_LabelSchema") -> "LabelSchema":
|
200
|
+
"""Convert from the internal Databricks label schema type."""
|
201
|
+
|
202
|
+
return cls(
|
203
|
+
name=schema.name,
|
204
|
+
type=schema.type,
|
205
|
+
title=schema.title,
|
206
|
+
input=schema.input._from_databricks_input(),
|
207
|
+
instruction=schema.instruction,
|
208
|
+
enable_comment=schema.enable_comment,
|
209
|
+
)
|
@@ -0,0 +1,159 @@
|
|
1
|
+
"""
|
2
|
+
Databricks Agent Labeling Python SDK. For more details see Databricks Agent Evaluation:
|
3
|
+
<https://docs.databricks.com/en/generative-ai/agent-evaluation/index.html>
|
4
|
+
|
5
|
+
The API docs can be found here:
|
6
|
+
<https://api-docs.databricks.com/python/databricks-agents/latest/databricks_agent_eval.html#review-app>
|
7
|
+
"""
|
8
|
+
|
9
|
+
from typing import Any, Optional
|
10
|
+
|
11
|
+
from mlflow.genai.labeling.labeling import Agent, LabelingSession, ReviewApp
|
12
|
+
|
13
|
+
_ERROR_MSG = (
|
14
|
+
"The `databricks-agents` package is required to use `mlflow.genai.labeling`. "
|
15
|
+
"Please install it with `pip install databricks-agents`."
|
16
|
+
)
|
17
|
+
|
18
|
+
|
19
|
+
def get_review_app(experiment_id: Optional[str] = None) -> "ReviewApp":
|
20
|
+
"""Gets or creates (if it doesn't exist) the review app for the given experiment ID.
|
21
|
+
|
22
|
+
.. note::
|
23
|
+
This functionality is only available in Databricks. Please run
|
24
|
+
`pip install mlflow[databricks]` to use it.
|
25
|
+
|
26
|
+
Args:
|
27
|
+
experiment_id: Optional. The experiment ID for which to get the review app. If not provided,
|
28
|
+
the experiment ID is inferred from the current active environment.
|
29
|
+
|
30
|
+
Returns:
|
31
|
+
ReviewApp: The review app.
|
32
|
+
"""
|
33
|
+
try:
|
34
|
+
from databricks.agents.review_app import get_review_app as _get_review_app
|
35
|
+
except ImportError:
|
36
|
+
raise ImportError(_ERROR_MSG) from None
|
37
|
+
|
38
|
+
return ReviewApp(_get_review_app(experiment_id))
|
39
|
+
|
40
|
+
|
41
|
+
def create_labeling_session(
|
42
|
+
name: str,
|
43
|
+
*,
|
44
|
+
assigned_users: Optional[list[str]] = None,
|
45
|
+
agent: Optional[str] = None,
|
46
|
+
label_schemas: Optional[list[str]] = None,
|
47
|
+
enable_multi_turn_chat: bool = False,
|
48
|
+
custom_inputs: Optional[dict[str, Any]] = None,
|
49
|
+
) -> LabelingSession:
|
50
|
+
"""Create a new labeling session in the review app.
|
51
|
+
|
52
|
+
.. note::
|
53
|
+
This functionality is only available in Databricks. Please run
|
54
|
+
`pip install mlflow[databricks]` to use it.
|
55
|
+
|
56
|
+
Args:
|
57
|
+
name: The name of the labeling session.
|
58
|
+
assigned_users: The users that will be assigned to label items in the session.
|
59
|
+
agent: The agent to be used to generate responses for the items in the session.
|
60
|
+
label_schemas: The label schemas to be used in the session.
|
61
|
+
enable_multi_turn_chat: Whether to enable multi-turn chat labeling for the session.
|
62
|
+
custom_inputs: Optional. Custom inputs to be used in the session.
|
63
|
+
|
64
|
+
Returns:
|
65
|
+
LabelingSession: The created labeling session.
|
66
|
+
"""
|
67
|
+
try:
|
68
|
+
from databricks.agents.review_app import get_review_app as _get_review_app
|
69
|
+
except ImportError:
|
70
|
+
raise ImportError(_ERROR_MSG) from None
|
71
|
+
|
72
|
+
return LabelingSession(
|
73
|
+
_get_review_app().create_labeling_session(
|
74
|
+
name=name,
|
75
|
+
assigned_users=assigned_users or [],
|
76
|
+
agent=agent,
|
77
|
+
label_schemas=label_schemas or [],
|
78
|
+
enable_multi_turn_chat=enable_multi_turn_chat,
|
79
|
+
custom_inputs=custom_inputs,
|
80
|
+
)
|
81
|
+
)
|
82
|
+
|
83
|
+
|
84
|
+
def get_labeling_sessions() -> list[LabelingSession]:
|
85
|
+
"""Get all labeling sessions from the review app.
|
86
|
+
|
87
|
+
.. note::
|
88
|
+
This functionality is only available in Databricks. Please run
|
89
|
+
`pip install mlflow[databricks]` to use it.
|
90
|
+
|
91
|
+
Returns:
|
92
|
+
list[LabelingSession]: The list of labeling sessions.
|
93
|
+
"""
|
94
|
+
try:
|
95
|
+
from databricks.agents.review_app import get_review_app as _get_review_app
|
96
|
+
except ImportError:
|
97
|
+
raise ImportError(_ERROR_MSG) from None
|
98
|
+
|
99
|
+
return [LabelingSession(session) for session in _get_review_app().get_labeling_sessions()]
|
100
|
+
|
101
|
+
|
102
|
+
def get_labeling_session(run_id: str) -> LabelingSession:
|
103
|
+
"""Get a labeling session from the review app.
|
104
|
+
|
105
|
+
.. note::
|
106
|
+
This functionality is only available in Databricks. Please run
|
107
|
+
`pip install mlflow[databricks]` to use it.
|
108
|
+
|
109
|
+
Args:
|
110
|
+
run_id: The mlflow run ID of the labeling session to get.
|
111
|
+
|
112
|
+
Returns:
|
113
|
+
LabelingSession: The labeling session.
|
114
|
+
"""
|
115
|
+
labeling_sessions = get_labeling_sessions()
|
116
|
+
labeling_session = next(
|
117
|
+
(
|
118
|
+
labeling_session
|
119
|
+
for labeling_session in labeling_sessions
|
120
|
+
if labeling_session.mlflow_run_id == run_id
|
121
|
+
),
|
122
|
+
None,
|
123
|
+
)
|
124
|
+
if labeling_session is None:
|
125
|
+
raise ValueError(f"Labeling session with run_id `{run_id}` not found")
|
126
|
+
return LabelingSession(labeling_session)
|
127
|
+
|
128
|
+
|
129
|
+
def delete_labeling_session(labeling_session: LabelingSession) -> "ReviewApp":
|
130
|
+
"""Delete a labeling session from the review app.
|
131
|
+
|
132
|
+
.. note::
|
133
|
+
This functionality is only available in Databricks. Please run
|
134
|
+
`pip install mlflow[databricks]` to use it.
|
135
|
+
|
136
|
+
Args:
|
137
|
+
labeling_session: The labeling session to delete.
|
138
|
+
|
139
|
+
Returns:
|
140
|
+
ReviewApp: The review app.
|
141
|
+
"""
|
142
|
+
try:
|
143
|
+
from databricks.agents.review_app import get_review_app as _get_review_app
|
144
|
+
except ImportError:
|
145
|
+
raise ImportError(_ERROR_MSG) from None
|
146
|
+
|
147
|
+
return ReviewApp(_get_review_app().delete_labeling_session(labeling_session._session))
|
148
|
+
|
149
|
+
|
150
|
+
__all__ = [
|
151
|
+
"Agent",
|
152
|
+
"LabelingSession",
|
153
|
+
"ReviewApp",
|
154
|
+
"get_review_app",
|
155
|
+
"create_labeling_session",
|
156
|
+
"get_labeling_sessions",
|
157
|
+
"get_labeling_session",
|
158
|
+
"delete_labeling_session",
|
159
|
+
]
|