跳到主要内容

反馈概念

什么是反馈?

MLflow 中的反馈代表对您的 GenAI 应用程序输出执行的任何质量评估的结果。它提供了一种标准化的方式来捕获评估,无论它们来自自动化系统、LLM 判断还是人工审核员。

反馈充当运行您的应用程序和理解其质量之间的桥梁,使您能够系统地跟踪不同维度(如正确性、相关性、安全性以及对指南的遵守情况)的性能。

Feedbacks attached to traces

附加到跟踪的反馈

用例

手动质量检查

手动质量检查对于确保您的 GenAI 应用程序的质量非常重要。例如,您可以附加一个反馈来指示响应中的幻觉,并比较不同模型之间的质量。

最终用户反馈

来自最终用户的反馈对于提高您的 GenAI 应用程序的质量非常宝贵。通过将反馈存储在您的跟踪上,您可以轻松地随着时间的推移监控您的应用程序的用户满意度。

LLM 判断评估

LLM 判断是用于大规模系统地运行质量检查的强大工具。使用 MLflow 的 GenAI 评估时,来自 LLM 判断的反馈会附加到跟踪,使您能够以与手动质量检查统一的方式跟踪评估结果。

协同注释

质量检查通常由多个注释者执行,以确保输出的稳健性。MLflow 跟踪反馈的元数据和修订历史,并支持来自多个注释者的反馈聚合。

核心结构

Feedback Architecture

反馈通常由不同的来源创建,例如人工注释者、LLM 判断或应用程序中的真实用户反馈。MLflow 中的 Feedback 对象是一个标准容器,用于存储这些信号以及元数据,以跟踪它们是如何创建的。反馈与跟踪或跟踪中的特定跨度相关联。

反馈对象模式

字段类型描述
名称字符串一个字符串,用于标识要评估的特定质量方面
任何实际的反馈值,可以是

  • 数值分数(例如,0.01.015
  • 布尔值 (True/False)
  • 分类标签(例如,"PASS""FAIL""EXCELLENT"
  • 结构化数据(例如,{"score": 0.8, "confidence": 0.9}
理由字符串一个字符串,用于解释为什么向跟踪提供反馈。
来源AssessmentSource反馈的来源,由来源类型和 ID 组成。

  • HUMAN:代表人工审核。ID 可以是注释者的标识符,例如姓名、帐户、电子邮件等。
  • LLM_JUDGE:代表基于 LLM 的评估。ID 可能是判断模型的名称,例如 "openai:/4o-mini"。
  • CODE:代表任何其他编程检查。
错误Optional[AssessmentError]与反馈关联的可选错误。这用于指示反馈未成功处理,例如,来自 LLM 判断执行的异常。
元数据Optional[dict[str, str]]与反馈关联的可选键值对。
create_time_ms整数创建反馈时的时间戳,以毫秒为单位。
last_update_time_ms整数更新反馈时的时间戳,以毫秒为单位。
trace_id字符串反馈所附加到的跟踪的 ID。
span_idOptional[字符串]反馈所附加到的跨度的 ID,如果它与跟踪中的特定跨度相关联。例如,您可以向 RAG 应用程序中的特定检索器输出提供反馈。

反馈示例

对响应中幻觉的人工反馈

{
"name": "hallucination",
"value": false,
"rationale": "The response is factual and does not contain any hallucinations.",
"source": {
"source_type": "HUMAN",
"source_id": "john@example.com"
}
}

LLM 判断关于事实准确性的反馈

{
"name": "factual_accuracy",
"value": 0.85,
"rationale": "The response correctly identifies 3 out of 4 key facts about MLflow, but incorrectly states the founding year.",
"source": {
"source_type": "LLM_JUDGE",
"source_id": "openai:/4o-mini"
},
"metadata": {
# Store link to the prompt used for the judge, registered in MLflow Prompt Registry
"judge_prompt": "prompts:factual_accuracy_judge/1"
}
}

来自 LLM 判断的错误反馈(超出速率限制)

{
"name": "safety",
"error": {
"error_code": "RATE_LIMIT_EXCEEDED",
"error_message": "Rate limit for the judge exceeded.",
"stack_trace": "..."
},
"source": {
"source_type": "LLM_JUDGE",
"source_id": "openai:/4o-mini"
}
}