SuperAPI AI 工具集

agent-observability

智能体与模型

查看项目

更新于 10-29 04:36

技能介绍

用途

生产环境中的智能体(Agent)失败方式与普通服务不同:错误的工具调用、幻觉参数、失控循环、静默的质量回退。本技能用于为 LLM 智能体添加可观测性,通过追踪(traces)、指标(metrics)和回放(replay),让失败可被观察,而不是仅靠猜测。

何时使用

  • 智能体在开发环境正常,在生产环境出错,且没有日志能解释原因
  • 需要将提示词/模型变更与基线进行对比(eval-in-trace)
  • token/延迟成本持续增长,但不知道是哪个节点造成的
  • 用户报告了糟糕的回答,需要回放确切的会话
  • 存在多个智能体/子智能体,需要单一的追踪树,而不是交错的日志

平台选择

后端 选择时机 托管方式
LangSmith 使用 LangChain/LangGraph 技术栈,希望托管方案 SaaS
Langfuse 需要开源、自托管、多框架支持 SaaS 或自托管
Arize Phoenix 需要 OTel 原生、嵌入/评估漂移、开源优先 本地或自托管

默认建议:需要自托管时选 Langfuse;已在使用 LangGraph 时选 LangSmith;强制要求 OTel 时选 Phoenix。

埋点模式(节点级 span)

# LangGraph + Langfuse
from langfuse.decorators import observe
from langfuse.openai import openai  # auto-traces tool calls

@observe(name="planner_node")
def planner(state):
    return {"plan": llm.invoke(state["task"])}

@observe(name="tool_executor")
def tool_executor(state):
    return {"observation": run_tool(state["action"])}

必需的 span 属性:

  • input / output(完整,不截断)
  • model、temperature、max_tokens
  • tool_name、tool_args、tool_result_status
  • tokens_in、tokens_out、cost_usd
  • session_id、user_id、trace_id

Eval-in-trace(追踪内评估)

将自动评分器附加到每个 span,使质量回退与延迟在同一界面中呈现:

from langfuse import Langfuse
langfuse = Langfuse()
langfuse.score(
    trace_id=trace_id,
    name="answer_correctness",
    value=0.92,
    comment="LLM-as-judge vs golden"
)

常见评分项:correctness、tool_call_validity、groundedness、harm、latency_sla。

回放模式

  1. 在每个节点入口/出口记录完整状态(Langfuse:metadata={"state": state})
  2. 收到 bug 报告时,按 trace_id 获取追踪
  3. 重建状态,从任意节点重新运行——对比输出差异

规模化采样

  • 错误/HITL 路径 100% 追踪
  • 正常路径 10% 采样
  • 对延迟超过 p95 的 span 使用尾部采样
  • 始终记录:工具失败、护栏拦截、预算上限触发

延伸阅读

  • LangSmith 文档——数据集、评估、追踪回放
  • Langfuse 文档——自托管 compose、OTel 导出器
  • Arize Phoenix——嵌入漂移、开源 LLM 评估
  • OpenTelemetry gen_ai 语义约定(2026)