🧠 图解记忆:传统微服务看请求,Agent 还要看规划、工具、状态和非确定性决策轨迹;点击图片可查看原图。
**核心区别:**| 维度 | 传统微服务 | Agent 可观测性 |
|---|---|---|
| 追踪对象 | HTTP 请求、数据库查询 | LLM 调用、工具调用、规划步骤 |
| 不确定性 | 确定性逻辑,无幻觉 | LLM 输出不可预测,有幻觉风险 |
| 状态管理 | 无状态或短状态 | 多轮对话、长期记忆、上下文累积 |
| 性能指标 | 延迟、QPS、错误率 | TTFT、Token 速率、循环检测 |
| 调试难度 | 日志+链路追踪足够 | 需理解 LLM 推理过程,需 Prompt 可视化 |
| 特殊需求 | 标准 OpenTelemetry | LLM 原生支持(采样/Hallucination 检测) |
Agent 可观测性特殊挑战:
python
# 挑战1:LLM 输出不确定性 → 需要输出质量追踪
outputs = []
for run in runs:
outputs.append({
"output": run.output,
"hallucination_score": detect_hallucination(run.output),
"toxicity_score": detect_toxicity(run.output),
"factual_recall": measure_factual_recall(run.output, run.expected)
})
# 挑战2:上下文累积 → 需追踪上下文膨胀
token_trend = [
sum(count_tokens(m) for m in run.messages)
for run in runs
]
# 检测:随任务复杂度增长,上下文是否线性膨胀
# 挑战3:工具调用链路 → 需追踪工具调用树
tool_tree = build_tool_call_tree(run.tool_calls)
# 检测:是否有不必要的工具调用、调用顺序是否最优面试话术:
"Agent 可观测性比微服务复杂在三点:1)LLM 输出不确定,同一个 Prompt 三次调用结果可能不同,必须追踪输出质量分布;2)上下文会累积,需要监控 Token 膨胀曲线;3)工具调用链路是树状结构,不是线性链路。我用 LangSmith 的 trace 串联所有步骤,每个 span 打上 step_type 和 tool_name 属性,出问题后从根节点一路点下去就能定位。"
