重要
此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 管理 Azure Databricks 预览版。
本指南介绍如何在生产环境的 GenAI 应用程序中使用 MLflow 提示注册表中的提示。
部署 GenAI 应用程序时,请将其配置为使用别名而非硬编码版本从 MLflow 提示注册表加载提示。 此方法支持动态更新,而无需重新部署。
先决条件
安装 MLflow 和所需包
pip install --upgrade "mlflow[databricks]>=3.1.0"请按照设置环境快速入门创建 MLflow 试验。
验证你是否有权访问具有
CREATE FUNCTION、EXECUTE和MANAGE权限的 Unity Catalog 架构以使用提示注册表。
步骤 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",
tags={
"author": "data-science-team@company.com",
"use_case": "document_summarization",
"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
mlflow.set_tracking_uri("databricks")
mlflow.set_registry_uri("databricks-uc")
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}")
版本管理工作流
别名使你可以在开发过程中对提示进行迭代,并在不同环境中逐步推行它们,而无需更改应用程序代码。
开发工作流
在提升到生产之前,使用开发别名测试提示更改:
from datetime import datetime
import mlflow
def develop_prompt(base_name: str, changes: str):
"""Iterate on prompts during development."""
# Register new version
new_version = mlflow.genai.register_prompt(
name=base_name,
template=changes,
commit_message=f"Dev iteration: {datetime.now()}"
)
# Update dev alias
mlflow.genai.set_prompt_alias(
name=base_name,
alias="dev",
version=new_version.version
)
return new_version
促销流程
通过重新分配别名在不同环境之间传递提示信息。
import mlflow
def promote_prompt(name: str, from_env: str, to_env: str):
"""Promote prompt from one environment to another."""
# Get current version in source environment
source = mlflow.genai.load_prompt(f"prompts:/{name}@{from_env}")
# Point target environment to same version
mlflow.genai.set_prompt_alias(
name=name,
alias=to_env,
version=source.version
)
print(f"Promoted {name} v{source.version} from {from_env} to {to_env}")
别名策略
根据团队的部署模式设计别名策略。 以下示例演示了常见方法:
import mlflow
# Standard environment aliases
ENVIRONMENT_ALIASES = ["dev", "staging", "production"]
# Feature branch aliases
def create_feature_alias(prompt_name: str, feature: str, version: int):
"""Create alias for feature development."""
mlflow.genai.set_prompt_alias(
name=prompt_name,
alias=f"feature-{feature}",
version=version
)
# Regional aliases
REGIONAL_ALIASES = {
"us": "production-us",
"eu": "production-eu",
"asia": "production-asia"
}
# Rollback-ready aliases
def safe_production_update(name: str, new_version: int):
"""Update production with rollback capability."""
try:
# Save current production
current = mlflow.genai.load_prompt(f"prompts:/{name}@production")
mlflow.genai.set_prompt_alias(name, "production-previous", current.version)
except:
pass # No current production
# Update production
mlflow.genai.set_prompt_alias(name, "production", new_version)
使用 Mosaic AI Agent Framework,将提示注册表与已部署的代理配合使用
若要从使用代理框架部署的代理访问提示注册表,必须使用手动身份验证并替代安全环境变量来配置 Databricks 客户端以连接到注册表。
重要
重写这些安全环境变量将会关闭对于你的代理依赖的其他资源的自动传输功能。
后续步骤
- 将生产追踪链接到应用版本 - 跟踪生产环境中使用的提醒版本
- 在生产环境中运行记分器 - 监视已部署提示的质量
- 评估提示 - 在升级到生产之前测试新的提示版本