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
mlflow/dspy/wrapper.py
ADDED
@@ -0,0 +1,226 @@
|
|
1
|
+
import importlib.metadata
|
2
|
+
import json
|
3
|
+
from dataclasses import asdict, is_dataclass
|
4
|
+
from typing import TYPE_CHECKING, Any, Optional, Union
|
5
|
+
|
6
|
+
from packaging.version import Version
|
7
|
+
|
8
|
+
if TYPE_CHECKING:
|
9
|
+
import dspy
|
10
|
+
|
11
|
+
from mlflow.exceptions import INVALID_PARAMETER_VALUE, MlflowException
|
12
|
+
from mlflow.protos.databricks_pb2 import (
|
13
|
+
INVALID_PARAMETER_VALUE,
|
14
|
+
)
|
15
|
+
from mlflow.pyfunc import PythonModel
|
16
|
+
from mlflow.types.schema import DataType, Schema
|
17
|
+
|
18
|
+
_INVALID_SIZE_MESSAGE = (
|
19
|
+
"Dspy model doesn't support batch inference or empty input. Please provide a single input."
|
20
|
+
)
|
21
|
+
|
22
|
+
|
23
|
+
class DspyModelWrapper(PythonModel):
|
24
|
+
"""MLflow PyFunc wrapper class for Dspy models.
|
25
|
+
|
26
|
+
This wrapper serves two purposes:
|
27
|
+
- It stores the Dspy model along with dspy global settings, which are required for seamless
|
28
|
+
saving and loading.
|
29
|
+
- It provides a `predict` method so that it can be loaded as an MLflow pyfunc, which is
|
30
|
+
used at serving time.
|
31
|
+
"""
|
32
|
+
|
33
|
+
def __init__(
|
34
|
+
self,
|
35
|
+
model: "dspy.Module",
|
36
|
+
dspy_settings: dict[str, Any],
|
37
|
+
model_config: Optional[dict[str, Any]] = None,
|
38
|
+
):
|
39
|
+
self.model = model
|
40
|
+
self.dspy_settings = dspy_settings
|
41
|
+
self.model_config = model_config or {}
|
42
|
+
self.output_schema: Optional[Schema] = None
|
43
|
+
|
44
|
+
def predict(self, inputs: Any, params: Optional[dict[str, Any]] = None):
|
45
|
+
import dspy
|
46
|
+
|
47
|
+
converted_inputs = self._get_model_input(inputs)
|
48
|
+
|
49
|
+
with dspy.context(**self.dspy_settings):
|
50
|
+
if isinstance(converted_inputs, dict):
|
51
|
+
# We pass a dict as keyword args and don't allow DSPy models
|
52
|
+
# to receive a single dict.
|
53
|
+
return self.model(**converted_inputs).toDict()
|
54
|
+
else:
|
55
|
+
return self.model(converted_inputs).toDict()
|
56
|
+
|
57
|
+
def predict_stream(self, inputs: Any, params=None):
|
58
|
+
import dspy
|
59
|
+
|
60
|
+
converted_inputs = self._get_model_input(inputs)
|
61
|
+
|
62
|
+
self._validate_streaming()
|
63
|
+
|
64
|
+
stream_listeners = [
|
65
|
+
dspy.streaming.StreamListener(signature_field_name=spec.name)
|
66
|
+
for spec in self.output_schema
|
67
|
+
]
|
68
|
+
stream_model = dspy.streamify(
|
69
|
+
self.model,
|
70
|
+
stream_listeners=stream_listeners,
|
71
|
+
async_streaming=False,
|
72
|
+
include_final_prediction_in_output_stream=False,
|
73
|
+
)
|
74
|
+
|
75
|
+
if isinstance(converted_inputs, dict):
|
76
|
+
outputs = stream_model(**converted_inputs)
|
77
|
+
else:
|
78
|
+
outputs = stream_model(converted_inputs)
|
79
|
+
|
80
|
+
with dspy.context(**self.dspy_settings):
|
81
|
+
for output in outputs:
|
82
|
+
if is_dataclass(output):
|
83
|
+
yield asdict(output)
|
84
|
+
elif isinstance(output, dspy.Prediction):
|
85
|
+
yield output.toDict()
|
86
|
+
else:
|
87
|
+
yield output
|
88
|
+
|
89
|
+
def _get_model_input(self, inputs: Any) -> Union[str, dict[str, Any]]:
|
90
|
+
"""Convert the PythonModel input into the DSPy program input
|
91
|
+
|
92
|
+
Examples of expected conversions:
|
93
|
+
- str -> str
|
94
|
+
- dict -> dict
|
95
|
+
- np.ndarray with one element -> single element
|
96
|
+
- pd.DataFrame with one row and string column -> single row dict
|
97
|
+
- pd.DataFrame with one row and non-string column -> single element
|
98
|
+
- list -> raises an exception
|
99
|
+
- np.ndarray with more than one element -> raises an exception
|
100
|
+
- pd.DataFrame with more than one row -> raises an exception
|
101
|
+
"""
|
102
|
+
import numpy as np
|
103
|
+
import pandas as pd
|
104
|
+
|
105
|
+
supported_input_types = (np.ndarray, pd.DataFrame, str, dict)
|
106
|
+
if not isinstance(inputs, supported_input_types):
|
107
|
+
raise MlflowException(
|
108
|
+
f"`inputs` must be one of: {[x.__name__ for x in supported_input_types]}, but "
|
109
|
+
f"received type: {type(inputs)}.",
|
110
|
+
INVALID_PARAMETER_VALUE,
|
111
|
+
)
|
112
|
+
if isinstance(inputs, pd.DataFrame):
|
113
|
+
if len(inputs) != 1:
|
114
|
+
raise MlflowException(
|
115
|
+
_INVALID_SIZE_MESSAGE,
|
116
|
+
INVALID_PARAMETER_VALUE,
|
117
|
+
)
|
118
|
+
if all(isinstance(col, str) for col in inputs.columns):
|
119
|
+
inputs = inputs.to_dict(orient="records")[0]
|
120
|
+
else:
|
121
|
+
inputs = inputs.values[0]
|
122
|
+
if isinstance(inputs, np.ndarray):
|
123
|
+
if len(inputs) != 1:
|
124
|
+
raise MlflowException(
|
125
|
+
_INVALID_SIZE_MESSAGE,
|
126
|
+
INVALID_PARAMETER_VALUE,
|
127
|
+
)
|
128
|
+
inputs = inputs[0]
|
129
|
+
|
130
|
+
return inputs
|
131
|
+
|
132
|
+
def _validate_streaming(
|
133
|
+
self,
|
134
|
+
):
|
135
|
+
if Version(importlib.metadata.version("dspy")) <= Version("2.6.23"):
|
136
|
+
raise MlflowException(
|
137
|
+
"Streaming API is only supported in dspy 2.6.24 or later. "
|
138
|
+
"Please upgrade your dspy version."
|
139
|
+
)
|
140
|
+
|
141
|
+
if self.output_schema is None:
|
142
|
+
raise MlflowException(
|
143
|
+
"Output schema of the DSPy model is not set. Please log your DSPy "
|
144
|
+
"model with `signature` or `input_example` to use streaming API."
|
145
|
+
)
|
146
|
+
|
147
|
+
if any(spec.type != DataType.string for spec in self.output_schema):
|
148
|
+
raise MlflowException(
|
149
|
+
f"All output fields must be string to use streaming API. Got {self.output_schema}."
|
150
|
+
)
|
151
|
+
|
152
|
+
|
153
|
+
class DspyChatModelWrapper(DspyModelWrapper):
|
154
|
+
"""MLflow PyFunc wrapper class for Dspy chat models."""
|
155
|
+
|
156
|
+
def predict(self, inputs: Any, params: Optional[dict[str, Any]] = None):
|
157
|
+
import dspy
|
158
|
+
|
159
|
+
converted_inputs = self._get_model_input(inputs)
|
160
|
+
|
161
|
+
# `dspy.settings` cannot be shared across threads, so we are setting the context at every
|
162
|
+
# predict call.
|
163
|
+
with dspy.context(**self.dspy_settings):
|
164
|
+
outputs = self.model(converted_inputs)
|
165
|
+
|
166
|
+
choices = []
|
167
|
+
if isinstance(outputs, str):
|
168
|
+
choices.append(self._construct_chat_message("assistant", outputs))
|
169
|
+
elif isinstance(outputs, dict):
|
170
|
+
role = outputs.get("role", "assistant")
|
171
|
+
choices.append(self._construct_chat_message(role, json.dumps(outputs)))
|
172
|
+
elif isinstance(outputs, dspy.Prediction):
|
173
|
+
choices.append(self._construct_chat_message("assistant", json.dumps(outputs.toDict())))
|
174
|
+
elif isinstance(outputs, list):
|
175
|
+
for output in outputs:
|
176
|
+
if isinstance(output, dict):
|
177
|
+
role = output.get("role", "assistant")
|
178
|
+
choices.append(self._construct_chat_message(role, json.dumps(outputs)))
|
179
|
+
elif isinstance(output, dspy.Prediction):
|
180
|
+
role = output.get("role", "assistant")
|
181
|
+
choices.append(self._construct_chat_message(role, json.dumps(outputs.toDict())))
|
182
|
+
else:
|
183
|
+
raise MlflowException(
|
184
|
+
f"Unsupported output type: {type(output)}. To log a DSPy model with task "
|
185
|
+
"'llm/v1/chat', the DSPy model must return a dict, a dspy.Prediction, or a "
|
186
|
+
"list of dicts or dspy.Prediction.",
|
187
|
+
INVALID_PARAMETER_VALUE,
|
188
|
+
)
|
189
|
+
else:
|
190
|
+
raise MlflowException(
|
191
|
+
f"Unsupported output type: {type(outputs)}. To log a DSPy model with task "
|
192
|
+
"'llm/v1/chat', the DSPy model must return a dict, a dspy.Prediction, or a list of "
|
193
|
+
"dicts or dspy.Prediction.",
|
194
|
+
INVALID_PARAMETER_VALUE,
|
195
|
+
)
|
196
|
+
|
197
|
+
return {"choices": choices}
|
198
|
+
|
199
|
+
def predict_stream(self, inputs: Any, params=None):
|
200
|
+
raise NotImplementedError(
|
201
|
+
"Streaming is not supported for DSPy model with task 'llm/v1/chat'."
|
202
|
+
)
|
203
|
+
|
204
|
+
def _get_model_input(self, inputs: Any) -> Union[str, list[dict[str, Any]]]:
|
205
|
+
import pandas as pd
|
206
|
+
|
207
|
+
if isinstance(inputs, dict):
|
208
|
+
return inputs["messages"]
|
209
|
+
if isinstance(inputs, pd.DataFrame):
|
210
|
+
return inputs.messages[0]
|
211
|
+
|
212
|
+
raise MlflowException(
|
213
|
+
f"Unsupported input type: {type(inputs)}. To log a DSPy model with task "
|
214
|
+
"'llm/v1/chat', the input must be a dict or a pandas DataFrame.",
|
215
|
+
INVALID_PARAMETER_VALUE,
|
216
|
+
)
|
217
|
+
|
218
|
+
def _construct_chat_message(self, role: str, content: str) -> dict[str, Any]:
|
219
|
+
return {
|
220
|
+
"index": 0,
|
221
|
+
"message": {
|
222
|
+
"role": role,
|
223
|
+
"content": content,
|
224
|
+
},
|
225
|
+
"finish_reason": "stop",
|
226
|
+
}
|
@@ -0,0 +1,104 @@
|
|
1
|
+
"""
|
2
|
+
The ``mlflow.entities`` module defines entities returned by the MLflow
|
3
|
+
`REST API <../rest-api.html>`_.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from mlflow.entities.assessment import (
|
7
|
+
Assessment,
|
8
|
+
AssessmentError,
|
9
|
+
AssessmentSource,
|
10
|
+
AssessmentSourceType,
|
11
|
+
Expectation,
|
12
|
+
Feedback,
|
13
|
+
)
|
14
|
+
from mlflow.entities.dataset import Dataset
|
15
|
+
from mlflow.entities.dataset_input import DatasetInput
|
16
|
+
from mlflow.entities.dataset_summary import _DatasetSummary
|
17
|
+
from mlflow.entities.document import Document
|
18
|
+
from mlflow.entities.experiment import Experiment
|
19
|
+
from mlflow.entities.experiment_tag import ExperimentTag
|
20
|
+
from mlflow.entities.file_info import FileInfo
|
21
|
+
from mlflow.entities.input_tag import InputTag
|
22
|
+
from mlflow.entities.lifecycle_stage import LifecycleStage
|
23
|
+
from mlflow.entities.logged_model import LoggedModel
|
24
|
+
from mlflow.entities.logged_model_input import LoggedModelInput
|
25
|
+
from mlflow.entities.logged_model_output import LoggedModelOutput
|
26
|
+
from mlflow.entities.logged_model_parameter import LoggedModelParameter
|
27
|
+
from mlflow.entities.logged_model_status import LoggedModelStatus
|
28
|
+
from mlflow.entities.logged_model_tag import LoggedModelTag
|
29
|
+
from mlflow.entities.metric import Metric
|
30
|
+
from mlflow.entities.model_registry import Prompt
|
31
|
+
from mlflow.entities.param import Param
|
32
|
+
from mlflow.entities.run import Run
|
33
|
+
from mlflow.entities.run_data import RunData
|
34
|
+
from mlflow.entities.run_info import RunInfo
|
35
|
+
from mlflow.entities.run_inputs import RunInputs
|
36
|
+
from mlflow.entities.run_outputs import RunOutputs
|
37
|
+
from mlflow.entities.run_status import RunStatus
|
38
|
+
from mlflow.entities.run_tag import RunTag
|
39
|
+
from mlflow.entities.source_type import SourceType
|
40
|
+
from mlflow.entities.span import LiveSpan, NoOpSpan, Span, SpanType
|
41
|
+
from mlflow.entities.span_event import SpanEvent
|
42
|
+
from mlflow.entities.span_status import SpanStatus, SpanStatusCode
|
43
|
+
from mlflow.entities.trace import Trace
|
44
|
+
from mlflow.entities.trace_data import TraceData
|
45
|
+
from mlflow.entities.trace_info import TraceInfo
|
46
|
+
from mlflow.entities.trace_location import (
|
47
|
+
InferenceTableLocation,
|
48
|
+
MlflowExperimentLocation,
|
49
|
+
TraceLocation,
|
50
|
+
TraceLocationType,
|
51
|
+
)
|
52
|
+
from mlflow.entities.trace_state import TraceState
|
53
|
+
from mlflow.entities.view_type import ViewType
|
54
|
+
|
55
|
+
__all__ = [
|
56
|
+
"Experiment",
|
57
|
+
"FileInfo",
|
58
|
+
"Metric",
|
59
|
+
"Param",
|
60
|
+
"Prompt",
|
61
|
+
"Run",
|
62
|
+
"RunData",
|
63
|
+
"RunInfo",
|
64
|
+
"RunStatus",
|
65
|
+
"RunTag",
|
66
|
+
"ExperimentTag",
|
67
|
+
"SourceType",
|
68
|
+
"ViewType",
|
69
|
+
"LifecycleStage",
|
70
|
+
"Dataset",
|
71
|
+
"InputTag",
|
72
|
+
"DatasetInput",
|
73
|
+
"RunInputs",
|
74
|
+
"RunOutputs",
|
75
|
+
"Span",
|
76
|
+
"LiveSpan",
|
77
|
+
"NoOpSpan",
|
78
|
+
"SpanEvent",
|
79
|
+
"SpanStatus",
|
80
|
+
"SpanType",
|
81
|
+
"Trace",
|
82
|
+
"TraceData",
|
83
|
+
"TraceInfo",
|
84
|
+
"TraceLocation",
|
85
|
+
"TraceLocationType",
|
86
|
+
"MlflowExperimentLocation",
|
87
|
+
"InferenceTableLocation",
|
88
|
+
"TraceState",
|
89
|
+
"SpanStatusCode",
|
90
|
+
"_DatasetSummary",
|
91
|
+
"LoggedModel",
|
92
|
+
"LoggedModelInput",
|
93
|
+
"LoggedModelOutput",
|
94
|
+
"LoggedModelStatus",
|
95
|
+
"LoggedModelTag",
|
96
|
+
"LoggedModelParameter",
|
97
|
+
"Document",
|
98
|
+
"Assessment",
|
99
|
+
"AssessmentError",
|
100
|
+
"AssessmentSource",
|
101
|
+
"AssessmentSourceType",
|
102
|
+
"Expectation",
|
103
|
+
"Feedback",
|
104
|
+
]
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import pprint
|
2
|
+
from abc import abstractmethod
|
3
|
+
|
4
|
+
|
5
|
+
class _MlflowObject:
|
6
|
+
def __iter__(self):
|
7
|
+
# Iterate through list of properties and yield as key -> value
|
8
|
+
for prop in self._properties():
|
9
|
+
yield prop, self.__getattribute__(prop)
|
10
|
+
|
11
|
+
@classmethod
|
12
|
+
def _get_properties_helper(cls):
|
13
|
+
return sorted([p for p in cls.__dict__ if isinstance(getattr(cls, p), property)])
|
14
|
+
|
15
|
+
@classmethod
|
16
|
+
def _properties(cls):
|
17
|
+
return cls._get_properties_helper()
|
18
|
+
|
19
|
+
@classmethod
|
20
|
+
@abstractmethod
|
21
|
+
def from_proto(cls, proto):
|
22
|
+
pass
|
23
|
+
|
24
|
+
@classmethod
|
25
|
+
def from_dictionary(cls, the_dict):
|
26
|
+
filtered_dict = {key: value for key, value in the_dict.items() if key in cls._properties()}
|
27
|
+
return cls(**filtered_dict)
|
28
|
+
|
29
|
+
def __repr__(self):
|
30
|
+
return to_string(self)
|
31
|
+
|
32
|
+
|
33
|
+
def to_string(obj):
|
34
|
+
return _MlflowObjectPrinter().to_string(obj)
|
35
|
+
|
36
|
+
|
37
|
+
def get_classname(obj):
|
38
|
+
return type(obj).__name__
|
39
|
+
|
40
|
+
|
41
|
+
class _MlflowObjectPrinter:
|
42
|
+
def __init__(self):
|
43
|
+
super().__init__()
|
44
|
+
self.printer = pprint.PrettyPrinter()
|
45
|
+
|
46
|
+
def to_string(self, obj):
|
47
|
+
if isinstance(obj, _MlflowObject):
|
48
|
+
return f"<{get_classname(obj)}: {self._entity_to_string(obj)}>"
|
49
|
+
return self.printer.pformat(obj)
|
50
|
+
|
51
|
+
def _entity_to_string(self, entity):
|
52
|
+
return ", ".join([f"{key}={self.to_string(value)}" for key, value in entity])
|