跳到主要内容

收集用户反馈

捕获用户反馈对于了解您的 GenAI 应用程序的实际质量至关重要。MLflow 的 Feedback API 提供了一种结构化、标准化的方法,可以直接在您的跟踪记录中收集、存储和分析用户反馈。

为何使用 MLflow Feedback 来收集用户反馈?

直接跟踪集成

反馈直接链接到特定的应用程序执行,从而在用户反应和系统性能之间建立即时联系。

结构化数据模型

带有清晰归属和理由的标准格式可确保在整个应用程序中一致地收集反馈。

生产就绪

在 OSS MLflow 3.2.0+ 中提供,无需外部依赖项,专为高吞吐量生产环境而设计。

完整的审计跟踪

使用时间戳和用户归属跟踪每个反馈更改,从而能够随着时间的推移进行全面的质量分析。

分步指南:收集用户反馈

1. 使用跟踪设置您的 GenAI 应用程序

首先,创建一个简单的应用程序,该应用程序使用 MLflow 的 OpenAI 自动日志记录来自动生成跟踪记录。

import mlflow
from mlflow.entities import AssessmentSource, AssessmentSourceType
import openai

# Enable automatic tracing for OpenAI calls
mlflow.openai.autolog()

# Initialize your LLM client
client = openai.OpenAI()


def ask_question(question):
"""Simple Q&A application with automatic tracing."""
# This call is automatically traced by MLflow
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": "You are a helpful assistant. Answer questions clearly and concisely.",
},
{"role": "user", "content": question},
],
temperature=0.7,
)

answer = response.choices[0].message.content
return answer


# Generate some traces - each call creates a trace automatically
question = "What is machine learning?"
answer = ask_question(question)
print(f"Question: {question}")
print(f"Answer: {answer}")

# You can get the trace ID from the MLflow UI or search API
# For this example, we'll show how to collect feedback programmatically

2. 收集简单的“赞”/“踩”反馈

实现基本的布尔值反馈收集。在实际应用程序中,您将从跟踪系统中获取 trace_id。

def collect_thumbs_feedback(trace_id, is_helpful, user_id):
"""Collect simple thumbs up/down feedback from users."""
mlflow.log_feedback(
trace_id=trace_id,
name="user_satisfaction",
value=is_helpful,
rationale="User indicated response was helpful"
if is_helpful
else "User indicated response was not helpful",
source=AssessmentSource(
source_type=AssessmentSourceType.HUMAN, source_id=user_id
),
)
print(f"✓ Feedback recorded: {'👍' if is_helpful else '👎'}")


# Example: Collect feedback on a trace
trace_id = mlflow.get_last_active_trace_id()
collect_thumbs_feedback(trace_id, True, "user_123")

3. 在 MLflow UI 中查看反馈

收集反馈后,您可以在 MLflow UI 中查看它。

Feedback in MLflow UI

跟踪详细信息页面显示附加到您的跟踪记录的所有反馈,从而可以轻松地分析用户满意度并识别应用程序性能中的模式。

4. 通过 UI 添加和更新反馈

用户还可以直接通过 MLflow UI 提供反馈。

创建新反馈

Create Feedback

添加附加反馈

Additional Feedback

这种协作方法支持程序化反馈收集和手动审查工作流。

反馈值类型

MLflow 反馈支持各种格式以满足您的应用程序需求。

反馈类型描述示例用途
布尔值简单的 True/False 反馈“赞”/“踩”,正确/不正确
数值整数或浮点数评分1-5 星评分,置信度得分
分类字符串分类“有用”,“中立”,“无用”
结构化具有多个维度的复杂对象详细的质量细分

MLflow 反馈收集最佳实践

从布尔值反馈开始

对简单的“赞”/“踩”收集使用 MLflow 的布尔值反馈类型。分析了 MLflow 的搜索 API 中的模式后,再扩展到数值评分或结构化反馈类型。

将反馈链接到新的跟踪记录

在生成跟踪记录后立即收集反馈,此时交互上下文可用。MLflow 的直接跟踪-反馈链接可确保您始终拥有完整的执行上下文。

使用一致的命名约定

在跟踪记录中标准化反馈名称,例如“user_satisfaction”或“quality_rating”。这使得 MLflow 的搜索和聚合功能能够在您的应用程序中提供有意义的见解。

正确使用来源归属

在 AssessmentSource 对象中设置有意义的 source_id 值以跟踪反馈提供者。MLflow 保留带有时间戳和来源归属的完整审计跟踪。

结合程序化和 UI 收集

使用 MLflow 的 API 进行自动化收集,使用 UI 进行手动审查。这两种方法无缝集成,允许不同的团队通过其首选界面贡献反馈。

后续步骤