MLflow定制评委是基于LLM的评分器,允许你用自然语言为代理制定复杂且细致的评分指南。
虽然 MLflow 内置的 LLM 评判标准为常见质量维度提供了出色的起点,但使用make_judge()自定义的评判标准可以完全控制评估标准。
提示信息和模板变量
为了创建评委,您需要提供用自然语言编写的说明来评估代理的质量。
make_judge() 接受模板变量以访问代理的输入、输出、预期输出或行为,甚至完成跟踪。
说明必须至少包含一个模板变量,但不需要使用所有这些模板变量。
{{ inputs }}- 向代理提供的输入数据{{ outputs }}- 输出代理生成的数据{{ expectations }}- 实际数据或预期结果{{ trace }}- 代理的完整的运行轨迹
这是唯一允许的变量。 自定义变量(例如 {{ question }} 将引发验证错误)以确保一致的行为并防止模板注入问题。
现场裁判
最简单的自定义评估器会根据单次交互的各个字段进行评分:请求({{ inputs }})、代理的响应({{ outputs }}),以及在有标准答案时的预期答案({{ expectations }})。 用它们评估响应质量,而无需检查代理的内部步骤。
以下示例定义了一个法官,用于检查回答是否符合预期答案:
from mlflow.genai.judges import make_judge
from typing import Literal
# Field-based judge: compare the response to the expected answer
correctness_judge = make_judge(
name="answer_correctness",
instructions=(
"Given the request in {{ inputs }}, decide whether the response in "
"{{ outputs }} matches the expected answer in {{ expectations }}.\n\n"
"Return 'correct' only if the response conveys the same facts as the "
"expected answer. Otherwise, return 'incorrect'."
),
feedback_value_type=Literal["correct", "incorrect"],
)
与基于跟踪的评估器不同,基于字段的评估器不需要你指定 model——它们会在默认的评估器模型上运行。 如果没有地面真实值,比如仅凭输入输出来评分音调或格式化,就省略 {{ expectations }} 。
基于跟踪的评审员
基于轨迹的审查员分析执行轨迹,以便了解代理执行期间发生的情况。 它们使用模型上下文协议 (MCP) 工具自主探索跟踪,并且可以:
验证工具使用模式
查明性能瓶颈
调查执行失败
验证多步骤工作流
以下示例定义一个评估器,通过分析记录来评估工具调用的正确性。
from mlflow.genai.judges import make_judge
from typing import Literal
# Agent judge for tool calling correctness
tool_usage_judge = make_judge(
name="tool_usage_validator",
instructions=(
"Analyze the {{ trace }} to verify correct tool usage.\n\n"
"Check that the agent selected appropriate tools for the user's request "
"and called them with correct parameters."
),
feedback_value_type=Literal["correct", "incorrect"],
model="databricks:/databricks-gpt-5-mini" # Required for trace-based judges
)
要使基于跟踪的分析员分析完整的跟踪,必须在 model 中指定 make_judge() 参数。
有关完整教程,请参阅创建自定义评审,使用make_judge()。
基于跟踪的法官的模型要求
基于跟踪的法官需要一个能够进行跟踪分析的模型。 模型可通过以下方式提供:
建议的模型:
databricks:/databricks-gpt-5-minidatabricks:/databricks-gpt-5databricks:/databricks-gpt-oss-120bdatabricks:/databricks-claude-opus-4-5
编写法官说明的最佳做法
特定于预期的输出格式。 说明应明确指定评判者应返回的格式。
分类响应:列出特定值(例如,“fully_resolved”、“partially_resolved”、“needs_follow_up”)
布尔响应:明确声明法官应返回
true或false数值分数:指定评分范围以及每个分数的含义
分解复杂的评估。 对于复杂的评估任务,请将说明结构化为明确的部分:
要评估的内容
要审查的信息
如何做出判断
要返回的格式
使法官与人类专家保持一致
基础评判标准是一个起点。 收集有关应用程序输出的专家反馈时,可以将 LLM 评委与反馈保持一致,以进一步提高法官的准确性。 请参阅将 LLM 评分标准与人类反馈对齐。
后续步骤
有关基于标准和跟踪的评测器的实践教程,请参阅 创建自定义评测器。
下一步:基于代码的记分员