Agent 可观测性实战:Trace、结构化日志与评估集回流

作者:

为什么 Demo 能跑,上线却「看不见」

在前一篇生产化实践里,我们谈了护栏、成本与评估集。很多团队把评估集建好后,仍然会遇到一个尴尬局面:用户反馈「答错了」,你却无法还原那一次请求里调了哪些工具、哪一步超时、上下文被截断到哪里

可观测性不是 APM 厂商的专属名词。对 Agent 来说,它要解决的是:一次用户意图如何经过 LLM 与工具链,最终变成可见的结果或失败

三个最小信号:Trace、Span、结构化日志

我们建议从三个信号开始,而不是一上来就上全套 Grafana。

Trace ID:每个用户请求分配全局 trace_id,在所有日志、工具回调、异步任务里透传。排查时按 trace 聚合,而不是按时间大海捞针。

Span:把一次 LLM 调用或一次工具执行记为一个 span,记录耗时、输入摘要、输出摘要、是否重试。多 Agent 场景下,子 Agent 的 span 挂在父 trace 下,才能看清「谁委托了谁」。

结构化日志:抛弃纯文本拼接,至少固定字段:trace_idspanagenttoollatency_mstokens_in/outstatus。后续无论是进 ELK、Loki 还是云日志,都能过滤聚合。

{"trace_id":"t_8f2a","span":"tool:kb_search","tool":"kb_search","latency_ms":420,"status":"ok"}

工具链追踪:比「最终答案」更重要

Agent 调错工具时,用户看到的是一句胡话;工程师需要的是工具决策链。建议在编排层记录:

  • 模型收到的 tools schema 版本
  • 每次 tool_call 的名称、参数、返回码
  • 若启用 RAG,记录检索 query、命中文件路径、片段 hash(与记忆与 RAG 实战里的出处原则一致)

这样当评估集里新增一条失败样本时,你能直接关联到对应的 trace,而不是重新猜 prompt。

指标:延迟、成功率与 token 成本

生产化必须同时看体验账单

指标 用途
P95 端到端延迟 发现慢工具或过长上下文
工具调用成功率 识别脆弱的外部依赖
每 trace token 消耗 与护栏联动做预算告警

这些指标可以和上一篇里的成本控制共用同一套看板:护栏拦截算「预防」,指标异常算「发现」。

失败样本如何回流评估集

可观测性的终点,是让失败可复现、可回归

  1. 从结构化日志筛选 status=error 或用户点踩的 trace
  2. 自动抽取「用户问题 + 工具链 + 最终回答」生成候选样本
  3. 人工审核后写入评估集(避免把 PII 直接入库)
  4. 发版前跑回归,与 CI 集成

经验判断:评估集样本增长过快时,优先修高频工具失败,而不是堆更多 prompt 技巧。

小结

可观测性应和生产化一起设计:Trace 贯穿请求、Span 刻画工具链、结构化日志支撑检索,再把失败样本回流评估集,形成「上线—观测—改进」闭环。

延伸阅读:多 Agent 编排实战工具调用设计详解

本文为《从零到上线》Agent 应用开发系列第 6 篇。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

湘ICP备2026010540号