跳到主要内容

使用 MLflow 评估 LLM/Agents

现代 GenAI 评估

本文档涵盖了 MLflow 的 GenAI 评估系统,该系统使用

  • mlflow.genai.evaluate() 进行评估
  • Scorer 对象用于指标
  • 内置和自定义 LLM 裁判

注意:此系统与使用 mlflow.evaluate()EvaluationMetric经典 ML 评估系统分开。这两个系统服务于不同的目的,并且不兼容。

MLflow 的评估和监控功能可帮助您在从开发到生产的整个生命周期中,系统地衡量、改进和维护 GenAI 应用程序的质量。

Prompt Evaluation

MLflow 评估能力的核心原则是“以评促建” (Evaluation-Driven Development)。这是一种新兴的实践,旨在应对构建高质量 LLM/Agentic 应用程序的挑战。MLflow 是一个端到端平台,旨在支持这一实践,并帮助您自信地部署 AI 应用程序。

Evaluation Driven Development

主要功能

创建和维护高质量数据集

在评估您的 GenAI 应用程序之前,您需要测试数据。评估数据集提供了一个集中的存储库,用于大规模管理测试用例、地面真相期望和评估数据。

将评估数据集视为您的“测试数据库”——用于评估 AI 系统所需的所有数据的单一事实来源。它们将临时测试转化为系统化的质量保证。

了解更多 →

Trace Dataset

运行评估

每次评估由三个组件定义

组件示例
数据集
输入和期望(以及可选的预生成输出和追踪记录)
[
{"inputs": {"question": "2+2"}, "expectations": {"answer": "4"}},
{"inputs": {"question": "2+3"}, "expectations": {"answer": "5"}}
]
评分器
评估标准
@scorer
def exact_match(expectations, outputs):
return expectations == outputs
预测函数
为数据集生成输出
def predict_fn(question: str) -> str:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": question}]
)
return response.choices[0].message.content

以下示例展示了一个对问题和预期答案数据集的简单评估。

import os
import openai
import mlflow
from mlflow.genai.scorers import Correctness, Guidelines

client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# 1. Define a simple QA dataset
dataset = [
{
"inputs": {"question": "Can MLflow manage prompts?"},
"expectations": {"expected_response": "Yes!"},
},
{
"inputs": {"question": "Can MLflow create a taco for my lunch?"},
"expectations": {
"expected_response": "No, unfortunately, MLflow is not a taco maker."
},
},
]


# 2. Define a prediction function to generate responses
def predict_fn(question: str) -> str:
response = client.chat.completions.create(
model="gpt-4o-mini", messages=[{"role": "user", "content": question}]
)
return response.choices[0].message.content


# 3.Run the evaluation
results = mlflow.genai.evaluate(
data=dataset,
predict_fn=predict_fn,
scorers=[
# Built-in LLM judge
Correctness(),
# Custom criteria using LLM judge
Guidelines(name="is_english", guidelines="The answer must be in English"),
],
)

查看结果

打开 MLflow UI 来查看评估结果。如果您使用的是 OSS MLflow,可以使用以下命令启动 UI

mlflow ui --port 5000

如果您使用的是基于云的 MLflow,请在该平台中打开实验页面。您应该会在“Runs”选项卡下看到一个新的评估运行。点击运行名称即可查看评估结果。

Evaluation Results

后续步骤