genesis-flow 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (645) hide show
  1. genesis_flow-1.0.0.dist-info/METADATA +822 -0
  2. genesis_flow-1.0.0.dist-info/RECORD +645 -0
  3. genesis_flow-1.0.0.dist-info/WHEEL +5 -0
  4. genesis_flow-1.0.0.dist-info/entry_points.txt +19 -0
  5. genesis_flow-1.0.0.dist-info/licenses/LICENSE.txt +202 -0
  6. genesis_flow-1.0.0.dist-info/top_level.txt +1 -0
  7. mlflow/__init__.py +367 -0
  8. mlflow/__main__.py +3 -0
  9. mlflow/ag2/__init__.py +56 -0
  10. mlflow/ag2/ag2_logger.py +294 -0
  11. mlflow/anthropic/__init__.py +40 -0
  12. mlflow/anthropic/autolog.py +129 -0
  13. mlflow/anthropic/chat.py +144 -0
  14. mlflow/artifacts/__init__.py +268 -0
  15. mlflow/autogen/__init__.py +144 -0
  16. mlflow/autogen/chat.py +142 -0
  17. mlflow/azure/__init__.py +26 -0
  18. mlflow/azure/auth_handler.py +257 -0
  19. mlflow/azure/client.py +319 -0
  20. mlflow/azure/config.py +120 -0
  21. mlflow/azure/connection_factory.py +340 -0
  22. mlflow/azure/exceptions.py +27 -0
  23. mlflow/azure/stores.py +327 -0
  24. mlflow/azure/utils.py +183 -0
  25. mlflow/bedrock/__init__.py +45 -0
  26. mlflow/bedrock/_autolog.py +202 -0
  27. mlflow/bedrock/chat.py +122 -0
  28. mlflow/bedrock/stream.py +160 -0
  29. mlflow/bedrock/utils.py +43 -0
  30. mlflow/cli.py +707 -0
  31. mlflow/client.py +12 -0
  32. mlflow/config/__init__.py +56 -0
  33. mlflow/crewai/__init__.py +79 -0
  34. mlflow/crewai/autolog.py +253 -0
  35. mlflow/crewai/chat.py +29 -0
  36. mlflow/data/__init__.py +75 -0
  37. mlflow/data/artifact_dataset_sources.py +170 -0
  38. mlflow/data/code_dataset_source.py +40 -0
  39. mlflow/data/dataset.py +123 -0
  40. mlflow/data/dataset_registry.py +168 -0
  41. mlflow/data/dataset_source.py +110 -0
  42. mlflow/data/dataset_source_registry.py +219 -0
  43. mlflow/data/delta_dataset_source.py +167 -0
  44. mlflow/data/digest_utils.py +108 -0
  45. mlflow/data/evaluation_dataset.py +562 -0
  46. mlflow/data/filesystem_dataset_source.py +81 -0
  47. mlflow/data/http_dataset_source.py +145 -0
  48. mlflow/data/huggingface_dataset.py +258 -0
  49. mlflow/data/huggingface_dataset_source.py +118 -0
  50. mlflow/data/meta_dataset.py +104 -0
  51. mlflow/data/numpy_dataset.py +223 -0
  52. mlflow/data/pandas_dataset.py +231 -0
  53. mlflow/data/polars_dataset.py +352 -0
  54. mlflow/data/pyfunc_dataset_mixin.py +31 -0
  55. mlflow/data/schema.py +76 -0
  56. mlflow/data/sources.py +1 -0
  57. mlflow/data/spark_dataset.py +406 -0
  58. mlflow/data/spark_dataset_source.py +74 -0
  59. mlflow/data/spark_delta_utils.py +118 -0
  60. mlflow/data/tensorflow_dataset.py +350 -0
  61. mlflow/data/uc_volume_dataset_source.py +81 -0
  62. mlflow/db.py +27 -0
  63. mlflow/dspy/__init__.py +17 -0
  64. mlflow/dspy/autolog.py +197 -0
  65. mlflow/dspy/callback.py +398 -0
  66. mlflow/dspy/constant.py +1 -0
  67. mlflow/dspy/load.py +93 -0
  68. mlflow/dspy/save.py +393 -0
  69. mlflow/dspy/util.py +109 -0
  70. mlflow/dspy/wrapper.py +226 -0
  71. mlflow/entities/__init__.py +104 -0
  72. mlflow/entities/_mlflow_object.py +52 -0
  73. mlflow/entities/assessment.py +545 -0
  74. mlflow/entities/assessment_error.py +80 -0
  75. mlflow/entities/assessment_source.py +141 -0
  76. mlflow/entities/dataset.py +92 -0
  77. mlflow/entities/dataset_input.py +51 -0
  78. mlflow/entities/dataset_summary.py +62 -0
  79. mlflow/entities/document.py +48 -0
  80. mlflow/entities/experiment.py +109 -0
  81. mlflow/entities/experiment_tag.py +35 -0
  82. mlflow/entities/file_info.py +45 -0
  83. mlflow/entities/input_tag.py +35 -0
  84. mlflow/entities/lifecycle_stage.py +35 -0
  85. mlflow/entities/logged_model.py +228 -0
  86. mlflow/entities/logged_model_input.py +26 -0
  87. mlflow/entities/logged_model_output.py +32 -0
  88. mlflow/entities/logged_model_parameter.py +46 -0
  89. mlflow/entities/logged_model_status.py +74 -0
  90. mlflow/entities/logged_model_tag.py +33 -0
  91. mlflow/entities/metric.py +200 -0
  92. mlflow/entities/model_registry/__init__.py +29 -0
  93. mlflow/entities/model_registry/_model_registry_entity.py +13 -0
  94. mlflow/entities/model_registry/model_version.py +243 -0
  95. mlflow/entities/model_registry/model_version_deployment_job_run_state.py +44 -0
  96. mlflow/entities/model_registry/model_version_deployment_job_state.py +70 -0
  97. mlflow/entities/model_registry/model_version_search.py +25 -0
  98. mlflow/entities/model_registry/model_version_stages.py +25 -0
  99. mlflow/entities/model_registry/model_version_status.py +35 -0
  100. mlflow/entities/model_registry/model_version_tag.py +35 -0
  101. mlflow/entities/model_registry/prompt.py +73 -0
  102. mlflow/entities/model_registry/prompt_version.py +244 -0
  103. mlflow/entities/model_registry/registered_model.py +175 -0
  104. mlflow/entities/model_registry/registered_model_alias.py +35 -0
  105. mlflow/entities/model_registry/registered_model_deployment_job_state.py +39 -0
  106. mlflow/entities/model_registry/registered_model_search.py +25 -0
  107. mlflow/entities/model_registry/registered_model_tag.py +35 -0
  108. mlflow/entities/multipart_upload.py +74 -0
  109. mlflow/entities/param.py +49 -0
  110. mlflow/entities/run.py +97 -0
  111. mlflow/entities/run_data.py +84 -0
  112. mlflow/entities/run_info.py +188 -0
  113. mlflow/entities/run_inputs.py +59 -0
  114. mlflow/entities/run_outputs.py +43 -0
  115. mlflow/entities/run_status.py +41 -0
  116. mlflow/entities/run_tag.py +36 -0
  117. mlflow/entities/source_type.py +31 -0
  118. mlflow/entities/span.py +774 -0
  119. mlflow/entities/span_event.py +96 -0
  120. mlflow/entities/span_status.py +102 -0
  121. mlflow/entities/trace.py +317 -0
  122. mlflow/entities/trace_data.py +71 -0
  123. mlflow/entities/trace_info.py +220 -0
  124. mlflow/entities/trace_info_v2.py +162 -0
  125. mlflow/entities/trace_location.py +173 -0
  126. mlflow/entities/trace_state.py +39 -0
  127. mlflow/entities/trace_status.py +68 -0
  128. mlflow/entities/view_type.py +51 -0
  129. mlflow/environment_variables.py +866 -0
  130. mlflow/evaluation/__init__.py +16 -0
  131. mlflow/evaluation/assessment.py +369 -0
  132. mlflow/evaluation/evaluation.py +411 -0
  133. mlflow/evaluation/evaluation_tag.py +61 -0
  134. mlflow/evaluation/fluent.py +48 -0
  135. mlflow/evaluation/utils.py +201 -0
  136. mlflow/exceptions.py +213 -0
  137. mlflow/experiments.py +140 -0
  138. mlflow/gemini/__init__.py +81 -0
  139. mlflow/gemini/autolog.py +186 -0
  140. mlflow/gemini/chat.py +261 -0
  141. mlflow/genai/__init__.py +71 -0
  142. mlflow/genai/datasets/__init__.py +67 -0
  143. mlflow/genai/datasets/evaluation_dataset.py +131 -0
  144. mlflow/genai/evaluation/__init__.py +3 -0
  145. mlflow/genai/evaluation/base.py +411 -0
  146. mlflow/genai/evaluation/constant.py +23 -0
  147. mlflow/genai/evaluation/utils.py +244 -0
  148. mlflow/genai/judges/__init__.py +21 -0
  149. mlflow/genai/judges/databricks.py +404 -0
  150. mlflow/genai/label_schemas/__init__.py +153 -0
  151. mlflow/genai/label_schemas/label_schemas.py +209 -0
  152. mlflow/genai/labeling/__init__.py +159 -0
  153. mlflow/genai/labeling/labeling.py +250 -0
  154. mlflow/genai/optimize/__init__.py +13 -0
  155. mlflow/genai/optimize/base.py +198 -0
  156. mlflow/genai/optimize/optimizers/__init__.py +4 -0
  157. mlflow/genai/optimize/optimizers/base_optimizer.py +38 -0
  158. mlflow/genai/optimize/optimizers/dspy_mipro_optimizer.py +221 -0
  159. mlflow/genai/optimize/optimizers/dspy_optimizer.py +91 -0
  160. mlflow/genai/optimize/optimizers/utils/dspy_mipro_callback.py +76 -0
  161. mlflow/genai/optimize/optimizers/utils/dspy_mipro_utils.py +18 -0
  162. mlflow/genai/optimize/types.py +75 -0
  163. mlflow/genai/optimize/util.py +30 -0
  164. mlflow/genai/prompts/__init__.py +206 -0
  165. mlflow/genai/scheduled_scorers.py +431 -0
  166. mlflow/genai/scorers/__init__.py +26 -0
  167. mlflow/genai/scorers/base.py +492 -0
  168. mlflow/genai/scorers/builtin_scorers.py +765 -0
  169. mlflow/genai/scorers/scorer_utils.py +138 -0
  170. mlflow/genai/scorers/validation.py +165 -0
  171. mlflow/genai/utils/data_validation.py +146 -0
  172. mlflow/genai/utils/enum_utils.py +23 -0
  173. mlflow/genai/utils/trace_utils.py +211 -0
  174. mlflow/groq/__init__.py +42 -0
  175. mlflow/groq/_groq_autolog.py +74 -0
  176. mlflow/johnsnowlabs/__init__.py +888 -0
  177. mlflow/langchain/__init__.py +24 -0
  178. mlflow/langchain/api_request_parallel_processor.py +330 -0
  179. mlflow/langchain/autolog.py +147 -0
  180. mlflow/langchain/chat_agent_langgraph.py +340 -0
  181. mlflow/langchain/constant.py +1 -0
  182. mlflow/langchain/constants.py +1 -0
  183. mlflow/langchain/databricks_dependencies.py +444 -0
  184. mlflow/langchain/langchain_tracer.py +597 -0
  185. mlflow/langchain/model.py +919 -0
  186. mlflow/langchain/output_parsers.py +142 -0
  187. mlflow/langchain/retriever_chain.py +153 -0
  188. mlflow/langchain/runnables.py +527 -0
  189. mlflow/langchain/utils/chat.py +402 -0
  190. mlflow/langchain/utils/logging.py +671 -0
  191. mlflow/langchain/utils/serialization.py +36 -0
  192. mlflow/legacy_databricks_cli/__init__.py +0 -0
  193. mlflow/legacy_databricks_cli/configure/__init__.py +0 -0
  194. mlflow/legacy_databricks_cli/configure/provider.py +482 -0
  195. mlflow/litellm/__init__.py +175 -0
  196. mlflow/llama_index/__init__.py +22 -0
  197. mlflow/llama_index/autolog.py +55 -0
  198. mlflow/llama_index/chat.py +43 -0
  199. mlflow/llama_index/constant.py +1 -0
  200. mlflow/llama_index/model.py +577 -0
  201. mlflow/llama_index/pyfunc_wrapper.py +332 -0
  202. mlflow/llama_index/serialize_objects.py +188 -0
  203. mlflow/llama_index/tracer.py +561 -0
  204. mlflow/metrics/__init__.py +479 -0
  205. mlflow/metrics/base.py +39 -0
  206. mlflow/metrics/genai/__init__.py +25 -0
  207. mlflow/metrics/genai/base.py +101 -0
  208. mlflow/metrics/genai/genai_metric.py +771 -0
  209. mlflow/metrics/genai/metric_definitions.py +450 -0
  210. mlflow/metrics/genai/model_utils.py +371 -0
  211. mlflow/metrics/genai/prompt_template.py +68 -0
  212. mlflow/metrics/genai/prompts/__init__.py +0 -0
  213. mlflow/metrics/genai/prompts/v1.py +422 -0
  214. mlflow/metrics/genai/utils.py +6 -0
  215. mlflow/metrics/metric_definitions.py +619 -0
  216. mlflow/mismatch.py +34 -0
  217. mlflow/mistral/__init__.py +34 -0
  218. mlflow/mistral/autolog.py +71 -0
  219. mlflow/mistral/chat.py +135 -0
  220. mlflow/ml_package_versions.py +452 -0
  221. mlflow/models/__init__.py +97 -0
  222. mlflow/models/auth_policy.py +83 -0
  223. mlflow/models/cli.py +354 -0
  224. mlflow/models/container/__init__.py +294 -0
  225. mlflow/models/container/scoring_server/__init__.py +0 -0
  226. mlflow/models/container/scoring_server/nginx.conf +39 -0
  227. mlflow/models/dependencies_schemas.py +287 -0
  228. mlflow/models/display_utils.py +158 -0
  229. mlflow/models/docker_utils.py +211 -0
  230. mlflow/models/evaluation/__init__.py +23 -0
  231. mlflow/models/evaluation/_shap_patch.py +64 -0
  232. mlflow/models/evaluation/artifacts.py +194 -0
  233. mlflow/models/evaluation/base.py +1811 -0
  234. mlflow/models/evaluation/calibration_curve.py +109 -0
  235. mlflow/models/evaluation/default_evaluator.py +996 -0
  236. mlflow/models/evaluation/deprecated.py +23 -0
  237. mlflow/models/evaluation/evaluator_registry.py +80 -0
  238. mlflow/models/evaluation/evaluators/classifier.py +704 -0
  239. mlflow/models/evaluation/evaluators/default.py +233 -0
  240. mlflow/models/evaluation/evaluators/regressor.py +96 -0
  241. mlflow/models/evaluation/evaluators/shap.py +296 -0
  242. mlflow/models/evaluation/lift_curve.py +178 -0
  243. mlflow/models/evaluation/utils/metric.py +123 -0
  244. mlflow/models/evaluation/utils/trace.py +179 -0
  245. mlflow/models/evaluation/validation.py +434 -0
  246. mlflow/models/flavor_backend.py +93 -0
  247. mlflow/models/flavor_backend_registry.py +53 -0
  248. mlflow/models/model.py +1639 -0
  249. mlflow/models/model_config.py +150 -0
  250. mlflow/models/notebook_resources/agent_evaluation_template.html +235 -0
  251. mlflow/models/notebook_resources/eval_with_dataset_example.py +22 -0
  252. mlflow/models/notebook_resources/eval_with_synthetic_example.py +22 -0
  253. mlflow/models/python_api.py +369 -0
  254. mlflow/models/rag_signatures.py +128 -0
  255. mlflow/models/resources.py +321 -0
  256. mlflow/models/signature.py +662 -0
  257. mlflow/models/utils.py +2054 -0
  258. mlflow/models/wheeled_model.py +280 -0
  259. mlflow/openai/__init__.py +57 -0
  260. mlflow/openai/_agent_tracer.py +364 -0
  261. mlflow/openai/api_request_parallel_processor.py +131 -0
  262. mlflow/openai/autolog.py +509 -0
  263. mlflow/openai/constant.py +1 -0
  264. mlflow/openai/model.py +824 -0
  265. mlflow/openai/utils/chat_schema.py +367 -0
  266. mlflow/optuna/__init__.py +3 -0
  267. mlflow/optuna/storage.py +646 -0
  268. mlflow/plugins/__init__.py +72 -0
  269. mlflow/plugins/base.py +358 -0
  270. mlflow/plugins/builtin/__init__.py +24 -0
  271. mlflow/plugins/builtin/pytorch_plugin.py +150 -0
  272. mlflow/plugins/builtin/sklearn_plugin.py +158 -0
  273. mlflow/plugins/builtin/transformers_plugin.py +187 -0
  274. mlflow/plugins/cli.py +321 -0
  275. mlflow/plugins/discovery.py +340 -0
  276. mlflow/plugins/manager.py +465 -0
  277. mlflow/plugins/registry.py +316 -0
  278. mlflow/plugins/templates/framework_plugin_template.py +329 -0
  279. mlflow/prompt/constants.py +20 -0
  280. mlflow/prompt/promptlab_model.py +197 -0
  281. mlflow/prompt/registry_utils.py +248 -0
  282. mlflow/promptflow/__init__.py +495 -0
  283. mlflow/protos/__init__.py +0 -0
  284. mlflow/protos/assessments_pb2.py +174 -0
  285. mlflow/protos/databricks_artifacts_pb2.py +489 -0
  286. mlflow/protos/databricks_filesystem_service_pb2.py +196 -0
  287. mlflow/protos/databricks_managed_catalog_messages_pb2.py +95 -0
  288. mlflow/protos/databricks_managed_catalog_service_pb2.py +86 -0
  289. mlflow/protos/databricks_pb2.py +267 -0
  290. mlflow/protos/databricks_trace_server_pb2.py +374 -0
  291. mlflow/protos/databricks_uc_registry_messages_pb2.py +1249 -0
  292. mlflow/protos/databricks_uc_registry_service_pb2.py +170 -0
  293. mlflow/protos/facet_feature_statistics_pb2.py +296 -0
  294. mlflow/protos/internal_pb2.py +77 -0
  295. mlflow/protos/mlflow_artifacts_pb2.py +336 -0
  296. mlflow/protos/model_registry_pb2.py +1073 -0
  297. mlflow/protos/scalapb/__init__.py +0 -0
  298. mlflow/protos/scalapb/scalapb_pb2.py +104 -0
  299. mlflow/protos/service_pb2.py +2600 -0
  300. mlflow/protos/unity_catalog_oss_messages_pb2.py +457 -0
  301. mlflow/protos/unity_catalog_oss_service_pb2.py +130 -0
  302. mlflow/protos/unity_catalog_prompt_messages_pb2.py +447 -0
  303. mlflow/protos/unity_catalog_prompt_messages_pb2_grpc.py +24 -0
  304. mlflow/protos/unity_catalog_prompt_service_pb2.py +164 -0
  305. mlflow/protos/unity_catalog_prompt_service_pb2_grpc.py +785 -0
  306. mlflow/py.typed +0 -0
  307. mlflow/pydantic_ai/__init__.py +57 -0
  308. mlflow/pydantic_ai/autolog.py +173 -0
  309. mlflow/pyfunc/__init__.py +3844 -0
  310. mlflow/pyfunc/_mlflow_pyfunc_backend_predict.py +61 -0
  311. mlflow/pyfunc/backend.py +523 -0
  312. mlflow/pyfunc/context.py +78 -0
  313. mlflow/pyfunc/dbconnect_artifact_cache.py +144 -0
  314. mlflow/pyfunc/loaders/__init__.py +7 -0
  315. mlflow/pyfunc/loaders/chat_agent.py +117 -0
  316. mlflow/pyfunc/loaders/chat_model.py +125 -0
  317. mlflow/pyfunc/loaders/code_model.py +31 -0
  318. mlflow/pyfunc/loaders/responses_agent.py +112 -0
  319. mlflow/pyfunc/mlserver.py +46 -0
  320. mlflow/pyfunc/model.py +1473 -0
  321. mlflow/pyfunc/scoring_server/__init__.py +604 -0
  322. mlflow/pyfunc/scoring_server/app.py +7 -0
  323. mlflow/pyfunc/scoring_server/client.py +146 -0
  324. mlflow/pyfunc/spark_model_cache.py +48 -0
  325. mlflow/pyfunc/stdin_server.py +44 -0
  326. mlflow/pyfunc/utils/__init__.py +3 -0
  327. mlflow/pyfunc/utils/data_validation.py +224 -0
  328. mlflow/pyfunc/utils/environment.py +22 -0
  329. mlflow/pyfunc/utils/input_converter.py +47 -0
  330. mlflow/pyfunc/utils/serving_data_parser.py +11 -0
  331. mlflow/pytorch/__init__.py +1171 -0
  332. mlflow/pytorch/_lightning_autolog.py +580 -0
  333. mlflow/pytorch/_pytorch_autolog.py +50 -0
  334. mlflow/pytorch/pickle_module.py +35 -0
  335. mlflow/rfunc/__init__.py +42 -0
  336. mlflow/rfunc/backend.py +134 -0
  337. mlflow/runs.py +89 -0
  338. mlflow/server/__init__.py +302 -0
  339. mlflow/server/auth/__init__.py +1224 -0
  340. mlflow/server/auth/__main__.py +4 -0
  341. mlflow/server/auth/basic_auth.ini +6 -0
  342. mlflow/server/auth/cli.py +11 -0
  343. mlflow/server/auth/client.py +537 -0
  344. mlflow/server/auth/config.py +34 -0
  345. mlflow/server/auth/db/__init__.py +0 -0
  346. mlflow/server/auth/db/cli.py +18 -0
  347. mlflow/server/auth/db/migrations/__init__.py +0 -0
  348. mlflow/server/auth/db/migrations/alembic.ini +110 -0
  349. mlflow/server/auth/db/migrations/env.py +76 -0
  350. mlflow/server/auth/db/migrations/versions/8606fa83a998_initial_migration.py +51 -0
  351. mlflow/server/auth/db/migrations/versions/__init__.py +0 -0
  352. mlflow/server/auth/db/models.py +67 -0
  353. mlflow/server/auth/db/utils.py +37 -0
  354. mlflow/server/auth/entities.py +165 -0
  355. mlflow/server/auth/logo.py +14 -0
  356. mlflow/server/auth/permissions.py +65 -0
  357. mlflow/server/auth/routes.py +18 -0
  358. mlflow/server/auth/sqlalchemy_store.py +263 -0
  359. mlflow/server/graphql/__init__.py +0 -0
  360. mlflow/server/graphql/autogenerated_graphql_schema.py +353 -0
  361. mlflow/server/graphql/graphql_custom_scalars.py +24 -0
  362. mlflow/server/graphql/graphql_errors.py +15 -0
  363. mlflow/server/graphql/graphql_no_batching.py +89 -0
  364. mlflow/server/graphql/graphql_schema_extensions.py +74 -0
  365. mlflow/server/handlers.py +3217 -0
  366. mlflow/server/prometheus_exporter.py +17 -0
  367. mlflow/server/validation.py +30 -0
  368. mlflow/shap/__init__.py +691 -0
  369. mlflow/sklearn/__init__.py +1994 -0
  370. mlflow/sklearn/utils.py +1041 -0
  371. mlflow/smolagents/__init__.py +66 -0
  372. mlflow/smolagents/autolog.py +139 -0
  373. mlflow/smolagents/chat.py +29 -0
  374. mlflow/store/__init__.py +10 -0
  375. mlflow/store/_unity_catalog/__init__.py +1 -0
  376. mlflow/store/_unity_catalog/lineage/__init__.py +1 -0
  377. mlflow/store/_unity_catalog/lineage/constants.py +2 -0
  378. mlflow/store/_unity_catalog/registry/__init__.py +6 -0
  379. mlflow/store/_unity_catalog/registry/prompt_info.py +75 -0
  380. mlflow/store/_unity_catalog/registry/rest_store.py +1740 -0
  381. mlflow/store/_unity_catalog/registry/uc_oss_rest_store.py +507 -0
  382. mlflow/store/_unity_catalog/registry/utils.py +121 -0
  383. mlflow/store/artifact/__init__.py +0 -0
  384. mlflow/store/artifact/artifact_repo.py +472 -0
  385. mlflow/store/artifact/artifact_repository_registry.py +154 -0
  386. mlflow/store/artifact/azure_blob_artifact_repo.py +275 -0
  387. mlflow/store/artifact/azure_data_lake_artifact_repo.py +295 -0
  388. mlflow/store/artifact/cli.py +141 -0
  389. mlflow/store/artifact/cloud_artifact_repo.py +332 -0
  390. mlflow/store/artifact/databricks_artifact_repo.py +729 -0
  391. mlflow/store/artifact/databricks_artifact_repo_resources.py +301 -0
  392. mlflow/store/artifact/databricks_logged_model_artifact_repo.py +93 -0
  393. mlflow/store/artifact/databricks_models_artifact_repo.py +216 -0
  394. mlflow/store/artifact/databricks_sdk_artifact_repo.py +134 -0
  395. mlflow/store/artifact/databricks_sdk_models_artifact_repo.py +97 -0
  396. mlflow/store/artifact/dbfs_artifact_repo.py +240 -0
  397. mlflow/store/artifact/ftp_artifact_repo.py +132 -0
  398. mlflow/store/artifact/gcs_artifact_repo.py +296 -0
  399. mlflow/store/artifact/hdfs_artifact_repo.py +209 -0
  400. mlflow/store/artifact/http_artifact_repo.py +218 -0
  401. mlflow/store/artifact/local_artifact_repo.py +142 -0
  402. mlflow/store/artifact/mlflow_artifacts_repo.py +94 -0
  403. mlflow/store/artifact/models_artifact_repo.py +259 -0
  404. mlflow/store/artifact/optimized_s3_artifact_repo.py +356 -0
  405. mlflow/store/artifact/presigned_url_artifact_repo.py +173 -0
  406. mlflow/store/artifact/r2_artifact_repo.py +70 -0
  407. mlflow/store/artifact/runs_artifact_repo.py +265 -0
  408. mlflow/store/artifact/s3_artifact_repo.py +330 -0
  409. mlflow/store/artifact/sftp_artifact_repo.py +141 -0
  410. mlflow/store/artifact/uc_volume_artifact_repo.py +76 -0
  411. mlflow/store/artifact/unity_catalog_models_artifact_repo.py +168 -0
  412. mlflow/store/artifact/unity_catalog_oss_models_artifact_repo.py +168 -0
  413. mlflow/store/artifact/utils/__init__.py +0 -0
  414. mlflow/store/artifact/utils/models.py +148 -0
  415. mlflow/store/db/__init__.py +0 -0
  416. mlflow/store/db/base_sql_model.py +3 -0
  417. mlflow/store/db/db_types.py +10 -0
  418. mlflow/store/db/utils.py +314 -0
  419. mlflow/store/db_migrations/__init__.py +0 -0
  420. mlflow/store/db_migrations/alembic.ini +74 -0
  421. mlflow/store/db_migrations/env.py +84 -0
  422. mlflow/store/db_migrations/versions/0584bdc529eb_add_cascading_deletion_to_datasets_from_experiments.py +88 -0
  423. mlflow/store/db_migrations/versions/0a8213491aaa_drop_duplicate_killed_constraint.py +49 -0
  424. mlflow/store/db_migrations/versions/0c779009ac13_add_deleted_time_field_to_runs_table.py +24 -0
  425. mlflow/store/db_migrations/versions/181f10493468_allow_nulls_for_metric_values.py +35 -0
  426. mlflow/store/db_migrations/versions/27a6a02d2cf1_add_model_version_tags_table.py +38 -0
  427. mlflow/store/db_migrations/versions/2b4d017a5e9b_add_model_registry_tables_to_db.py +77 -0
  428. mlflow/store/db_migrations/versions/2d6e25af4d3e_increase_max_param_val_length.py +33 -0
  429. mlflow/store/db_migrations/versions/3500859a5d39_add_model_aliases_table.py +50 -0
  430. mlflow/store/db_migrations/versions/39d1c3be5f05_add_is_nan_constraint_for_metrics_tables_if_necessary.py +41 -0
  431. mlflow/store/db_migrations/versions/400f98739977_add_logged_model_tables.py +123 -0
  432. mlflow/store/db_migrations/versions/4465047574b1_increase_max_dataset_schema_size.py +38 -0
  433. mlflow/store/db_migrations/versions/451aebb31d03_add_metric_step.py +35 -0
  434. mlflow/store/db_migrations/versions/5b0e9adcef9c_add_cascade_deletion_to_trace_tables_fk.py +40 -0
  435. mlflow/store/db_migrations/versions/6953534de441_add_step_to_inputs_table.py +25 -0
  436. mlflow/store/db_migrations/versions/728d730b5ebd_add_registered_model_tags_table.py +38 -0
  437. mlflow/store/db_migrations/versions/7ac759974ad8_update_run_tags_with_larger_limit.py +36 -0
  438. mlflow/store/db_migrations/versions/7f2a7d5fae7d_add_datasets_inputs_input_tags_tables.py +82 -0
  439. mlflow/store/db_migrations/versions/84291f40a231_add_run_link_to_model_version.py +26 -0
  440. mlflow/store/db_migrations/versions/867495a8f9d4_add_trace_tables.py +90 -0
  441. mlflow/store/db_migrations/versions/89d4b8295536_create_latest_metrics_table.py +169 -0
  442. mlflow/store/db_migrations/versions/90e64c465722_migrate_user_column_to_tags.py +64 -0
  443. mlflow/store/db_migrations/versions/97727af70f4d_creation_time_last_update_time_experiments.py +25 -0
  444. mlflow/store/db_migrations/versions/__init__.py +0 -0
  445. mlflow/store/db_migrations/versions/a8c4a736bde6_allow_nulls_for_run_id.py +27 -0
  446. mlflow/store/db_migrations/versions/acf3f17fdcc7_add_storage_location_field_to_model_.py +29 -0
  447. mlflow/store/db_migrations/versions/bd07f7e963c5_create_index_on_run_uuid.py +26 -0
  448. mlflow/store/db_migrations/versions/bda7b8c39065_increase_model_version_tag_value_limit.py +38 -0
  449. mlflow/store/db_migrations/versions/c48cb773bb87_reset_default_value_for_is_nan_in_metrics_table_for_mysql.py +41 -0
  450. mlflow/store/db_migrations/versions/cbc13b556ace_add_v3_trace_schema_columns.py +31 -0
  451. mlflow/store/db_migrations/versions/cc1f77228345_change_param_value_length_to_500.py +34 -0
  452. mlflow/store/db_migrations/versions/cfd24bdc0731_update_run_status_constraint_with_killed.py +78 -0
  453. mlflow/store/db_migrations/versions/df50e92ffc5e_add_experiment_tags_table.py +38 -0
  454. mlflow/store/db_migrations/versions/f5a4f2784254_increase_run_tag_value_limit.py +36 -0
  455. mlflow/store/entities/__init__.py +3 -0
  456. mlflow/store/entities/paged_list.py +18 -0
  457. mlflow/store/model_registry/__init__.py +10 -0
  458. mlflow/store/model_registry/abstract_store.py +1081 -0
  459. mlflow/store/model_registry/base_rest_store.py +44 -0
  460. mlflow/store/model_registry/databricks_workspace_model_registry_rest_store.py +37 -0
  461. mlflow/store/model_registry/dbmodels/__init__.py +0 -0
  462. mlflow/store/model_registry/dbmodels/models.py +206 -0
  463. mlflow/store/model_registry/file_store.py +1091 -0
  464. mlflow/store/model_registry/rest_store.py +481 -0
  465. mlflow/store/model_registry/sqlalchemy_store.py +1286 -0
  466. mlflow/store/tracking/__init__.py +23 -0
  467. mlflow/store/tracking/abstract_store.py +816 -0
  468. mlflow/store/tracking/dbmodels/__init__.py +0 -0
  469. mlflow/store/tracking/dbmodels/initial_models.py +243 -0
  470. mlflow/store/tracking/dbmodels/models.py +1073 -0
  471. mlflow/store/tracking/file_store.py +2438 -0
  472. mlflow/store/tracking/postgres_managed_identity.py +146 -0
  473. mlflow/store/tracking/rest_store.py +1131 -0
  474. mlflow/store/tracking/sqlalchemy_store.py +2785 -0
  475. mlflow/system_metrics/__init__.py +61 -0
  476. mlflow/system_metrics/metrics/__init__.py +0 -0
  477. mlflow/system_metrics/metrics/base_metrics_monitor.py +32 -0
  478. mlflow/system_metrics/metrics/cpu_monitor.py +23 -0
  479. mlflow/system_metrics/metrics/disk_monitor.py +21 -0
  480. mlflow/system_metrics/metrics/gpu_monitor.py +71 -0
  481. mlflow/system_metrics/metrics/network_monitor.py +34 -0
  482. mlflow/system_metrics/metrics/rocm_monitor.py +123 -0
  483. mlflow/system_metrics/system_metrics_monitor.py +198 -0
  484. mlflow/tracing/__init__.py +16 -0
  485. mlflow/tracing/assessment.py +356 -0
  486. mlflow/tracing/client.py +531 -0
  487. mlflow/tracing/config.py +125 -0
  488. mlflow/tracing/constant.py +105 -0
  489. mlflow/tracing/destination.py +81 -0
  490. mlflow/tracing/display/__init__.py +40 -0
  491. mlflow/tracing/display/display_handler.py +196 -0
  492. mlflow/tracing/export/async_export_queue.py +186 -0
  493. mlflow/tracing/export/inference_table.py +138 -0
  494. mlflow/tracing/export/mlflow_v3.py +137 -0
  495. mlflow/tracing/export/utils.py +70 -0
  496. mlflow/tracing/fluent.py +1417 -0
  497. mlflow/tracing/processor/base_mlflow.py +199 -0
  498. mlflow/tracing/processor/inference_table.py +175 -0
  499. mlflow/tracing/processor/mlflow_v3.py +47 -0
  500. mlflow/tracing/processor/otel.py +73 -0
  501. mlflow/tracing/provider.py +487 -0
  502. mlflow/tracing/trace_manager.py +200 -0
  503. mlflow/tracing/utils/__init__.py +616 -0
  504. mlflow/tracing/utils/artifact_utils.py +28 -0
  505. mlflow/tracing/utils/copy.py +55 -0
  506. mlflow/tracing/utils/environment.py +55 -0
  507. mlflow/tracing/utils/exception.py +21 -0
  508. mlflow/tracing/utils/once.py +35 -0
  509. mlflow/tracing/utils/otlp.py +63 -0
  510. mlflow/tracing/utils/processor.py +54 -0
  511. mlflow/tracing/utils/search.py +292 -0
  512. mlflow/tracing/utils/timeout.py +250 -0
  513. mlflow/tracing/utils/token.py +19 -0
  514. mlflow/tracing/utils/truncation.py +124 -0
  515. mlflow/tracing/utils/warning.py +76 -0
  516. mlflow/tracking/__init__.py +39 -0
  517. mlflow/tracking/_model_registry/__init__.py +1 -0
  518. mlflow/tracking/_model_registry/client.py +764 -0
  519. mlflow/tracking/_model_registry/fluent.py +853 -0
  520. mlflow/tracking/_model_registry/registry.py +67 -0
  521. mlflow/tracking/_model_registry/utils.py +251 -0
  522. mlflow/tracking/_tracking_service/__init__.py +0 -0
  523. mlflow/tracking/_tracking_service/client.py +883 -0
  524. mlflow/tracking/_tracking_service/registry.py +56 -0
  525. mlflow/tracking/_tracking_service/utils.py +275 -0
  526. mlflow/tracking/artifact_utils.py +179 -0
  527. mlflow/tracking/client.py +5900 -0
  528. mlflow/tracking/context/__init__.py +0 -0
  529. mlflow/tracking/context/abstract_context.py +35 -0
  530. mlflow/tracking/context/databricks_cluster_context.py +15 -0
  531. mlflow/tracking/context/databricks_command_context.py +15 -0
  532. mlflow/tracking/context/databricks_job_context.py +49 -0
  533. mlflow/tracking/context/databricks_notebook_context.py +41 -0
  534. mlflow/tracking/context/databricks_repo_context.py +43 -0
  535. mlflow/tracking/context/default_context.py +51 -0
  536. mlflow/tracking/context/git_context.py +32 -0
  537. mlflow/tracking/context/registry.py +98 -0
  538. mlflow/tracking/context/system_environment_context.py +15 -0
  539. mlflow/tracking/default_experiment/__init__.py +1 -0
  540. mlflow/tracking/default_experiment/abstract_context.py +43 -0
  541. mlflow/tracking/default_experiment/databricks_notebook_experiment_provider.py +44 -0
  542. mlflow/tracking/default_experiment/registry.py +75 -0
  543. mlflow/tracking/fluent.py +3595 -0
  544. mlflow/tracking/metric_value_conversion_utils.py +93 -0
  545. mlflow/tracking/multimedia.py +206 -0
  546. mlflow/tracking/registry.py +86 -0
  547. mlflow/tracking/request_auth/__init__.py +0 -0
  548. mlflow/tracking/request_auth/abstract_request_auth_provider.py +34 -0
  549. mlflow/tracking/request_auth/registry.py +60 -0
  550. mlflow/tracking/request_header/__init__.py +0 -0
  551. mlflow/tracking/request_header/abstract_request_header_provider.py +36 -0
  552. mlflow/tracking/request_header/databricks_request_header_provider.py +38 -0
  553. mlflow/tracking/request_header/default_request_header_provider.py +17 -0
  554. mlflow/tracking/request_header/registry.py +79 -0
  555. mlflow/transformers/__init__.py +2982 -0
  556. mlflow/transformers/flavor_config.py +258 -0
  557. mlflow/transformers/hub_utils.py +83 -0
  558. mlflow/transformers/llm_inference_utils.py +468 -0
  559. mlflow/transformers/model_io.py +301 -0
  560. mlflow/transformers/peft.py +51 -0
  561. mlflow/transformers/signature.py +183 -0
  562. mlflow/transformers/torch_utils.py +55 -0
  563. mlflow/types/__init__.py +21 -0
  564. mlflow/types/agent.py +270 -0
  565. mlflow/types/chat.py +240 -0
  566. mlflow/types/llm.py +935 -0
  567. mlflow/types/responses.py +139 -0
  568. mlflow/types/responses_helpers.py +416 -0
  569. mlflow/types/schema.py +1505 -0
  570. mlflow/types/type_hints.py +647 -0
  571. mlflow/types/utils.py +753 -0
  572. mlflow/utils/__init__.py +283 -0
  573. mlflow/utils/_capture_modules.py +256 -0
  574. mlflow/utils/_capture_transformers_modules.py +75 -0
  575. mlflow/utils/_spark_utils.py +201 -0
  576. mlflow/utils/_unity_catalog_oss_utils.py +97 -0
  577. mlflow/utils/_unity_catalog_utils.py +479 -0
  578. mlflow/utils/annotations.py +218 -0
  579. mlflow/utils/arguments_utils.py +16 -0
  580. mlflow/utils/async_logging/__init__.py +1 -0
  581. mlflow/utils/async_logging/async_artifacts_logging_queue.py +258 -0
  582. mlflow/utils/async_logging/async_logging_queue.py +366 -0
  583. mlflow/utils/async_logging/run_artifact.py +38 -0
  584. mlflow/utils/async_logging/run_batch.py +58 -0
  585. mlflow/utils/async_logging/run_operations.py +49 -0
  586. mlflow/utils/autologging_utils/__init__.py +737 -0
  587. mlflow/utils/autologging_utils/client.py +432 -0
  588. mlflow/utils/autologging_utils/config.py +33 -0
  589. mlflow/utils/autologging_utils/events.py +294 -0
  590. mlflow/utils/autologging_utils/logging_and_warnings.py +328 -0
  591. mlflow/utils/autologging_utils/metrics_queue.py +71 -0
  592. mlflow/utils/autologging_utils/safety.py +1104 -0
  593. mlflow/utils/autologging_utils/versioning.py +95 -0
  594. mlflow/utils/checkpoint_utils.py +206 -0
  595. mlflow/utils/class_utils.py +6 -0
  596. mlflow/utils/cli_args.py +257 -0
  597. mlflow/utils/conda.py +354 -0
  598. mlflow/utils/credentials.py +231 -0
  599. mlflow/utils/data_utils.py +17 -0
  600. mlflow/utils/databricks_utils.py +1436 -0
  601. mlflow/utils/docstring_utils.py +477 -0
  602. mlflow/utils/doctor.py +133 -0
  603. mlflow/utils/download_cloud_file_chunk.py +43 -0
  604. mlflow/utils/env_manager.py +16 -0
  605. mlflow/utils/env_pack.py +131 -0
  606. mlflow/utils/environment.py +1009 -0
  607. mlflow/utils/exception_utils.py +14 -0
  608. mlflow/utils/file_utils.py +978 -0
  609. mlflow/utils/git_utils.py +77 -0
  610. mlflow/utils/gorilla.py +797 -0
  611. mlflow/utils/import_hooks/__init__.py +363 -0
  612. mlflow/utils/lazy_load.py +51 -0
  613. mlflow/utils/logging_utils.py +168 -0
  614. mlflow/utils/mime_type_utils.py +58 -0
  615. mlflow/utils/mlflow_tags.py +103 -0
  616. mlflow/utils/model_utils.py +486 -0
  617. mlflow/utils/name_utils.py +346 -0
  618. mlflow/utils/nfs_on_spark.py +62 -0
  619. mlflow/utils/openai_utils.py +164 -0
  620. mlflow/utils/os.py +12 -0
  621. mlflow/utils/oss_registry_utils.py +29 -0
  622. mlflow/utils/plugins.py +17 -0
  623. mlflow/utils/process.py +182 -0
  624. mlflow/utils/promptlab_utils.py +146 -0
  625. mlflow/utils/proto_json_utils.py +743 -0
  626. mlflow/utils/pydantic_utils.py +54 -0
  627. mlflow/utils/request_utils.py +279 -0
  628. mlflow/utils/requirements_utils.py +704 -0
  629. mlflow/utils/rest_utils.py +673 -0
  630. mlflow/utils/search_logged_model_utils.py +127 -0
  631. mlflow/utils/search_utils.py +2111 -0
  632. mlflow/utils/secure_loading.py +221 -0
  633. mlflow/utils/security_validation.py +384 -0
  634. mlflow/utils/server_cli_utils.py +61 -0
  635. mlflow/utils/spark_utils.py +15 -0
  636. mlflow/utils/string_utils.py +138 -0
  637. mlflow/utils/thread_utils.py +63 -0
  638. mlflow/utils/time.py +54 -0
  639. mlflow/utils/timeout.py +42 -0
  640. mlflow/utils/uri.py +572 -0
  641. mlflow/utils/validation.py +662 -0
  642. mlflow/utils/virtualenv.py +458 -0
  643. mlflow/utils/warnings_utils.py +25 -0
  644. mlflow/utils/yaml_utils.py +179 -0
  645. mlflow/version.py +24 -0
@@ -0,0 +1,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
+