LLM Observability
Nikola Balic (@nibzard)· proposed
问题
Agent 会引入非确定性——相同的输入可能产生不同的输出。当 Agent 做出次优行为时,即便是仅因prompt模糊导致的问题,用户也会将其标记为“bug”。调试这类问题需要追踪复杂的多步骤工作流,但标准日志工具(如CloudWatch、Lambda日志)的导航操作十分繁琐。工程师需要能便捷获取工作流执行细节以快速开展调试,否则Agent将无法得到推广应用。
方案
集成可提供Agent工作流span级追踪(span-level tracing)的LLM可观测性平台(如Datadog LLM Observability、LangSmith等)。无需在原始日志中费力排查,即可通过可视化UI查看Agent执行的每一个步骤。
核心功能:
- Span可视化:查看每一次LLM调用、工具使用以及中间结果
- 工作流链路关联:从用户输入出发,追踪覆盖所有子步骤直至最终输出的完整路径
- 仪表盘聚合:汇总成本、延迟、成功率等关键指标
- 便捷调试:非技术人员无需访问日志即可开展调试工作
相较于标准日志方案的演进历程:
- 打印至标准输出(stdout) → 日志被捕获到Lambda日志中(访问难度高)
- 推送至Slack频道 → 发送运行摘要+AWS日志链接(体验有所改善,但仍需手动排查日志)
- LLM可观测性平台 → 可视化span追踪,导航操作便捷
graph LR
A[Agent运行实例] --> B[可观测性SDK]
B --> C[Span:LLM调用1]
B --> D[Span:工具调用]
B --> E[Span:LLM调用2]
C --> F[追踪UI]
D --> F
E --> F
F --> G[调试视图]
style F fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
如何使用
集成步骤:
- 选择可观测性平台:如 Datadog LLM Observability、LangSmith、Arize 等
- 安装SDK:将其添加至你的Agent代码中(通常仅需1-2行代码)
- 配置追踪:为工作流、用户、环境打标签
- 访问控制:向更广泛的团队开放访问权限(不局限于工程师群体)
Datadog 示例代码:
from ddtrace import tracer
# 自动追踪LLM调用
@tracer.wrap("agent_workflow")
def run_agent(query):
result = agent.run(query)
# 每次LLM调用、工具使用都会生成一个追踪跨度(span)
return result
最佳实践:
- 全面打标签:覆盖工作流名称、用户ID、环境(生产/预发布)
- 关联仪表盘:确保可观测性UI能从聊天界面便捷访问
- 开放共享访问:不要局限于工程部门;工作流创建者也需要可见性
- 监控聚合指标:长期跟踪成功率、延迟时长、成本数据
权衡
优势:
- 快速调试:以可视化方式梳理复杂工作流
- 易上手:非技术人员无需日志权限即可开展调试工作
- 聚合指标:查看多轮运行中的规律模式
- Span级细节:深入到执行流程的任意步骤
劣势:
- 供应商依赖:受限于特定可观测性平台
- 成本高昂:企业级可观测性工具通常定价不菲
- 性能开销:会增加延迟(通常影响极小)
- 访问控制难题:难以平衡可见性与安全性
不适用场景:
- 简单的确定性工具(无Agent行为)
- 单步骤操作(标准日志已足够满足需求)
- 预算有限,无法承担可观测性相关开支
参考文献
关键词:
围绕AI内部代理的日志与可调试性构建展开,涵盖Datadog LLM可观测性、LangSmith等官方技术文档,以及代理优先工具、思维链监控等相关技术方向资源。
- 《构建内部代理:日志与可调试性》 - 威尔·拉尔森(Imprint出版社,2025年)
- Datadog大语言模型可观测性文档
- LangSmith文档
- 相关内容:代理优先工具与日志、思维链监控与中断
来源摘要
正在获取来源并生成中文摘要…