跳至主内容

用于生成式AI应用的版本跟踪

MLflow UI showing LoggedModel with linked traces for version tracking

生成式人工智能应用是具有相互依赖组件的复杂系统。没有系统化的版本控制,开发会变得混乱,部署则充满风险。

消除“昨天还能用”综合症

确切了解是哪种代码、提示和配置的组合产生了任何结果。使用完整的上下文重现成功并调试失败。

以数据驱动的信心进行部署

使用诸如质量评分、成本和延迟等指标对应用版本进行客观比较。根据证据而非直觉选择表现最好的版本。

跟踪每次更改的影响

保持生产可审计性

LoggedModel如何为GenAI版本控制提供支持

每个 LoggedModel 版本捕获了完整的应用程序状态——在一个版本化的实体中包含代码引用、配置、依赖项和性能数据。

将代码链接到外部 git 提交以实现轻量级版本控制,或将代码直接打包以进行部署。选择适合你工作流程的方法。

当您设置了一个激活的模型上下文后,所有后续的跟踪都会自动链接到该版本。无需手动记录。

在5分钟内开始版本跟踪

将混乱的生成式AI开发转变为系统化的版本控制,只需几行代码。

import mlflow
import openai
import os

# Fix: Added missing import
os.environ["OPENAI_API_KEY"] = "your-api-key-here"

# Configure MLflow experiment
mlflow.set_experiment("customer-support-agent")

# Get current git commit using MLflow's built-in utilities
from mlflow.utils.git_utils import get_git_commit

git_commit = get_git_commit(".")
if git_commit:
git_commit = git_commit[:8] # Use short hash
else:
git_commit = "local-dev" # Fallback if not in git repo

# Create version identifier
app_name = "customer_support_agent"
version_name = f"{app_name}-{git_commit}"

# Set active model context - all traces will link to this version
mlflow.set_active_model(name=version_name)

# Enable automatic tracing
mlflow.openai.autolog()

# Your application code - now automatically versioned and traced
client = openai.OpenAI()
test_questions = [
"How do I reset my password?",
"What are your business hours?",
"Can I get a refund for my order?",
]

for question in test_questions:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": question}],
temperature=0.7,
max_tokens=1000,
)
# ✅ Automatically: traced, versioned, and linked to git commit
  • 每次 LLM 调用都会生成详细的跟踪
  • 所有追踪都链接到您特定的应用程序版本
  • 可以客观地比较版本性能

让版本管理变得简单

# Create a new version for experimentation
with mlflow.set_active_model(name=f"agent-v2-{new_commit}"):
# Test new prompt engineering approach
improved_response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": "You are a helpful customer support agent. Be concise and actionable.",
},
{"role": "user", "content": question},
],
temperature=0.3, # Lower temperature for consistency
max_tokens=500, # More focused responses
)
# ✅ New version automatically tracked with different configurations

系统地比较版本

import pandas as pd

# Evaluate multiple versions against the same test set
eval_data = pd.DataFrame(
{
"inputs": test_questions,
"expected_categories": ["account", "business_info", "billing"],
}
)

# Version A: Original configuration
results_v1 = mlflow.evaluate(
model_uri=f"models:/{app_name}-{commit_v1}",
data=eval_data,
extra_metrics=[
mlflow.metrics.toxicity(),
mlflow.metrics.latency(),
mlflow.metrics.flesch_kincaid_grade_level(),
],
)

# Version B: Improved prompts
results_v2 = mlflow.evaluate(
model_uri=f"models:/{app_name}-{commit_v2}",
data=eval_data,
extra_metrics=[
mlflow.metrics.toxicity(),
mlflow.metrics.latency(),
mlflow.metrics.flesch_kincaid_grade_level(),
],
)

# ✅ Side-by-side comparison shows which version performs better

先决条件

准备实施系统化的版本跟踪吗?你需要:

  • MLflow 3.0+ (pip install --upgrade "mlflow>=3.1")
  • Git 仓库 用于存放您的应用程序代码
  • Python 3.10 及以上
  • LLM API 访问 (OpenAI、Anthropic 等)
tip

对于 Databricks 托管的 MLflow Tracking: pip install --upgrade "mlflow[databricks]>=3.1"


一旦掌握了基本的版本跟踪,请探索这些用于生产级生成式人工智能(GenAI)应用的高级模式。

从上面的代码示例开始,然后在应用变得更复杂时探索高级功能。