跳到主要内容

MLflow Prompt 数据模型

MLflow Prompt 注册表 提供了一种结构化方法,通过版本化、可重用的 prompt 实体来管理 GenAI 应用程序的 prompt 模板。Prompt 数据模型使您能够在整个组织中实现系统化的 prompt 工程、版本控制和部署管理。

概述

MLflow Prompt 数据模型围绕着 Prompt 实体构建,它代表一个版本化的模板,具有全面的元数据和生命周期管理能力。

作为版本化实体的 Prompt

集中式模板管理

Prompt 实体为模板定义提供了单一的事实来源,从而实现跨多个应用程序和团队的一致重用,同时维护版本历史和变更跟踪。

受 Git 启发的版本控制

Prompt 版本控制遵循类似 Git 的原则,具有顺序版本号、描述变更的提交消息,以及确保可重现性和回滚能力的不可变版本。

动态变量支持

模板支持使用双大括号语法({{variable}})进行变量插值,从而实现灵活的内容生成,同时保持模板结构和可重用性。

Prompt 核心属性

身份和内容

每个 Prompt 都具有基本的识别和内容属性

模板结构

Prompt 模板支持复杂的变量插值

# Example template with variables
template = """
You are an expert {{ role }}. Analyze the following {{ content_type }} and provide {{ num_points }} key insights.

Content: {{ content }}

Requirements:
- Focus on {{ focus_area }}
- Use {{ tone }} tone
- Limit response to {{ max_length }} words
"""

# Variables automatically extracted: role, content_type, num_points, content, focus_area, tone, max_length

标签

使用 tags 存储特定于版本的信息,例如变更的作者。

# Register prompt with comprehensive tags
prompt = mlflow.genai.register_prompt(
name="content-analyzer",
template=template,
commit_message="Added tone and length controls",
tags={
"author": "ai-team@company.com",
"purpose": "Content analysis with customizable output",
"model": "gpt-4",
"performance_score": "0.92",
"review_status": "approved",
},
)

Prompt 生命周期管理

创建和版本控制

Prompts 遵循系统化的生命周期,具有清晰的创建和更新模式

别名管理

别名提供对 prompt 版本的可变引用,以实现灵活部署

Prompt 使用模式

加载和格式化

Prompts 通过系统化模式加载和使用

# Load specific version
prompt = mlflow.genai.load_prompt("prompts:/summarization-prompt/2")

# Format with variables
formatted_text = prompt.format(
num_sentences=3, content="Your content here...", tone="professional"
)

框架集成

Prompts 与流行的 GenAI 框架无缝集成

# Integration with LangChain
from langchain.prompts import PromptTemplate

# Load from MLflow and convert format
mlflow_prompt = mlflow.genai.load_prompt("prompts:/qa-prompt/1")
langchain_prompt = PromptTemplate.from_template(mlflow_prompt.to_single_brace_format())

# Integration with OpenAI
import openai

client = openai.OpenAI()
response = client.chat.completions.create(
messages=[
{"role": "user", "content": mlflow_prompt.format(question="What is MLflow?")}
],
model="gpt-4",
)

Prompt 比较与演进

版本比较

MLflow 为 prompt 演进提供了内置的比较功能

以 Prompt 为中心的组织优势

集中管理

Prompt 注册表提供了**统一的模板存储**,消除了应用程序中分散的 prompt 定义,**版本控制**,维护完整的变更历史和回滚能力,**协作开发**,支持团队共享和审查流程,以及**一致性强制**,确保项目间 prompt 使用的标准化。

开发效率

Prompt 实体通过跨多个应用程序共享模板实现**可重用性**,通过版本比较和性能跟踪实现**系统化测试**,使用别名进行特定环境部署的**部署灵活性**,以及与任何 GenAI 库或服务的**框架无关**集成。

质量保证

结构化方法支持**变更跟踪**,带有详细的提交消息和元数据,通过集成指标和反馈进行**性能监控**,通过共享访问和版本比较进行**协作审查**,以及通过不可变版本和别名管理实现**回滚安全性**。

Prompt 管理最佳实践

命名与组织

**描述性命名**应使用清晰、一致的名称,反映 prompt 的目的和领域。**逻辑分组**可以利用标签进行功能和组织分类。**版本策略**需要有意义的提交消息,记录变更和改进。**别名策略**应明确别名的目的,例如生产、预发布和开发。

模板设计

**变量设计**应使用描述性的变量名,清晰地指示预期内容。**文档**必须包含内联注释和全面的元数据,以便于模板使用。**模块化**应尽可能将复杂的 prompt 分解为可重用组件。**测试**需要在不同的输入场景和边界情况下进行系统验证。

生命周期管理

**版本规划**应为创建新版本与次要更新建立明确的标准。**性能跟踪**需要监控 prompt 的有效性和用户满意度指标。**部署协调**需要跨环境同步别名更新。**归档管理**应建立管理旧版本和清理程序的策略。

Prompt 注册表入门

创建和管理 prompt 涉及几个关键步骤

**注册您的第一个 prompt**,使用 mlflow.genai.register_prompt() 并附带全面的元数据和清晰的提交消息。**建立版本工作流**,通过为重大变更创建新版本并使用描述性提交消息。**实施别名策略**,为不同的环境和用例设置别名。**与应用程序集成**,通过 mlflow.genai.load_prompt() 加载 prompt 并使用动态变量进行格式化。

# Complete workflow example
import mlflow

# 1. Register initial prompt
prompt = mlflow.genai.register_prompt(
name="customer-support",
template="You are a helpful {{ role }}. Please {{ action }} for: {{ query }}",
commit_message="Initial customer support template",
tags={"domain": "support", "language": "en"},
)

# 2. Create production alias
mlflow.set_prompt_alias("customer-support", "production", 1)

# 3. Load and use in application
production_prompt = mlflow.genai.load_prompt("prompts:/customer-support@production")
formatted = production_prompt.format(
role="customer service agent",
action="provide assistance",
query="How do I reset my password?",
)

后续步骤

**Prompt 管理指南** 提供了关于有效创建、版本控制和管理 prompt 的全面指导。**MLflow UI 导航** 帮助您掌握探索和管理 prompt 的界面。

MLflow Prompt 注册表为系统化的 prompt 工程提供了基本框架,使团队能够自信地协作构建、版本化和部署高质量的 prompt 模板。