重要
此功能在 Beta 版中。
本指南介绍如何在生产环境的 GenAI 应用程序中使用 MLflow 提示注册表中的提示。
部署 GenAI 应用程序时,请将其配置为使用别名而不是硬编码版本从 MLflow 提示注册表加载提示。 此方法支持动态更新,而无需重新部署。
先决条件
安装 MLflow 和所需包
pip install --upgrade "mlflow[databricks]>=3.1.0"
请按照 设置环境快速指南 创建 MLflow 试验。
访问 Unity 目录中的
CREATE FUNCTION
- 为什么? 提示以函数的形式存储在 UC 中
步骤 1. 创建新提示
可以使用 Python SDK 以编程方式创建提示。
使用 mlflow.genai.register_prompt()
. 以编程方式创建提示。 提示对模板变量使用双大括号语法 ({{variable}}
)。
import mlflow
# Replace with a Unity Catalog schema where you have CREATE FUNCTION permission
uc_schema = "workspace.default"
# This table will be created in the above UC schema
prompt_name = "summarization_prompt"
# Define the prompt template with variables
initial_template = """\
Summarize content you are provided with in {{num_sentences}} sentences.
Content: {{content}}
"""
# Register a new prompt
prompt = mlflow.genai.register_prompt(
name=f"{uc_schema}.{prompt_name}",
template=initial_template,
# all parameters below are optional
commit_message="Initial version of summarization prompt",
version_metadata={
"author": "data-science-team@company.com",
"use_case": "document_summarization"
},
tags={
"task": "summarization",
"language": "en",
"model_compatibility": "gpt-4"
}
)
print(f"Created prompt '{prompt.name}' (version {prompt.version})")
步骤 2. 向提示版本添加别名
别名允许将静态字符串标记分配给特定的提示版本,从而更轻松地在生产应用程序中引用提示。 可以使用有意义的别名(例如 production
, staging
或 development
)而不是硬编码版本号。 需要更新生产提示时,只需重新分配 production
别名以指向较新版本,而无需更改或重新部署应用程序代码。
import mlflow
mlflow.genai.set_prompt_alias(
name=f"{uc_schema}.{prompt_name}",
alias="production",
version=1
)
步骤 3:在应用中引用提示
注册提示并分配别名后,可以使用提示 URI 格式在已部署的应用程序中引用它。 建议的方法是使用环境变量使应用程序变得灵活,并避免硬编码提示引用。
提示 URI 格式为: prompts:/{catalog}.{schema}.{prompt_name}@{alias}
使用我们在步骤 1 中注册的提示,URI 将为:
prompts://workspace.default.summarization_prompt@production
下面介绍如何在应用程序中引用提示:
import mlflow
import os
from typing import Optional
class ProductionApp:
def __init__(self):
# Use environment variable for flexibility
self.prompt_alias = os.getenv("PROMPT_ALIAS", "production")
self.prompt_name = os.getenv("PROMPT_URI", "workspace.default.summarization_prompt")
def get_prompt(self) -> str:
"""Load prompt from registry using alias."""
uri = f"prompts:/{self.prompt_name}@{self.prompt_alias}"
prompt = mlflow.genai.load_prompt(uri)
return prompt
# Rest of your application's code
# Example usage
app = ProductionApp()
prompt = app.get_prompt()
print(f"Loaded prompt: {prompt}")
后续步骤
- 将生产追踪链接到应用版本 - 跟踪生产中使用的提示词版本
- 在生产环境中运行记分器 - 监视已部署提示的质量
- 评估提示 - 在升级到生产之前测试新的提示版本