高级跟踪质量审查
跟踪包含除调试之外的丰富信息,可以推动您的 GenAI 应用程序实现系统性的质量改进。本指南展示了分析跟踪模式、从生产数据中提取评估数据集以及使用程序化分析衡量质量改进影响的高级技术。
分析跟踪模式以获取质量洞察
跟踪提供了关于您的应用程序如何处理用户请求的详细洞察,使您能够识别质量问题模式和改进机会。MLflow UI 提供了基本的筛选和可视化功能,但程序化分析可以解锁对质量模式的更深层洞察。
使用程序化查询进行定量分析
当您需要了解哪些特性导致质量问题时,您可以搜索具有特定模式的跟踪并分析它们的共同属性。使用搜索 API 可以轻松地对大量跟踪执行复杂分析。
import mlflow
import pandas as pd
# Search for traces with potential quality issues using tags
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 - check if quality issues correlate with token usage
if not traces_df.empty and "span.attributes.usage.total_tokens" in traces_df.columns:
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 注册数据集
准备好评估数据集后,将其注册到 MLflow 以便进行系统跟踪和重用。
import mlflow
# Log the evaluation dataset for tracking and reuse
with mlflow.start_run() as run:
mlflow.log_artifact("evaluation_dataset.csv", "evaluation_datasets")
mlflow.log_param("dataset_size", len(eval_df))
mlflow.log_param("data_source", "production_traces")
实施有针对性的改进
有了已识别的问题和评估数据集,您可以进行有针对性的改进,以解决通过跟踪分析发现的特定质量模式。
基于跟踪洞察的提示工程
根据您的跟踪分析中识别的特定故障模式,完善系统提示。为处理边缘情况添加更明确的指导,包括演示如何处理有问题输入的示例,并调整语气或风格以更好地满足用户期望。
通过在应用程序逻辑中实现验证步骤并在向用户呈现输出之前添加后处理,添加防护措施以防止常见的质量问题。
应用程序架构改进
如果您的应用程序使用检索机制,请在找不到相关文档时增强它们。检查跟踪中的检索范围以查看正在检索的内容,改进嵌入模型或检索算法,并考虑分块策略(如果文档段不理想)。
对于复杂的决策过程,通过将复杂任务分解为多个范围、实施思维链或其他推理技术以及为关键输出添加验证步骤来增加推理步骤。
衡量质量改进
实施更改后,使用 MLflow 通过系统评估和生产监控来衡量其影响。
使用精选数据集进行系统评估
使用您的精选数据集运行系统评估,以在真实生产场景中比较原始模型和改进后的模型。
import mlflow
from mlflow.evaluators import evaluate
# Compare the original and improved models on your dataset
results = mlflow.genai.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)
改进后的生产监控
部署改进后,通过设置仪表板来跟踪随时间变化的质量指标、监控退化或意外行为,并持续收集新的跟踪以识别新兴问题,从而监控生产跟踪。
这种系统方法确保您的改进具有可衡量的影响,并有助于识别更改的任何意外后果。
与质量改进工作流程的集成
当高级跟踪分析集成到系统性质量改进流程中时,其价值最大。利用跟踪洞察来识别改进机会,实施有针对性的更改,并通过持续的跟踪分析衡量其有效性。
考虑设置自动化分析管道,定期检查跟踪模式,标记质量下降,并根据新的生产交互生成评估数据集。这创建了一个持续的反馈循环,您的生产数据直接为质量改进提供信息。
后续步骤
搜索跟踪:掌握跟踪分析的高级过滤和查询技术。
收集用户反馈:设置结构化的反馈收集以进行质量评估。
生产监控:实施全面的生产可观察性。
GenAI 评估:使用系统评估框架进行质量评估。
质量改进在基于真实生产数据时最有效。使用跟踪分析来识别实际用户痛点而不是假设问题,并使用相同的跟踪数据来衡量改进,以确保您的更改具有实际影响。
总结
高级跟踪质量审查通过对生产交互的系统分析,实现数据驱动的质量改进。通过定量指标和定性检查对跟踪模式进行分析,您可以识别影响用户体验的常见故障模式和质量问题。
从真实跟踪中构建评估数据集可确保您的测试反映实际使用模式而非合成场景,而使用 MLflow 进行系统评估则提供了质量改进的具体衡量。这种方法将跟踪从调试工具转变为一个全面的质量智能系统,用于 GenAI 应用程序的持续改进。