Files
myWiki/concepts/drift-detection.md

50 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "漂移检测 (Drift Detection)"
created: 2026-06-10
updated: 2026-06-10
type: concept
tags: [observability, llm, monitoring, drift]
sources: [raw/articles/pydantic-three-piece-suite-2026.md]
---
# 漂移检测 (Drift Detection)
> 监控 LLM 输出结构随时间变化的趋势检测技术——在"第 47 次报错"之前,从"第 32 次开始不对劲"时就看到信号。
## 问题
LLM 输出的 JSON 错误模式是**漂移的**而非稳定的:
- 第 1 次:字段名少了下划线
- 第 47 次:多了未定义的字段
- 第 89 次str 类型塞了 None
传统 `model_validate` 只能告诉你某次校验失败,不能告诉你**趋势**——哪些字段一直在漂?哪个模型最不稳定?
## 检测维度
- **字段漂移**:哪些字段的校验失败频率在上升?
- **类型漂移**:哪些字段的类型不匹配越来越频繁?
- **Token 成本漂移**:输出格式崩塌是否伴随 token 消耗激增?
- **Tool 调用漂移**Agent 调用某个 tool 的频率是否异常变化?
## 实现方式
[[logfire|Logfire]] 提供了基于 SQL 查询的漂移检测——不是点按钮过滤,是写 SQL 查 trace
```sql
SELECT tool_name, count(*) as calls
FROM traces
WHERE time_range = '7d'
GROUP BY tool_name ORDER BY calls DESC
```
## 真实案例
Sophos 安全团队Agent 调用某个 tool 的频率从每 50 次推理 1 次涨到每 8 次 1 次——不是业务量涨了,是 Agent 学"聪明"了。传统日志只报告调用成功SQL 查询揭示了频率异常。
## 参考
- [[logfire|Logfire]]
- [[agent-observability|Agent 可观测性]]
- [[structured-output|结构化输出]]