AI 应用可观测:LLM 调用的追踪与评估#
传统可观测管的是"系统没挂",AI 应用要管的更多:“回答变差了” 这种问题,日志里根本没有——它不是报错,是质量退化。LLM 应用的可观测是三层:追踪(调用链)→ 成本(token 审计)→ 质量(回答评估)。
一、先看传统监控为什么不够#
AI 可观测的核心:把"LLM 的每一次调用"变成可回放、可评估、可对比的数据。
二、第一层:追踪(Trace)#
记录什么#
每个 LLM 调用记录完整链路:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
{
"trace_id": "abc123",
"timestamp": "...",
"agent": "interviewer",
"model": "gpt-4o",
"prompt": { // 完整 Prompt(System + User + 预填)
"system": "...",
"user": "...",
"prefill": "..."
},
"response": "...",
"usage": { "prompt_tokens": 1200, "completion_tokens": 350 },
"latency_ms": 1800,
"metadata": { "session_id": "s-001", "user_id": "u-1" }
}
|
为什么必须存完整 Prompt 和 Response:AI 问题是"改了 Prompt 效果变差",没有历史 Prompt 就没法对比。LLM 调用的日志不是日志,是实验数据。
- 开源:Langfuse、LangSmith、Phoenix(Arize)
- 自建:Prometheus + 自定义维度(轻量)
- 我们的做法:记录进 ClickHouse(检索快),核心调用全量存
三、第二层:成本审计#
token 是钱,要有账本#
关键指标:
| 指标 |
含义 |
异常信号 |
| 单次调用成本 |
每请求 token 花费 |
突然翻倍 = Prompt 膨胀 |
| token/回答比 |
输入 vs 输出 |
输入暴涨 = 上下文泄漏 |
| 重试率 |
调用失败的占比 |
模型侧/网络问题 |
| 缓存命中率 |
Prompt 缓存的占比 |
命中低 = 浪费 |
最值得盯的:单用户会话成本——一个用户聊 50 轮,上下文越滚越长,每轮 token 都在涨,最后的对话可能比前面全部还贵。会话成本失控是 AI 应用亏损的头号原因。
四、第三层:质量评估(最难的)#
自动评估#
人工标注#
线上指标#
三层结合:规则兜底(格式)、LLM 评分(质量)、人工校准(趋势)、业务指标(最终效果)。
五、A/B:可观测的终极形态#
AI 应用的优化全靠 A/B——改 Prompt、换模型、调参数,都要有数据对比:
前提:第一层的 Trace 要带版本号(Prompt 版本、模型版本)——没有版本的可观测,A/B 无从谈起。
六、落地清单#
AI 应用可观测的核心认知:
- 传统监控管"挂没挂",AI 可观测管"好不好、贵不贵"
- Trace 是实验数据:存完整 Prompt/Response/版本,才有对比和 A/B
- 成本是第二战场:token 是钱,会话成本失控是隐形亏损
- 质量评估是闭环:规则 + LLM 评分 + 业务指标三层
AI 应用不可观测 = 在黑暗里调参。有了追踪、成本、评估三层,每次优化都是"数据说话",不是"感觉对了"。
微信公众号「福清而不淡」
后端架构 · AI 工程 · 云原生的一线实践,扫码关注,不错过更新。
本文已同步发布到公众号,欢迎留言交流。