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,495 @@
|
|
1
|
+
"""
|
2
|
+
The ``mlflow.promptflow`` module provides an API for logging and loading Promptflow models.
|
3
|
+
This module exports Promptflow models with the following flavors:
|
4
|
+
|
5
|
+
Promptflow (native) format
|
6
|
+
This is the main flavor that can be accessed with Promptflow APIs.
|
7
|
+
:py:mod:`mlflow.pyfunc`
|
8
|
+
Produced for use by generic pyfunc-based deployment tools and batch inference.
|
9
|
+
|
10
|
+
.. _Promptflow:
|
11
|
+
https://microsoft.github.io/promptflow
|
12
|
+
"""
|
13
|
+
|
14
|
+
import logging
|
15
|
+
import os
|
16
|
+
import shutil
|
17
|
+
from pathlib import Path
|
18
|
+
from typing import Any, Optional, Union
|
19
|
+
|
20
|
+
import pandas as pd
|
21
|
+
import yaml
|
22
|
+
|
23
|
+
import mlflow
|
24
|
+
from mlflow import pyfunc
|
25
|
+
from mlflow.entities.model_registry.prompt import Prompt
|
26
|
+
from mlflow.models import Model, ModelSignature
|
27
|
+
from mlflow.models.model import MLMODEL_FILE_NAME
|
28
|
+
from mlflow.models.signature import _infer_signature_from_input_example
|
29
|
+
from mlflow.models.utils import ModelInputExample, _save_example
|
30
|
+
from mlflow.tracking._model_registry import DEFAULT_AWAIT_MAX_SLEEP_SECONDS
|
31
|
+
from mlflow.tracking.artifact_utils import _download_artifact_from_uri
|
32
|
+
from mlflow.utils.docstring_utils import LOG_MODEL_PARAM_DOCS, format_docstring
|
33
|
+
from mlflow.utils.environment import (
|
34
|
+
_CONDA_ENV_FILE_NAME,
|
35
|
+
_CONSTRAINTS_FILE_NAME,
|
36
|
+
_PYTHON_ENV_FILE_NAME,
|
37
|
+
_REQUIREMENTS_FILE_NAME,
|
38
|
+
_mlflow_conda_env,
|
39
|
+
_process_conda_env,
|
40
|
+
_process_pip_requirements,
|
41
|
+
_PythonEnv,
|
42
|
+
_validate_env_arguments,
|
43
|
+
)
|
44
|
+
from mlflow.utils.file_utils import write_to
|
45
|
+
from mlflow.utils.model_utils import (
|
46
|
+
_validate_and_copy_code_paths,
|
47
|
+
_validate_and_prepare_target_save_path,
|
48
|
+
)
|
49
|
+
from mlflow.utils.requirements_utils import _get_pinned_requirement
|
50
|
+
|
51
|
+
_logger = logging.getLogger(__name__)
|
52
|
+
|
53
|
+
FLAVOR_NAME = "promptflow"
|
54
|
+
|
55
|
+
_MODEL_FLOW_DIRECTORY = "flow"
|
56
|
+
_FLOW_ENV_REQUIREMENTS = "python_requirements_txt"
|
57
|
+
_UNSUPPORTED_MODEL_ERROR_MESSAGE = (
|
58
|
+
"MLflow promptflow flavor only supports instance defined with 'flow.dag.yaml' file "
|
59
|
+
"and loaded by ~promptflow.load_flow(), found {instance_type}."
|
60
|
+
)
|
61
|
+
_INVALID_PREDICT_INPUT_ERROR_MESSAGE = (
|
62
|
+
"Input must be a pandas DataFrame with only 1 row "
|
63
|
+
"or a dictionary contains flow inputs key-value pairs."
|
64
|
+
)
|
65
|
+
_CONNECTION_PROVIDER_CONFIG_KEY = "connection_provider"
|
66
|
+
_CONNECTION_OVERRIDES_CONFIG_KEY = "connection_overrides"
|
67
|
+
|
68
|
+
|
69
|
+
def get_default_pip_requirements():
|
70
|
+
"""
|
71
|
+
Returns:
|
72
|
+
A list of default pip requirements for MLflow Models produced by this flavor.
|
73
|
+
Calls to :func:`save_model()` and :func:`log_model()` produce a pip environment
|
74
|
+
that, at a minimum, contains these requirements.
|
75
|
+
"""
|
76
|
+
tools_package = None
|
77
|
+
try:
|
78
|
+
# Note: If user don't use built-in tool in their flow,
|
79
|
+
# then promptflow-tools is not a mandatory dependency.
|
80
|
+
tools_package = _get_pinned_requirement("promptflow-tools")
|
81
|
+
except ImportError: # pylint: disable=broad-except
|
82
|
+
pass
|
83
|
+
requirements = [tools_package] if tools_package else []
|
84
|
+
return requirements + [_get_pinned_requirement("promptflow")]
|
85
|
+
|
86
|
+
|
87
|
+
def get_default_conda_env():
|
88
|
+
"""
|
89
|
+
Returns:
|
90
|
+
The default Conda environment for MLflow Models produced by calls to
|
91
|
+
:func:`save_model()` and :func:`log_model()`.
|
92
|
+
"""
|
93
|
+
return _mlflow_conda_env(additional_pip_deps=get_default_pip_requirements())
|
94
|
+
|
95
|
+
|
96
|
+
@format_docstring(LOG_MODEL_PARAM_DOCS.format(package_name=FLAVOR_NAME))
|
97
|
+
def log_model(
|
98
|
+
model,
|
99
|
+
artifact_path: Optional[str] = None,
|
100
|
+
conda_env=None,
|
101
|
+
code_paths=None,
|
102
|
+
registered_model_name=None,
|
103
|
+
signature=None,
|
104
|
+
input_example=None,
|
105
|
+
await_registration_for=DEFAULT_AWAIT_MAX_SLEEP_SECONDS,
|
106
|
+
pip_requirements=None,
|
107
|
+
extra_pip_requirements=None,
|
108
|
+
metadata=None,
|
109
|
+
model_config: Optional[dict[str, Any]] = None,
|
110
|
+
prompts: Optional[list[Union[str, Prompt]]] = None,
|
111
|
+
name: Optional[str] = None,
|
112
|
+
params: Optional[dict[str, Any]] = None,
|
113
|
+
tags: Optional[dict[str, Any]] = None,
|
114
|
+
model_type: Optional[str] = None,
|
115
|
+
step: int = 0,
|
116
|
+
model_id: Optional[str] = None,
|
117
|
+
):
|
118
|
+
"""
|
119
|
+
Log a Promptflow model as an MLflow artifact for the current run.
|
120
|
+
|
121
|
+
Args:
|
122
|
+
model: A promptflow model loaded by `promptflow.load_flow()`.
|
123
|
+
artifact_path: Deprecated. Use `name` instead.
|
124
|
+
conda_env: {{ conda_env }}
|
125
|
+
code_paths: {{ code_paths }}
|
126
|
+
registered_model_name: If given, create a model version under
|
127
|
+
``registered_model_name``, also creating a registered model if one
|
128
|
+
with the given name does not exist.
|
129
|
+
signature: {{ signature }}
|
130
|
+
input_example: {{ input_example }}
|
131
|
+
await_registration_for: Number of seconds to wait for the model version to finish
|
132
|
+
being created and is in ``READY`` status. By default, the function
|
133
|
+
waits for five minutes. Specify 0 or None to skip waiting.
|
134
|
+
pip_requirements: {{ pip_requirements }}
|
135
|
+
extra_pip_requirements: {{ extra_pip_requirements }}
|
136
|
+
metadata: {{ metadata }}
|
137
|
+
model_config: A dict of valid overrides that can be applied to a flow instance
|
138
|
+
during inference. These arguments are used exclusively for the case of loading
|
139
|
+
the model as a ``pyfunc`` Model.
|
140
|
+
These values are not applied to a returned flow from a call to
|
141
|
+
``mlflow.promptflow.load_model()``.
|
142
|
+
To override configs for a loaded flow with promptflow flavor,
|
143
|
+
please update the ``pf_model.context`` directly.
|
144
|
+
|
145
|
+
Configs that can be overridden includes:
|
146
|
+
|
147
|
+
``connection_provider`` - The connection provider to use for the flow. Reach
|
148
|
+
https://microsoft.github.io/promptflow/how-to-guides/set-global-configs.html#connection-provider
|
149
|
+
for more details on how to set connection provider.
|
150
|
+
|
151
|
+
``connection_overrides`` - The connection name overrides to use for the flow.
|
152
|
+
Example: ``{"aoai_connection": "azure_open_ai_connection"}``.
|
153
|
+
The node with reference to connection 'aoai_connection' will be resolved to
|
154
|
+
the actual connection 'azure_open_ai_connection'.
|
155
|
+
|
156
|
+
|
157
|
+
An example of providing overrides for a model to use azure machine
|
158
|
+
learning workspace connection:
|
159
|
+
|
160
|
+
.. code-block:: python
|
161
|
+
|
162
|
+
flow_folder = Path(__file__).parent / "basic"
|
163
|
+
flow = load_flow(flow_folder)
|
164
|
+
|
165
|
+
workspace_resource_id = (
|
166
|
+
"azureml://subscriptions/{your-subscription}/resourceGroups/{your-resourcegroup}"
|
167
|
+
"/providers/Microsoft.MachineLearningServices/workspaces/{your-workspace}"
|
168
|
+
)
|
169
|
+
model_config = {
|
170
|
+
"connection_provider": workspace_resource_id,
|
171
|
+
"connection_overrides": {"local_conn_name": "remote_conn_name"},
|
172
|
+
}
|
173
|
+
|
174
|
+
with mlflow.start_run():
|
175
|
+
logged_model = mlflow.promptflow.log_model(
|
176
|
+
flow, name="promptflow_model", model_config=model_config
|
177
|
+
)
|
178
|
+
prompts: {{ prompts }}
|
179
|
+
name: {{ name }}
|
180
|
+
params: {{ params }}
|
181
|
+
tags: {{ tags }}
|
182
|
+
model_type: {{ model_type }}
|
183
|
+
step: {{ step }}
|
184
|
+
model_id: {{ model_id }}
|
185
|
+
|
186
|
+
Returns
|
187
|
+
A :py:class:`ModelInfo <mlflow.models.model.ModelInfo>` instance that contains the
|
188
|
+
metadata of the logged model.
|
189
|
+
"""
|
190
|
+
return Model.log(
|
191
|
+
artifact_path=artifact_path,
|
192
|
+
name=name,
|
193
|
+
flavor=mlflow.promptflow,
|
194
|
+
registered_model_name=registered_model_name,
|
195
|
+
model=model,
|
196
|
+
conda_env=conda_env,
|
197
|
+
code_paths=code_paths,
|
198
|
+
signature=signature,
|
199
|
+
input_example=input_example,
|
200
|
+
await_registration_for=await_registration_for,
|
201
|
+
pip_requirements=pip_requirements,
|
202
|
+
extra_pip_requirements=extra_pip_requirements,
|
203
|
+
metadata=metadata,
|
204
|
+
model_config=model_config,
|
205
|
+
prompts=prompts,
|
206
|
+
params=params,
|
207
|
+
tags=tags,
|
208
|
+
model_type=model_type,
|
209
|
+
step=step,
|
210
|
+
model_id=model_id,
|
211
|
+
)
|
212
|
+
|
213
|
+
|
214
|
+
@format_docstring(LOG_MODEL_PARAM_DOCS.format(package_name=FLAVOR_NAME))
|
215
|
+
def save_model(
|
216
|
+
model,
|
217
|
+
path,
|
218
|
+
conda_env=None,
|
219
|
+
code_paths=None,
|
220
|
+
mlflow_model=None,
|
221
|
+
signature: ModelSignature = None,
|
222
|
+
input_example: ModelInputExample = None,
|
223
|
+
pip_requirements=None,
|
224
|
+
extra_pip_requirements=None,
|
225
|
+
metadata=None,
|
226
|
+
model_config: Optional[dict[str, Any]] = None,
|
227
|
+
):
|
228
|
+
"""
|
229
|
+
Save a Promptflow model to a path on the local file system.
|
230
|
+
|
231
|
+
Args:
|
232
|
+
model: A promptflow model loaded by `promptflow.load_flow()`.
|
233
|
+
path: Local path where the serialized model (as YAML) is to be saved.
|
234
|
+
conda_env: {{ conda_env }}
|
235
|
+
code_paths: {{ code_paths }}
|
236
|
+
mlflow_model: :py:mod:`mlflow.models.Model` this flavor is being added to.
|
237
|
+
signature: {{ signature }}
|
238
|
+
input_example: {{ input_example }}
|
239
|
+
pip_requirements: {{ pip_requirements }}
|
240
|
+
extra_pip_requirements: {{ extra_pip_requirements }}
|
241
|
+
metadata: {{ metadata }}
|
242
|
+
model_config: A dict of valid overrides that can be applied to a flow instance
|
243
|
+
during inference. These arguments are used exclusively for the case of loading
|
244
|
+
the model as a ``pyfunc`` Model.
|
245
|
+
These values are not applied to a returned flow from a call to
|
246
|
+
``mlflow.promptflow.load_model()``.
|
247
|
+
To override configs for a loaded flow with promptflow flavor,
|
248
|
+
please update the ``pf_model.context`` directly.
|
249
|
+
|
250
|
+
Configs that can be overridden includes:
|
251
|
+
|
252
|
+
``connection_provider`` - The connection provider to use for the flow. Reach
|
253
|
+
https://microsoft.github.io/promptflow/how-to-guides/set-global-configs.html#connection-provider
|
254
|
+
for more details on how to set connection provider.
|
255
|
+
|
256
|
+
``connection_overrides`` - The connection name overrides to use for the flow.
|
257
|
+
Example: ``{"aoai_connection": "azure_open_ai_connection"}``.
|
258
|
+
The node with reference to connection 'aoai_connection' will be resolved to
|
259
|
+
the actual connection 'azure_open_ai_connection'.
|
260
|
+
|
261
|
+
|
262
|
+
An example of providing overrides for a model to use azure machine
|
263
|
+
learning workspace connection:
|
264
|
+
|
265
|
+
.. code-block:: python
|
266
|
+
|
267
|
+
flow_folder = Path(__file__).parent / "basic"
|
268
|
+
flow = load_flow(flow_folder)
|
269
|
+
|
270
|
+
workspace_resource_id = (
|
271
|
+
"azureml://subscriptions/{your-subscription}/resourceGroups/{your-resourcegroup}"
|
272
|
+
"/providers/Microsoft.MachineLearningServices/workspaces/{your-workspace}"
|
273
|
+
)
|
274
|
+
model_config = {
|
275
|
+
"connection_provider": workspace_resource_id,
|
276
|
+
"connection_overrides": {"local_conn_name": "remote_conn_name"},
|
277
|
+
}
|
278
|
+
|
279
|
+
with mlflow.start_run():
|
280
|
+
logged_model = mlflow.promptflow.log_model(
|
281
|
+
flow, name="promptflow_model", model_config=model_config
|
282
|
+
)
|
283
|
+
"""
|
284
|
+
import promptflow
|
285
|
+
from promptflow._sdk._mlflow import (
|
286
|
+
DAG_FILE_NAME,
|
287
|
+
Flow,
|
288
|
+
_merge_local_code_and_additional_includes,
|
289
|
+
remove_additional_includes,
|
290
|
+
)
|
291
|
+
|
292
|
+
_validate_env_arguments(conda_env, pip_requirements, extra_pip_requirements)
|
293
|
+
|
294
|
+
if (
|
295
|
+
not isinstance(model, Flow)
|
296
|
+
or not hasattr(model, "flow_dag_path")
|
297
|
+
or not hasattr(model, "code")
|
298
|
+
):
|
299
|
+
raise mlflow.MlflowException.invalid_parameter_value(
|
300
|
+
_UNSUPPORTED_MODEL_ERROR_MESSAGE.format(instance_type=type(model).__name__)
|
301
|
+
)
|
302
|
+
|
303
|
+
# check if path exists
|
304
|
+
path = os.path.abspath(path)
|
305
|
+
_validate_and_prepare_target_save_path(path)
|
306
|
+
|
307
|
+
# Copy to 'flow' directory to get files merged with flow files.
|
308
|
+
code_dir_subpath = _validate_and_copy_code_paths(
|
309
|
+
code_paths, path, default_subpath=_MODEL_FLOW_DIRECTORY
|
310
|
+
)
|
311
|
+
|
312
|
+
model_flow_path = os.path.join(path, _MODEL_FLOW_DIRECTORY)
|
313
|
+
|
314
|
+
# Resolve additional includes in flow
|
315
|
+
with _merge_local_code_and_additional_includes(code_path=model.code) as resolved_model_dir:
|
316
|
+
remove_additional_includes(Path(resolved_model_dir))
|
317
|
+
shutil.copytree(src=resolved_model_dir, dst=model_flow_path, dirs_exist_ok=True)
|
318
|
+
# Get flow env in flow dag
|
319
|
+
flow_env = _resolve_env_from_flow(model.flow_dag_path)
|
320
|
+
|
321
|
+
if mlflow_model is None:
|
322
|
+
mlflow_model = Model()
|
323
|
+
saved_example = _save_example(mlflow_model, input_example, path)
|
324
|
+
|
325
|
+
if signature is None and saved_example is not None:
|
326
|
+
wrapped_model = _PromptflowModelWrapper(model)
|
327
|
+
signature = _infer_signature_from_input_example(saved_example, wrapped_model)
|
328
|
+
|
329
|
+
if signature is not None:
|
330
|
+
mlflow_model.signature = signature
|
331
|
+
if metadata is not None:
|
332
|
+
mlflow_model.metadata = metadata
|
333
|
+
|
334
|
+
# update flavor info to mlflow_model
|
335
|
+
mlflow_model.add_flavor(
|
336
|
+
FLAVOR_NAME,
|
337
|
+
version=promptflow.__version__,
|
338
|
+
entry=f"{_MODEL_FLOW_DIRECTORY}/{DAG_FILE_NAME}",
|
339
|
+
**flow_env,
|
340
|
+
)
|
341
|
+
|
342
|
+
# append loader_module, data and env data to mlflow_model
|
343
|
+
pyfunc.add_to_model(
|
344
|
+
mlflow_model,
|
345
|
+
loader_module="mlflow.promptflow",
|
346
|
+
conda_env=_CONDA_ENV_FILE_NAME,
|
347
|
+
python_env=_PYTHON_ENV_FILE_NAME,
|
348
|
+
code=code_dir_subpath,
|
349
|
+
model_config=model_config,
|
350
|
+
)
|
351
|
+
|
352
|
+
# save mlflow_model to path/MLmodel
|
353
|
+
mlflow_model.save(os.path.join(path, MLMODEL_FILE_NAME))
|
354
|
+
|
355
|
+
if conda_env is None:
|
356
|
+
if pip_requirements is None:
|
357
|
+
default_reqs = get_default_pip_requirements()
|
358
|
+
inferred_reqs = mlflow.models.infer_pip_requirements(
|
359
|
+
path, FLAVOR_NAME, fallback=default_reqs
|
360
|
+
)
|
361
|
+
default_reqs = sorted(set(inferred_reqs).union(default_reqs))
|
362
|
+
else:
|
363
|
+
default_reqs = None
|
364
|
+
conda_env, pip_requirements, pip_constraints = _process_pip_requirements(
|
365
|
+
default_reqs,
|
366
|
+
pip_requirements,
|
367
|
+
extra_pip_requirements,
|
368
|
+
)
|
369
|
+
else:
|
370
|
+
conda_env, pip_requirements, pip_constraints = _process_conda_env(conda_env)
|
371
|
+
|
372
|
+
with open(os.path.join(path, _CONDA_ENV_FILE_NAME), "w") as f:
|
373
|
+
yaml.safe_dump(conda_env, stream=f, default_flow_style=False)
|
374
|
+
|
375
|
+
# Save `constraints.txt` if necessary
|
376
|
+
if pip_constraints:
|
377
|
+
write_to(os.path.join(path, _CONSTRAINTS_FILE_NAME), "\n".join(pip_constraints))
|
378
|
+
|
379
|
+
# Save `requirements.txt`
|
380
|
+
write_to(os.path.join(path, _REQUIREMENTS_FILE_NAME), "\n".join(pip_requirements))
|
381
|
+
|
382
|
+
_PythonEnv.current().to_yaml(os.path.join(path, _PYTHON_ENV_FILE_NAME))
|
383
|
+
|
384
|
+
|
385
|
+
def _resolve_env_from_flow(flow_dag_path):
|
386
|
+
with open(flow_dag_path) as f:
|
387
|
+
flow_dict = yaml.safe_load(f)
|
388
|
+
environment = flow_dict.get("environment", {})
|
389
|
+
if _FLOW_ENV_REQUIREMENTS in environment:
|
390
|
+
# Append entry path to requirements
|
391
|
+
environment[_FLOW_ENV_REQUIREMENTS] = (
|
392
|
+
f"{_MODEL_FLOW_DIRECTORY}/{environment[_FLOW_ENV_REQUIREMENTS]}"
|
393
|
+
)
|
394
|
+
return environment
|
395
|
+
|
396
|
+
|
397
|
+
class _PromptflowModelWrapper:
|
398
|
+
def __init__(self, model, model_config: Optional[dict[str, Any]] = None):
|
399
|
+
from promptflow._sdk._mlflow import FlowInvoker
|
400
|
+
|
401
|
+
self.model = model
|
402
|
+
# TODO: Improve this if we have more configs afterwards
|
403
|
+
model_config = model_config or {}
|
404
|
+
connection_provider = model_config.get(_CONNECTION_PROVIDER_CONFIG_KEY, "local")
|
405
|
+
_logger.info("Using connection provider: %s", connection_provider)
|
406
|
+
connection_overrides = model_config.get(_CONNECTION_OVERRIDES_CONFIG_KEY, None)
|
407
|
+
_logger.info("Using connection overrides: %s", connection_overrides)
|
408
|
+
self.model_invoker = FlowInvoker(
|
409
|
+
self.model,
|
410
|
+
connection_provider=connection_provider,
|
411
|
+
connections_name_overrides=connection_overrides,
|
412
|
+
)
|
413
|
+
|
414
|
+
def get_raw_model(self):
|
415
|
+
"""
|
416
|
+
Returns the underlying model.
|
417
|
+
"""
|
418
|
+
return self.model
|
419
|
+
|
420
|
+
def predict( # pylint: disable=unused-argument
|
421
|
+
self,
|
422
|
+
data: Union[pd.DataFrame, list[Union[str, dict[str, Any]]]],
|
423
|
+
params: Optional[dict[str, Any]] = None, # pylint: disable=unused-argument
|
424
|
+
) -> Union[dict[str, Any], list[Any]]:
|
425
|
+
"""
|
426
|
+
Args:
|
427
|
+
data: Model input data. Either a pandas DataFrame with only 1 row or a dictionary.
|
428
|
+
|
429
|
+
.. code-block:: python
|
430
|
+
loaded_model = mlflow.pyfunc.load_model(logged_model.model_uri)
|
431
|
+
# Predict on a flow input dictionary.
|
432
|
+
print(loaded_model.predict({"text": "Python Hello World!"}))
|
433
|
+
|
434
|
+
params: Additional parameters to pass to the model for inference.
|
435
|
+
|
436
|
+
Returns
|
437
|
+
Model predictions. Dict type, example ``{"output": "\n\nprint('Hello World!')"}``
|
438
|
+
"""
|
439
|
+
if isinstance(data, pd.DataFrame):
|
440
|
+
messages = data.to_dict(orient="records")
|
441
|
+
if len(messages) > 1:
|
442
|
+
raise mlflow.MlflowException.invalid_parameter_value(
|
443
|
+
_INVALID_PREDICT_INPUT_ERROR_MESSAGE
|
444
|
+
)
|
445
|
+
messages = messages[0]
|
446
|
+
return [self.model_invoker.invoke(messages)]
|
447
|
+
elif isinstance(data, dict):
|
448
|
+
messages = data
|
449
|
+
return self.model_invoker.invoke(messages)
|
450
|
+
raise mlflow.MlflowException.invalid_parameter_value(_INVALID_PREDICT_INPUT_ERROR_MESSAGE)
|
451
|
+
|
452
|
+
|
453
|
+
def _load_pyfunc(path, model_config: Optional[dict[str, Any]] = None): # noqa: D417
|
454
|
+
"""
|
455
|
+
Load PyFunc implementation for Promptflow. Called by ``pyfunc.load_model``.
|
456
|
+
|
457
|
+
Args
|
458
|
+
path: Local filesystem path to the MLflow Model with the ``promptflow`` flavor.
|
459
|
+
"""
|
460
|
+
from promptflow import load_flow
|
461
|
+
|
462
|
+
model_flow_path = os.path.join(path, _MODEL_FLOW_DIRECTORY)
|
463
|
+
model = load_flow(model_flow_path)
|
464
|
+
return _PromptflowModelWrapper(model=model, model_config=model_config)
|
465
|
+
|
466
|
+
|
467
|
+
def load_model(model_uri, dst_path=None):
|
468
|
+
"""
|
469
|
+
Load a Promptflow model from a local file or a run.
|
470
|
+
|
471
|
+
Args:
|
472
|
+
model_uri: The location, in URI format, of the MLflow model. For example:
|
473
|
+
|
474
|
+
- ``/Users/me/path/to/local/model``
|
475
|
+
- ``relative/path/to/local/model``
|
476
|
+
- ``s3://my_bucket/path/to/model``
|
477
|
+
- ``runs:/<mlflow_run_id>/run-relative/path/to/model``
|
478
|
+
- ``models:/<model_name>/<model_version>``
|
479
|
+
- ``models:/<model_name>/<stage>``
|
480
|
+
|
481
|
+
For more information about supported URI schemes, see
|
482
|
+
`Referencing Artifacts <https://www.mlflow.org/docs/latest/concepts.html#
|
483
|
+
artifact-locations>`_.
|
484
|
+
dst_path: The local filesystem path to which to download the model artifact.
|
485
|
+
This directory must already exist. If unspecified, a local output
|
486
|
+
path will be created.
|
487
|
+
|
488
|
+
Returns
|
489
|
+
A Promptflow model instance
|
490
|
+
"""
|
491
|
+
from promptflow import load_flow
|
492
|
+
|
493
|
+
local_model_path = _download_artifact_from_uri(artifact_uri=model_uri, output_path=dst_path)
|
494
|
+
model_data_path = os.path.join(local_model_path, _MODEL_FLOW_DIRECTORY)
|
495
|
+
return load_flow(model_data_path)
|
File without changes
|
@@ -0,0 +1,174 @@
|
|
1
|
+
|
2
|
+
import google.protobuf
|
3
|
+
from packaging.version import Version
|
4
|
+
if Version(google.protobuf.__version__).major >= 5:
|
5
|
+
# -*- coding: utf-8 -*-
|
6
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
7
|
+
# source: assessments.proto
|
8
|
+
# Protobuf Python Version: 5.26.0
|
9
|
+
"""Generated protocol buffer code."""
|
10
|
+
from google.protobuf import descriptor as _descriptor
|
11
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
12
|
+
from google.protobuf import symbol_database as _symbol_database
|
13
|
+
from google.protobuf.internal import builder as _builder
|
14
|
+
# @@protoc_insertion_point(imports)
|
15
|
+
|
16
|
+
_sym_db = _symbol_database.Default()
|
17
|
+
|
18
|
+
|
19
|
+
from . import databricks_pb2 as databricks__pb2
|
20
|
+
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
21
|
+
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
22
|
+
|
23
|
+
|
24
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11\x61ssessments.proto\x12\x12mlflow.assessments\x1a\x10\x64\x61tabricks.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc6\x01\n\x10\x41ssessmentSource\x12J\n\x0bsource_type\x18\x01 \x01(\x0e\x32/.mlflow.assessments.AssessmentSource.SourceTypeB\x04\xf8\x86\x19\x01\x12\x17\n\tsource_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\"M\n\nSourceType\x12\x1b\n\x17SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05HUMAN\x10\x01\x12\r\n\tLLM_JUDGE\x10\x02\x12\x08\n\x04\x43ODE\x10\x03\"Q\n\x0f\x41ssessmentError\x12\x12\n\nerror_code\x18\x01 \x01(\t\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x13\n\x0bstack_trace\x18\x03 \x01(\t\"\xbf\x01\n\x0b\x45xpectation\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value\x12I\n\x10serialized_value\x18\x03 \x01(\x0b\x32/.mlflow.assessments.Expectation.SerializedValue\x1a>\n\x0fSerializedValue\x12\x1c\n\x14serialization_format\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"e\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value\x12\x32\n\x05\x65rror\x18\x03 \x01(\x0b\x32#.mlflow.assessments.AssessmentError\"\xd9\x04\n\nAssessment\x12\x15\n\rassessment_id\x18\x01 \x01(\t\x12\x1d\n\x0f\x61ssessment_name\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x10\n\x08trace_id\x18\x03 \x01(\t\x12\x0f\n\x07span_id\x18\x04 \x01(\t\x12\x34\n\x06source\x18\x05 \x01(\x0b\x32$.mlflow.assessments.AssessmentSource\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x10last_update_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x08\x66\x65\x65\x64\x62\x61\x63k\x18\t \x01(\x0b\x32\x1c.mlflow.assessments.FeedbackH\x00\x12\x36\n\x0b\x65xpectation\x18\n \x01(\x0b\x32\x1f.mlflow.assessments.ExpectationH\x00\x12\x11\n\trationale\x18\x0b \x01(\t\x12\x36\n\x05\x65rror\x18\x0c \x01(\x0b\x32#.mlflow.assessments.AssessmentErrorB\x02\x18\x01\x12>\n\x08metadata\x18\r \x03(\x0b\x32,.mlflow.assessments.Assessment.MetadataEntry\x12\x11\n\toverrides\x18\x0e \x01(\t\x12\x13\n\x05valid\x18\x0f \x01(\x08:\x04true\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x07\n\x05valueB\x19\n\x14org.mlflow.api.proto\x90\x01\x01')
|
25
|
+
|
26
|
+
_globals = globals()
|
27
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
28
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'assessments_pb2', _globals)
|
29
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
30
|
+
_globals['DESCRIPTOR']._loaded_options = None
|
31
|
+
_globals['DESCRIPTOR']._serialized_options = b'\n\024org.mlflow.api.proto\220\001\001'
|
32
|
+
_globals['_ASSESSMENTSOURCE'].fields_by_name['source_type']._loaded_options = None
|
33
|
+
_globals['_ASSESSMENTSOURCE'].fields_by_name['source_type']._serialized_options = b'\370\206\031\001'
|
34
|
+
_globals['_ASSESSMENTSOURCE'].fields_by_name['source_id']._loaded_options = None
|
35
|
+
_globals['_ASSESSMENTSOURCE'].fields_by_name['source_id']._serialized_options = b'\370\206\031\001'
|
36
|
+
_globals['_ASSESSMENT_METADATAENTRY']._loaded_options = None
|
37
|
+
_globals['_ASSESSMENT_METADATAENTRY']._serialized_options = b'8\001'
|
38
|
+
_globals['_ASSESSMENT'].fields_by_name['assessment_name']._loaded_options = None
|
39
|
+
_globals['_ASSESSMENT'].fields_by_name['assessment_name']._serialized_options = b'\370\206\031\001'
|
40
|
+
_globals['_ASSESSMENT'].fields_by_name['error']._loaded_options = None
|
41
|
+
_globals['_ASSESSMENT'].fields_by_name['error']._serialized_options = b'\030\001'
|
42
|
+
_globals['_ASSESSMENTSOURCE']._serialized_start=123
|
43
|
+
_globals['_ASSESSMENTSOURCE']._serialized_end=321
|
44
|
+
_globals['_ASSESSMENTSOURCE_SOURCETYPE']._serialized_start=244
|
45
|
+
_globals['_ASSESSMENTSOURCE_SOURCETYPE']._serialized_end=321
|
46
|
+
_globals['_ASSESSMENTERROR']._serialized_start=323
|
47
|
+
_globals['_ASSESSMENTERROR']._serialized_end=404
|
48
|
+
_globals['_EXPECTATION']._serialized_start=407
|
49
|
+
_globals['_EXPECTATION']._serialized_end=598
|
50
|
+
_globals['_EXPECTATION_SERIALIZEDVALUE']._serialized_start=536
|
51
|
+
_globals['_EXPECTATION_SERIALIZEDVALUE']._serialized_end=598
|
52
|
+
_globals['_FEEDBACK']._serialized_start=600
|
53
|
+
_globals['_FEEDBACK']._serialized_end=701
|
54
|
+
_globals['_ASSESSMENT']._serialized_start=704
|
55
|
+
_globals['_ASSESSMENT']._serialized_end=1305
|
56
|
+
_globals['_ASSESSMENT_METADATAENTRY']._serialized_start=1249
|
57
|
+
_globals['_ASSESSMENT_METADATAENTRY']._serialized_end=1296
|
58
|
+
# @@protoc_insertion_point(module_scope)
|
59
|
+
|
60
|
+
else:
|
61
|
+
# -*- coding: utf-8 -*-
|
62
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
63
|
+
# source: assessments.proto
|
64
|
+
"""Generated protocol buffer code."""
|
65
|
+
from google.protobuf import descriptor as _descriptor
|
66
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
67
|
+
from google.protobuf import message as _message
|
68
|
+
from google.protobuf import reflection as _reflection
|
69
|
+
from google.protobuf import symbol_database as _symbol_database
|
70
|
+
# @@protoc_insertion_point(imports)
|
71
|
+
|
72
|
+
_sym_db = _symbol_database.Default()
|
73
|
+
|
74
|
+
|
75
|
+
from . import databricks_pb2 as databricks__pb2
|
76
|
+
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
77
|
+
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
78
|
+
|
79
|
+
|
80
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11\x61ssessments.proto\x12\x12mlflow.assessments\x1a\x10\x64\x61tabricks.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc6\x01\n\x10\x41ssessmentSource\x12J\n\x0bsource_type\x18\x01 \x01(\x0e\x32/.mlflow.assessments.AssessmentSource.SourceTypeB\x04\xf8\x86\x19\x01\x12\x17\n\tsource_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\"M\n\nSourceType\x12\x1b\n\x17SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05HUMAN\x10\x01\x12\r\n\tLLM_JUDGE\x10\x02\x12\x08\n\x04\x43ODE\x10\x03\"Q\n\x0f\x41ssessmentError\x12\x12\n\nerror_code\x18\x01 \x01(\t\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x13\n\x0bstack_trace\x18\x03 \x01(\t\"\xbf\x01\n\x0b\x45xpectation\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value\x12I\n\x10serialized_value\x18\x03 \x01(\x0b\x32/.mlflow.assessments.Expectation.SerializedValue\x1a>\n\x0fSerializedValue\x12\x1c\n\x14serialization_format\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"e\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value\x12\x32\n\x05\x65rror\x18\x03 \x01(\x0b\x32#.mlflow.assessments.AssessmentError\"\xd9\x04\n\nAssessment\x12\x15\n\rassessment_id\x18\x01 \x01(\t\x12\x1d\n\x0f\x61ssessment_name\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x10\n\x08trace_id\x18\x03 \x01(\t\x12\x0f\n\x07span_id\x18\x04 \x01(\t\x12\x34\n\x06source\x18\x05 \x01(\x0b\x32$.mlflow.assessments.AssessmentSource\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x10last_update_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x08\x66\x65\x65\x64\x62\x61\x63k\x18\t \x01(\x0b\x32\x1c.mlflow.assessments.FeedbackH\x00\x12\x36\n\x0b\x65xpectation\x18\n \x01(\x0b\x32\x1f.mlflow.assessments.ExpectationH\x00\x12\x11\n\trationale\x18\x0b \x01(\t\x12\x36\n\x05\x65rror\x18\x0c \x01(\x0b\x32#.mlflow.assessments.AssessmentErrorB\x02\x18\x01\x12>\n\x08metadata\x18\r \x03(\x0b\x32,.mlflow.assessments.Assessment.MetadataEntry\x12\x11\n\toverrides\x18\x0e \x01(\t\x12\x13\n\x05valid\x18\x0f \x01(\x08:\x04true\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x07\n\x05valueB\x19\n\x14org.mlflow.api.proto\x90\x01\x01')
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
_ASSESSMENTSOURCE = DESCRIPTOR.message_types_by_name['AssessmentSource']
|
85
|
+
_ASSESSMENTERROR = DESCRIPTOR.message_types_by_name['AssessmentError']
|
86
|
+
_EXPECTATION = DESCRIPTOR.message_types_by_name['Expectation']
|
87
|
+
_EXPECTATION_SERIALIZEDVALUE = _EXPECTATION.nested_types_by_name['SerializedValue']
|
88
|
+
_FEEDBACK = DESCRIPTOR.message_types_by_name['Feedback']
|
89
|
+
_ASSESSMENT = DESCRIPTOR.message_types_by_name['Assessment']
|
90
|
+
_ASSESSMENT_METADATAENTRY = _ASSESSMENT.nested_types_by_name['MetadataEntry']
|
91
|
+
_ASSESSMENTSOURCE_SOURCETYPE = _ASSESSMENTSOURCE.enum_types_by_name['SourceType']
|
92
|
+
AssessmentSource = _reflection.GeneratedProtocolMessageType('AssessmentSource', (_message.Message,), {
|
93
|
+
'DESCRIPTOR' : _ASSESSMENTSOURCE,
|
94
|
+
'__module__' : 'assessments_pb2'
|
95
|
+
# @@protoc_insertion_point(class_scope:mlflow.assessments.AssessmentSource)
|
96
|
+
})
|
97
|
+
_sym_db.RegisterMessage(AssessmentSource)
|
98
|
+
|
99
|
+
AssessmentError = _reflection.GeneratedProtocolMessageType('AssessmentError', (_message.Message,), {
|
100
|
+
'DESCRIPTOR' : _ASSESSMENTERROR,
|
101
|
+
'__module__' : 'assessments_pb2'
|
102
|
+
# @@protoc_insertion_point(class_scope:mlflow.assessments.AssessmentError)
|
103
|
+
})
|
104
|
+
_sym_db.RegisterMessage(AssessmentError)
|
105
|
+
|
106
|
+
Expectation = _reflection.GeneratedProtocolMessageType('Expectation', (_message.Message,), {
|
107
|
+
|
108
|
+
'SerializedValue' : _reflection.GeneratedProtocolMessageType('SerializedValue', (_message.Message,), {
|
109
|
+
'DESCRIPTOR' : _EXPECTATION_SERIALIZEDVALUE,
|
110
|
+
'__module__' : 'assessments_pb2'
|
111
|
+
# @@protoc_insertion_point(class_scope:mlflow.assessments.Expectation.SerializedValue)
|
112
|
+
})
|
113
|
+
,
|
114
|
+
'DESCRIPTOR' : _EXPECTATION,
|
115
|
+
'__module__' : 'assessments_pb2'
|
116
|
+
# @@protoc_insertion_point(class_scope:mlflow.assessments.Expectation)
|
117
|
+
})
|
118
|
+
_sym_db.RegisterMessage(Expectation)
|
119
|
+
_sym_db.RegisterMessage(Expectation.SerializedValue)
|
120
|
+
|
121
|
+
Feedback = _reflection.GeneratedProtocolMessageType('Feedback', (_message.Message,), {
|
122
|
+
'DESCRIPTOR' : _FEEDBACK,
|
123
|
+
'__module__' : 'assessments_pb2'
|
124
|
+
# @@protoc_insertion_point(class_scope:mlflow.assessments.Feedback)
|
125
|
+
})
|
126
|
+
_sym_db.RegisterMessage(Feedback)
|
127
|
+
|
128
|
+
Assessment = _reflection.GeneratedProtocolMessageType('Assessment', (_message.Message,), {
|
129
|
+
|
130
|
+
'MetadataEntry' : _reflection.GeneratedProtocolMessageType('MetadataEntry', (_message.Message,), {
|
131
|
+
'DESCRIPTOR' : _ASSESSMENT_METADATAENTRY,
|
132
|
+
'__module__' : 'assessments_pb2'
|
133
|
+
# @@protoc_insertion_point(class_scope:mlflow.assessments.Assessment.MetadataEntry)
|
134
|
+
})
|
135
|
+
,
|
136
|
+
'DESCRIPTOR' : _ASSESSMENT,
|
137
|
+
'__module__' : 'assessments_pb2'
|
138
|
+
# @@protoc_insertion_point(class_scope:mlflow.assessments.Assessment)
|
139
|
+
})
|
140
|
+
_sym_db.RegisterMessage(Assessment)
|
141
|
+
_sym_db.RegisterMessage(Assessment.MetadataEntry)
|
142
|
+
|
143
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
144
|
+
|
145
|
+
DESCRIPTOR._options = None
|
146
|
+
DESCRIPTOR._serialized_options = b'\n\024org.mlflow.api.proto\220\001\001'
|
147
|
+
_ASSESSMENTSOURCE.fields_by_name['source_type']._options = None
|
148
|
+
_ASSESSMENTSOURCE.fields_by_name['source_type']._serialized_options = b'\370\206\031\001'
|
149
|
+
_ASSESSMENTSOURCE.fields_by_name['source_id']._options = None
|
150
|
+
_ASSESSMENTSOURCE.fields_by_name['source_id']._serialized_options = b'\370\206\031\001'
|
151
|
+
_ASSESSMENT_METADATAENTRY._options = None
|
152
|
+
_ASSESSMENT_METADATAENTRY._serialized_options = b'8\001'
|
153
|
+
_ASSESSMENT.fields_by_name['assessment_name']._options = None
|
154
|
+
_ASSESSMENT.fields_by_name['assessment_name']._serialized_options = b'\370\206\031\001'
|
155
|
+
_ASSESSMENT.fields_by_name['error']._options = None
|
156
|
+
_ASSESSMENT.fields_by_name['error']._serialized_options = b'\030\001'
|
157
|
+
_ASSESSMENTSOURCE._serialized_start=123
|
158
|
+
_ASSESSMENTSOURCE._serialized_end=321
|
159
|
+
_ASSESSMENTSOURCE_SOURCETYPE._serialized_start=244
|
160
|
+
_ASSESSMENTSOURCE_SOURCETYPE._serialized_end=321
|
161
|
+
_ASSESSMENTERROR._serialized_start=323
|
162
|
+
_ASSESSMENTERROR._serialized_end=404
|
163
|
+
_EXPECTATION._serialized_start=407
|
164
|
+
_EXPECTATION._serialized_end=598
|
165
|
+
_EXPECTATION_SERIALIZEDVALUE._serialized_start=536
|
166
|
+
_EXPECTATION_SERIALIZEDVALUE._serialized_end=598
|
167
|
+
_FEEDBACK._serialized_start=600
|
168
|
+
_FEEDBACK._serialized_end=701
|
169
|
+
_ASSESSMENT._serialized_start=704
|
170
|
+
_ASSESSMENT._serialized_end=1305
|
171
|
+
_ASSESSMENT_METADATAENTRY._serialized_start=1249
|
172
|
+
_ASSESSMENT_METADATAENTRY._serialized_end=1296
|
173
|
+
# @@protoc_insertion_point(module_scope)
|
174
|
+
|