AI Agent 可观测性:如何监控和调试智能体系统

AI AgentAI Agent可观测性openstarry.com

AI Agent 可观测性:如何监控和调试智能体系统

AI Agent 是一个非确定性系统——相同的输入可能产生不同的输出,相同的任务可能走完全不同的执行路径。这种不确定性使得可观测性(Observability)成为 Agent 系统中不可或缺的能力。

为什么 Agent 系统需要可观测性?

传统的软件系统是确定性的:相同的输入总是产生相同的输出。调试时,你可以复现问题、设置断点、逐步跟踪。

AI Agent 系统完全不同:

传统软件调试:
  输入 → 确定性处理 → 输出
  问题:打日志、设断点、复现

AI Agent 调试:
  输入 → LLM 决策(随机性)→ 动作 1 → 观察
       → LLM 决策(随机性)→ 动作 2 → 观察
       → LLM 决策(随机性)→ 动作 3 → 最终输出

问题:
  1. 无法复现(LLM 有温度参数,输出有随机性)
  2. 中间步骤不透明(为什么选择了这个工具?)
  3. 链式错误传播(第一步的错误影响后续所有步骤)

可观测性的三大支柱——日志(Logs)、指标(Metrics)、追踪(Traces)——在 Agent 系统中都需要重新设计。


Traces 和 Spans:追踪 Agent 执行路径

Trace(追踪)是可观测性中最核心的概念。一个 Trace 代表 Agent 完成一次任务的完整执行路径。

Trace 结构示例:

Trace: "用户查询 2024 年诺贝尔物理学奖"
├── Span: "Think 1" (120ms)
│   └── 输出: "需要搜索 2024 年诺贝尔物理学奖"
├── Span: "Tool Call: Search" (850ms)
│   ├── 输入: {"query": "2024 Nobel Prize Physics"}
│   └── 输出: {"results": [...]}
├── Span: "Think 2" (95ms)
│   └── 输出: "找到了 Hopfield 和 Hinton,需要确认"
├── Span: "Tool Call: Search" (720ms)
│   ├── 输入: {"query": "Hopfield Hinton Nobel 2024"}
│   └── 输出: {"results": [...]}
├── Span: "Think 3" (80ms)
│   └── 输出: "信息完整,可以生成回答"
└── Span: "Generate Answer" (1500ms)
    └── 输出: "2024 年诺贝尔物理学奖授予了..."

总耗时: 3365ms
LLM 调用: 3 次
工具调用: 2 次

每个 Span 代表一个原子操作,包含输入、输出、耗时、状态等信息。通过分析 Trace,你可以清楚地看到 Agent 在每一步做了什么、花了多长时间、是否出错。


关键指标

监控 Agent 系统需要关注以下核心指标:

指标类别 具体指标 意义
性能端到端延迟用户等待时间
性能每步延迟定位慢步骤
性能LLM 调用次数任务复杂度
成本Token 消耗运营成本
成本工具调用次数外部 API 费用
质量任务完成率核心效果
质量循环次数分布任务难度分布
可靠性错误率系统稳定性
可靠性超时率性能瓶颈
# 指标采集示例
class AgentMetrics:
    def __init__(self):
        self.traces = []
    
    def record_trace(self, trace):
        metrics = {
            "total_duration_ms": trace.duration,
            "num_llm_calls": trace.count_spans("llm_call"),
            "num_tool_calls": trace.count_spans("tool_call"),
            "total_tokens": trace.sum_tokens(),
            "success": trace.final_status == "success",
            "num_steps": trace.count_steps(),
        }
        self.traces.append(metrics)
    
    def summary(self):
        return {
            "avg_duration": np.mean([t["total_duration_ms"] for t in self.traces]),
            "avg_tokens": np.mean([t["total_tokens"] for t in self.traces]),
            "success_rate": np.mean([t["success"] for t in self.traces]),
        }

调试工具

LangSmith

LangSmith 是 LangChain 团队开发的 Agent 可观测性平台,提供了完整的 Trace 可视化和分析能力:

# 使用 LangSmith 追踪 Agent 执行
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "your-api-key"

# Agent 的每一步都会自动记录到 LangSmith
agent = create_react_agent(llm, tools, prompt)
result = agent.invoke({"input": "查询天气"})

# 在 LangSmith 控制台可以看到:
# - 完整的执行 Trace
# - 每步的 LLM 输入/输出
# - 工具调用的参数和结果
# - Token 消耗和延迟

Arize Phoenix

Phoenix 是一个开源的 LLM 可观测性工具,专注于评估和监控:

# Phoenix 的核心功能
# 1. Trace 可视化:直观展示 Agent 执行路径
# 2. 评估框架:自动评估 Agent 输出质量
# 3. 漂移检测:监控 Agent 行为随时间的变化
# 4. 对比分析:比较不同 Agent 版本的表现

最佳实践

1. 结构化日志

为 Agent 的每一步生成结构化的日志,便于后续分析:

# 结构化日志格式
log_entry = {
    "trace_id": "abc-123",
    "span_id": "span-456",
    "step": 3,
    "type": "tool_call",
    "tool_name": "search",
    "input": {"query": "AI Agent"},
    "output": {"results_count": 5},
    "duration_ms": 850,
    "tokens_used": 150,
    "status": "success",
    "timestamp": "2026-06-04T10:30:00Z"
}

2. 回放功能

记录完整的执行上下文,使得 Agent 的行为可以回放和调试:

回放调试流程:
1. 在生产环境中发现问题 trace
2. 将 trace 的完整上下文导出
3. 在本地环境中重放执行
4. 修改提示词或工具后再次执行
5. 对比前后结果

3. 自动评估

建立自动化的评估流水线,持续监控 Agent 质量:


总结

可观测性是构建可靠 Agent 系统的关键。通过 Traces 追踪执行路径、通过指标监控系统健康、通过结构化日志支持调试,你能够让 Agent 系统从"黑盒"变为"白盒"。随着 Agent 系统在生产环境中的广泛部署,可观测性将成为每个 Agent 开发者的必备技能。

以 AI 之力,筑未来之境

现在注册,立即免费获赠 200 次大模型调用权益

免费注册 →