跟踪不仅仅是用于调试,它们还包含有价值的信息,这些信息可以促进 GenAI 应用程序中的系统质量改进。 本指南介绍如何分析跟踪以识别质量问题、从跟踪数据创建评估数据集、实现有针对性的改进以及衡量更改的影响。
分析踪迹以识别质量问题
跟踪提供有关应用程序如何处理用户请求的详细见解。 通过分析这些跟踪,可以识别质量问题的模式:
定量分析
使用 MLflow UI 筛选和分组具有类似特征的跟踪:
- 按特定标记进行筛选(例如)
tag.issue_type = "hallucination"
- 搜索包含特定输入或输出的痕迹
- 按元数据排序,例如延迟或令牌使用情况
- 按特定标记进行筛选(例如)
通过编程方式查询跟踪信息以进行更高级的分析:
import mlflow
import pandas as pd
# Search for traces with potential quality issues
traces_df = mlflow.search_traces(
filter_string="tag.quality_score < 0.7",
max_results=100,
extract_fields=["span.end_time", "span.inputs.messages", "span.outputs.choices", "span.attributes.usage.total_tokens"]
)
# Analyze patterns
# For example, check if quality issues correlate with token usage
correlation = traces_df["span.attributes.usage.total_tokens"].corr(traces_df["tag.quality_score"])
print(f"Correlation between token usage and quality: {correlation}")
定性分析
查看表示常见故障模式的单条跟踪记录。
- 检查导致低质量输出的输入
- 查找应用程序如何处理这些情况的模式
- 识别缺少的上下文或错误推理
比较高质量跟踪与低质量跟踪:
- 应用程序处理这些不同输入的方式有何不同?
- 是否有特定类型的查询持续导致质量问题?
从跟踪数据创建评估数据集
确定具有代表性的跟踪后,可以将其精心整理为评估数据集,以便进行系统测试。
- 将跟踪导出到数据集:
import mlflow
import pandas as pd
# Query traces that represent important test cases
traces_df = mlflow.search_traces(
filter_string="trace.timestamp > '2023-07-01'",
max_results=500,
extract_fields=["span.inputs.messages", "span.outputs.choices"]
)
# Prepare dataset format
eval_data = []
for _, row in traces_df.iterrows():
# Extract user query from messages
messages = row["span.inputs.messages"]
user_query = next((msg["content"] for msg in messages if msg["role"] == "user"), None)
# Extract model response
response = row["span.outputs.choices"][0]["message"]["content"] if row["span.outputs.choices"] else None
if user_query and response:
eval_data.append({"input": user_query, "output": response})
# Create evaluation dataset
eval_df = pd.DataFrame(eval_data)
eval_df.to_csv("evaluation_dataset.csv", index=False)
添加基本事实或预期输出:
- 对于每个跟踪,请添加正确的或预期的输出
- 包括要评估的质量指标或特定方面
- 请考虑利用域专家来评审和批注数据集
将数据集注册到 MLflow:
import mlflow
# Log the evaluation dataset
with mlflow.start_run() as run:
mlflow.log_artifact("evaluation_dataset.csv", "evaluation_datasets")
实现有针对性的改进
通过手头识别的问题和评估数据集,可以进行有针对性的改进:
提示工程
优化系统提示 以解决特定故障模式:
- 添加用于处理边缘事例的更明确的准则
- 包含演示如何处理有问题的输入的示例
- 调整音调或样式以更好地满足用户期望
添加防护措施 以防止常见的质量问题:
- 在应用程序逻辑中实现验证步骤
- 在向用户显示输出之前添加后处理以检查输出
应用程序体系结构改进
如果未找到相关文档,则增强检索机制:
- 检查跟踪中的检索范围以查看正在检索的内容
- 改进嵌入模型或检索算法
- 如果文档部分欠佳,请考虑使用分块策略
将推理步骤添加到 复杂的决策过程:
- 将复杂任务分解为多个步骤或部分
- 实现思考链或其他推理技术
- 为关键输出添加验证步骤
衡量质量改进
实现更改后,使用 MLflow 来衡量其影响:
- 进行系统评估,使用您的特选数据集:
import mlflow
from mlflow.evaluators import evaluate
# Compare the original and improved models on your dataset
results = mlflow.evaluate(
data="evaluation_dataset.csv",
model=improved_model, # Your improved model/application
baseline_model=original_model, # The original version for comparison
evaluators=["mlflow_model"],
evaluator_config={
"custom_metrics": [
# Define your quality metrics here
]
}
)
# View the results
print(results.metrics)
- 部署改进后监控生产跟踪:
- 设置仪表板以跟踪一段时间内的质量指标
- 监视退步或意外行为
- 持续收集新迹象来识别新兴问题
后续步骤
继续您的旅程,并参考这些推荐的行动和教程。
参考指南
浏览本指南中提到的概念和功能的详细文档。
- 通过 SDK 查询跟踪 - 了解程序化跟踪分析技术
- 评估概念 - 了解记分器、评委和评估方法
- 跟踪数据模型 - 浏览跟踪结构和属性
小窍门
质量改进是一个迭代过程。 从最关键的质量问题开始,实施有针对性的改进,衡量其影响并重复。