目录
1. 背景与动机
1.1 问题陈述
在 AI Agent 执行过程和 AICoding 过程中,以下关键信息目前处于黑盒状态:
- Token 消耗:每次 Agent 执行消耗了多少 Token?哪些阶段是 Token 大户?Input/Output Token 各占多少?
- Skill 调用链路:Agent 依次调用了哪些 Skill?每个 Skill 的执行路径和依赖关系是什么?
- 响应耗时:端到端的平均响应时间多长?瓶颈在哪个环节?模型推理 vs 工具调用各占多少时间?
- 质量评估:Agent 产出的代码质量如何?有无幻觉或不合规内容?
1.2 为什么需要 AI 可观测性
与传统微服务相比,AI Agent 应用有三个本质区别,使得可观测性更加重要:
| 维度 | 传统微服务 | AI Agent 应用 |
|---|---|---|
| 确定性 | 同一输入 → 同一输出 | 同一输入 → 每次输出不同 |
| 成本模型 | 以计算资源计费 | 以 Token 计费,成本难预测 |
| 调试方式 | 断点+日志 | 需追踪多轮对话、工具调用、推理链路 |
| 质量衡量 | 功能测试通过率 | 需要"裁判员模型"做语义级评估 |
核心观点 :AI 可观测性正从运维工具进化为 AI 应用架构的核心组件。没有可观测性,AI 应用从 PoC 到生产的鸿沟无法跨越。
2. 文章综合分析
2.1 核心痛点总结
综合内部文章、可观测中文社区实践分享以及 EvEye 平台文档,AI Agent 可观测性面临以下核心痛点:
痛点一:用起来 --- 非确定性输出难调试
AI 应用最大的挑战是不确定性 。同样的 Prompt、同样的应用,换一个模型回答效果就大打折扣;同一个问题问两三次,每次的回答都不一样。传统的断点调试和日志分析方法在 AI 场景下几乎失效,开发者需要能够重现并对比每次推理的完整上下文。
痛点二:用得省 --- Token 黑洞问题
MCP Token 黑洞是当前 AI 应用面临的最突出成本问题之一。当 Agent 使用 MCP 工具时,看似最终输出只消耗了 1000 个 Token,但背后可能调用了数十次模型、执行了大量 MCP Tools,实际消耗可能上万 Token。每次与模型的对话,都会将历史对话和 MCP Tools 的调用结果一起作为 input 再发给模型,这个过程是不断叠加的,次数越多消耗越大。
关键发现:在缺乏链路追踪的情况下,开发者无法感知这种 Token 消耗的指数级增长。
痛点三:用得好 --- 质量评估缺失
AI Agent 的每一次迭代升级(Prompt 修改、模型切换、工具链变更),都可能引发不可预见的副作用。需要建立自动化评估框架,量化每次变更对服务质量的影响,类似于传统软件的"回归测试"。
2.2 AI 应用黄金三指标
与传统微服务的黄金三指标(请求数 / 错误率 / 耗时)类比,AI 应用的黄金三指标是:
┌─────────────────────────────────────────────────┐
│ AI 应用黄金三指标 │
├────────────┬────────────────┬───────────────────┤
│ Token │ Error │ Duration │
├────────────┼────────────────┼───────────────────┤
│ Input Token│ 异常率 │ TTFT │
│ Output Token│ 幻觉率 │ (首 Token 延迟) │
│ 总消耗/成本│ 工具调用失败率 │ TPOT │
│ │ │ (每 Token 生成间隔) │
└────────────┴────────────────┴───────────────────┘
- Token:最重要的成本指标。需精确区分 Input Token 和 Output Token(定价不同),按模型、应用、用户等维度聚合统计。
- Error:包括模型推理异常、工具调用失败、幻觉输出、不合规内容等。
- Duration :
- TTFT (Time to First Token):从输入到模型吐出第一个 Token 的时间,衡量 Prefill 阶段性能。
- TPOT (Time Per Output Token):后续每个 Token 的平均生成间隔,衡量 Decode 阶段效率。
- 总推理耗时 ≈ TTFT + TPOT × (总 Token 数 - 1)
2.3 端到端追踪架构
基于可观测中文社区的实践分享,一个完整的 AI 应用端到端追踪架构如下:
用户端侧 API 网关 AI 应用层 AI 网关 模型推理层
(iOS/Android/Web) (Higress) (Python/Java) (模型路由) (vLLM/SGLang)
│ │ │ │ │
├──── Trace ─────┼──── Trace ─────┼──── Trace ─────┼──── Trace ─────┤
│ (手动埋点) │ (手动埋点) │ (自动埋点) │ (手动埋点) │ (自动埋点)
│ │ │ │ │
└────────────────┴────────────────┴────────────────┴────────────────┘
全部基于 OpenTelemetry 标准协议
各层关注点:
| 层级 | 关注指标 |
|---|---|
| 用户层 | 会话卡顿、用户体验 |
| 应用层 | 响应耗时、推理延时、Skill 调用链 |
| 网关层 | 可用性、流量控制、Token 限流 |
| 模型服务层 | 推理效果、成本、TTFT/TPOT |
| 基础设施 | GPU 利用率、KV Cache 命中率 |
2.4 内部平台参考
略......
2.5 行业趋势总结
根据 2026 年多份权威行业报告(Firecrawl、MLflow、LangChain、Confident AI 等),当前 AI 可观测性行业呈现以下趋势:
-
OpenTelemetry GenAI 语义规范已成为行业标准
- OTel 社区在 2025 年正式发布了 GenAI 语义约定
- 标志着 LLM 可观测性从"各家自建"走向"标准化"
-
四大设计原则(CHI 2025 研究,30 位开发者参与):
- Awareness:使模型行为可见
- Monitoring:提供实时反馈
- Intervention:支持即时干预
- Operability:支持长期维护
-
工具分四大类别:
- All-in-One 平台:Langfuse、LangSmith、MLflow、Opik
- Evaluation 工具:Arize Phoenix、TruLens、Galileo AI
- Gateway 代理:Helicone、Portkey、OpenLLMetry
- Enterprise APM:Datadog、New Relic、Pydantic Logfire
-
开源主导:Langfuse (MIT)、MLflow (Apache 2.0)、Phoenix、Opik 等开源方案已成主流选择
3. 开源框架横向对比
3.1 一句话理解:这些工具分别在干嘛?
简单来说,AI 可观测工具做的事情就像给你的 AI 应用装了一个"行车记录仪"------记录每次请求走了哪些步骤、花了多少钱(Token)、耗了多长时间、回答得好不好。
目前市面上的主流工具可以分为两大类:
- "记录仪"型(专注数据采集):LoongSuite ------ 只管把数据记下来,不提供看板
- "一站式平台"型(采集+看板+评估):Langfuse、MLflow、LangSmith 等 ------ 既记录又展示,还能评估质量
| 工具 | 一句话定位 | 开源协议 | 适合谁 |
|---|---|---|---|
| LoongSuite | 阿里出品的"零改造数据采集器" | Apache 2.0 | 用 Dify/Spring AI 等国内框架的团队 |
| Langfuse | 社区最火的"一站式观测平台" | MIT | 想快速搭建完整观测能力的中小团队 |
| MLflow | Linux 基金会的"全家桶" | Apache 2.0 | 需要从观测到评估到治理全覆盖的大团队 |
| LangSmith | LangChain 官方配套工具 | 商业闭源 | 深度使用 LangChain 的团队 |
| Arize Phoenix | 偏重质量评估的观测工具 | ELv2 | 重视 RAG 检索质量的团队 |
| Opik | 新生代全能选手 | Apache 2.0 | 使用 Dify/Flowise 等低代码平台的团队 |
3.2 LoongSuite ------ "零改造"的数据采集利器
一句话理解:你的 AI 应用不需要改一行代码,LoongSuite 就能自动帮你记录每次 LLM 调用花了多少 Token、耗了多少时间。
它能做什么?
想象你有一个 AI 客服机器人,用户问"怎么退货",机器人背后会:① 调用知识库检索 → ② 拼装 Prompt → ③ 调用大模型 → ④ 返回答案。LoongSuite 就像在每个步骤之间自动装了一个"计时器+计费器",把整条链路的信息全部记下来。
用户提问 "怎么退货?"
│
▼
┌─────────────┐ LoongSuite 自动记录:
│ 知识库检索 │ ✓ 耗时 120ms
└──────┬──────┘
▼
┌─────────────┐ LoongSuite 自动记录:
│ 拼装 Prompt │ ✓ 输入 Token: 800
└──────┬──────┘
▼
┌─────────────┐ LoongSuite 自动记录:
│ 调用大模型 │ ✓ 输出 Token: 350
│ (qwen-max) │ ✓ 模型耗时 1.2s
└──────┬──────┘ ✓ 首字延迟 200ms
▼
┌─────────────┐
│ 返回答案 │ 总耗时: 1.5s | 总 Token: 1150
└─────────────┘
怎么用?(三步上手)
Python 应用(比如你用 Dify、LangChain 等框架):
bash
# 第 1 步:安装
pip install loongsuite-python-agent
# 第 2 步:用它来启动你的应用(代替直接 python app.py)
loongsuite-instrument python app.py
# 就这样,不用改任何代码!数据自动采集上报。
Java 应用(比如你用 Spring AI Alibaba):
bash
# 第 1 步:下载 Agent jar
wget https://github.com/alibaba/loongsuite-java-agent/releases/latest/download/loongsuite-java-agent.jar
# 第 2 步:启动应用时挂载
java -javaagent:loongsuite-java-agent.jar -jar your-app.jar
# 同样零改造!
它的优势
| 优势 | 具体说明 |
|---|---|
| 零代码改造 | 不需要在业务代码里加任何埋点,启动命令换一下就行 |
| 国内框架全覆盖 | Dify、Spring AI Alibaba、AgentScope、通义千问 SDK 都支持 |
| 生产级稳定 | 阿里百炼平台大规模使用,解决了不少开源工具在真实场景下的坑 |
| 遵循国际标准 | 基于 OpenTelemetry 标准,未来换其他工具也不用重来 |
它的不足
- 只管采集,不管展示:LoongSuite 只负责把数据记录下来,想要看图表、看报表,需要搭配其他工具(比如阿里云云监控,或者下面要讲的 Langfuse)
- 没有评估能力:不能帮你判断"AI 回答得好不好",只能告诉你"AI 花了多少钱、多少时间"
- 社区还在成长期:2025 年初才开源,文档和社区生态还在逐步完善
3.3 Langfuse ------ "开箱即用"的一站式观测平台
一句话理解:一个自带好看界面的 AI 观测平台,能帮你看 Token 花了多少、回答好不好、Prompt 怎么优化。
它能做什么?
如果说 LoongSuite 是"行车记录仪",那 Langfuse 就是"行车记录仪 + 大屏显示器 + 驾驶评分系统"的全套装。
以同一个 AI 客服机器人为例,Langfuse 不仅记录数据,还提供:
┌──────────────────────────────────────────────────┐
│ Langfuse 提供的能力 │
├──────────────────────────────────────────────────┤
│ │
│ 📊 Trace 查看器 → 看到每次请求的完整调用链 │
│ 💰 Token 成本面板 → 这个月花了多少钱一目了然 │
│ ✏️ Prompt 管理 → Prompt 版本管理 + 在线调试 │
│ 📝 评估打分 → 用 AI 给 AI 的回答打分 │
│ 📈 数据分析 → 各维度统计图表 │
│ │
└──────────────────────────────────────────────────┘
怎么用?(三步上手)
第 1 步:部署 Langfuse 服务
bash
# 用 Docker 一键启动
git clone https://github.com/langfuse/langfuse.git
cd langfuse
docker compose up -d
# 打开浏览器访问 http://localhost:3000
# 创建项目,拿到 Public Key 和 Secret Key
第 2 步:在代码中接入
python
# 安装 SDK
# pip install langfuse
from langfuse.decorators import observe
# 在你想追踪的函数上加个装饰器就行
@observe()
def handle_customer_question(question: str):
"""处理客户提问"""
# 1. 检索知识库
docs = search_knowledge_base(question)
# 2. 调用大模型
answer = call_llm(question, docs)
return answer
@observe(as_type="generation")
def call_llm(question, context):
"""调用大模型 ------ 标记为 generation 类型,自动记录 Token"""
response = openai.chat.completions.create(
model="qwen-max",
messages=[
{"role": "system", "content": f"根据以下资料回答:{context}"},
{"role": "user", "content": question}
]
)
return response.choices[0].message.content
第 3 步:打开看板查看数据
在 Langfuse 的 Web 界面中,你可以看到:
- 每次请求的完整调用链(谁调了谁、每步花了多长时间)
- Token 消耗统计(按天/按模型/按功能汇总)
- 成本计算(自动按模型定价算出花了多少钱)
它的优势
| 优势 | 具体说明 |
|---|---|
| 开箱即用 | 自带 Web 界面,部署完就能看数据,不需要再搭配其他工具 |
| 社区最活跃 | GitHub 28000+ Stars,遇到问题容易找到解决方案 |
| Prompt 管理 | 可以在界面上直接修改和测试 Prompt,还支持版本回滚 |
| 评估打分 | 内置"让 AI 给 AI 打分"的功能,自动检查回答质量 |
| 集成广泛 | 支持 60+ AI 框架(OpenAI、LangChain、LlamaIndex 等) |
它的不足
- 部署稍复杂:需要跑 5 个服务(应用 + 数据库 + ClickHouse + Redis + 对象存储),对运维有一定要求
- 只支持 Python 和 JS:如果你的应用是 Java 或 Go 写的,SDK 支持有限
- 被 ClickHouse 收购:2025 年底被收购,长期发展路线存在一定不确定性
3.4 LoongSuite vs Langfuse:该选谁?
这两个工具并不是"二选一"的竞争关系,而是可以互补的:
LoongSuite Langfuse
───────── ────────
定位: 数据采集专家 一站式平台
做什么: 记录数据 记录 + 展示 + 评估
改代码吗: 完全不用改 需要加装饰器
看得到吗: 看不到(需搭配看板) 自带 Web 界面
支持语言: Python / Java / Go Python / JS
适合场景: 已有看板、只差数据采集 从零开始搭建观测能力
三种典型选择:
| 你的情况 | 推荐方案 | 理由 |
|---|---|---|
| 想最快看到效果 | Langfuse | 部署完就有界面,5 分钟出数据 |
| Java/Go 应用为主 | LoongSuite | Langfuse 不支持 Java SDK,LoongSuite 三语言全覆盖 |
| 既要零改造采集,又要好看的界面 | LoongSuite + Langfuse | LoongSuite 采集 → OTLP → Langfuse 展示,两全其美 |
!TIP
组合方案是最佳实践:用 LoongSuite 做零代码数据采集(省去埋点工作),数据通过 OpenTelemetry 标准协议转发给 Langfuse 做展示和分析。这样既不用改业务代码,又能享受 Langfuse 的丰富界面。
4. 实施方案:以"AI 客服机器人"为例
下面以一个常见的 AI 客服机器人项目为例,演示如何分三步接入可观测能力。
4.1 Phase 1:先看到数据(1-2 周)
目标:让"黑盒"变成"灰盒"------至少知道每次请求花了多少 Token、多长时间。
方案 A:用 Langfuse(推荐快速验证)
python
# 1. 安装
# pip install langfuse openai
# 2. 设置环境变量
import os
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-xxx" # 从 Langfuse 界面获取
os.environ["LANGFUSE_SECRET_KEY"] = "sk-xxx"
os.environ["LANGFUSE_HOST"] = "http://localhost:3000"
# 3. 在入口函数加上 @observe 装饰器
from langfuse.decorators import observe
@observe()
def answer_customer(question: str):
"""客服机器人入口"""
context = search_docs(question) # 检索知识库
answer = generate_answer(question, context) # 调用大模型
return answer
@observe(as_type="generation")
def generate_answer(question, context):
"""大模型调用 ------ 自动记录 Token 和耗时"""
import openai
response = openai.chat.completions.create(
model="qwen-max",
messages=[
{"role": "system", "content": f"你是客服助手。参考资料:{context}"},
{"role": "user", "content": question}
]
)
return response.choices[0].message.content
效果:打开 Langfuse 界面就能看到每次客户提问的 Token 消耗和响应时间。
方案 B:用 LoongSuite(推荐零改造)
bash
# 不改任何代码,直接用 LoongSuite 启动应用
pip install loongsuite-python-agent
loongsuite-instrument python customer_service.py
# 数据自动上报到配置的后端(阿里云 SLS 或 OTel Collector)
效果:零代码改造,所有 LLM 调用的 Token 和耗时自动被记录。
4.2 Phase 2:看清全链路(2-4 周)
目标:不仅知道总数,还要知道每个步骤分别花了多少。
在 Phase 1 的基础上,给更多关键步骤加上追踪标记:
python
from langfuse.decorators import observe
@observe(name="客户提问处理")
def answer_customer(question: str):
# 每个子步骤自动成为"子节点",在界面上能看到树状调用链
intent = classify_intent(question) # 步骤1:意图识别
if intent == "退货":
docs = search_return_policy(question) # 步骤2:检索退货政策
else:
docs = search_general_faq(question) # 步骤2:检索常见问题
answer = generate_answer(question, docs) # 步骤3:生成回答
return answer
@observe(name="意图识别")
def classify_intent(question: str):
"""用小模型快速分类用户意图"""
response = openai.chat.completions.create(
model="qwen-turbo", # 用便宜的小模型做分类
messages=[{"role": "user", "content": f"判断意图:{question}"}]
)
return response.choices[0].message.content
@observe(name="知识库检索")
def search_return_policy(question: str):
"""检索退货政策"""
# ... 检索逻辑
return docs
@observe(name="生成回答", as_type="generation")
def generate_answer(question, context):
"""用大模型生成最终回答"""
response = openai.chat.completions.create(
model="qwen-max",
messages=[...]
)
return response.choices[0].message.content
效果:在 Langfuse 界面上能看到这样的调用链:
客户提问处理 (总耗时 2.1s, 总 Token 1580)
├── 意图识别 (耗时 0.3s, Token 80, 模型: qwen-turbo)
├── 知识库检索 (耗时 0.5s)
└── 生成回答 (耗时 1.3s, Token 1500, 模型: qwen-max)
一眼就能看出:"生成回答"是最大的 Token 消耗和耗时瓶颈。
4.3 Phase 3:持续优化(4-6 周)
目标:不仅看到数据,还能用数据来优化 AI 的效果和成本。
3.1 Token 成本分析
通过 Langfuse 的成本面板,你可以回答这些问题:
❓ 这个月 AI 客服一共花了多少钱?
→ 成本面板:总计 ¥3,200(qwen-max ¥2,800 + qwen-turbo ¥400)
❓ 哪类问题最费钱?
→ 按功能分组:退货问题 ¥1,200 / 物流查询 ¥800 / 闲聊 ¥600
❓ 能不能省钱?
→ 发现"闲聊"类用 qwen-max 太浪费,可以降级为 qwen-turbo
→ 预计每月节省 ¥400
3.2 质量评估
用 Langfuse 内置的"AI 打分"功能,定期检查回答质量:
python
from langfuse import Langfuse
langfuse = Langfuse()
# 对最近的对话进行质量评估
traces = langfuse.fetch_traces(name="客户提问处理", limit=100)
for trace in traces:
# 用大模型给每个回答打分(1-5分)
score = evaluate_answer_quality(
question=trace.input,
answer=trace.output,
criteria="准确性、完整性、友好度"
)
# 把分数写回 Langfuse
langfuse.score(trace_id=trace.id, name="quality", value=score)
效果:可以在面板上看到"本周平均质量评分 4.2 分",及时发现质量下降。
3.3 关键监控指标
建议监控以下核心指标:
| 指标 | 含义 | 建议告警阈值 |
|---|---|---|
| 单次 Token 消耗 | 一次对话用了多少 Token | > 5000 Token 告警 |
| 响应时间 | 用户等了多久 | > 10 秒告警 |
| 错误率 | 多少比例的请求失败了 | > 5% 告警 |
| 质量评分 | AI 回答的平均质量 | < 3.5 分告警 |
| 日均成本 | 每天花了多少钱 | 超预算 120% 告警 |
5. 总结
5.1 三句话概括
-
AI 可观测不是锦上添花,而是必需品。不知道花了多少 Token、不知道哪里慢、不知道回答好不好,AI 应用就永远停留在 Demo 阶段。
-
两个工具覆盖大部分场景。LoongSuite 负责"零改造数据采集",Langfuse 负责"展示分析评估",组合使用效果最佳。
-
分三步走,不要一步到位。先看到数据(1-2 周)→ 再看清链路(2-4 周)→ 最后持续优化(4-6 周)。
5.2 选型速查
你的情况是? 推荐方案
────────── ────────
想最快出效果 → Langfuse(部署即可用)
Java/Go 应用 → LoongSuite(三语言覆盖)
不想改代码 → LoongSuite(零改造)
要好看的界面 → Langfuse(自带看板)
又不想改代码又要好看界面 → LoongSuite + Langfuse(最佳组合)
阿里内部团队 → LoongSuite + 云监控 2.0
需要全家桶(含 AI 网关+评估+治理)→ MLflow
5.3 注意事项
- 数据安全:可观测数据中包含完整的用户对话内容,务必自行部署,不要把数据传到外部平台
- 性能开销:生产环境建议开启采样(比如只记录 10% 的请求),避免影响正常业务
- 渐进式推进:不要一上来就追求全面覆盖,先让团队看到价值,再逐步深入
附录
A. 参考资料
开源项目
- LoongSuite Python Agent
- LoongSuite Java Agent
- LoongSuite Go Agent
- LoongSuite GenAI SemConv
- LoongCollector
- Langfuse
- MLflow
- Arize Phoenix
- Opik
行业文章
- Best LLM Observability Tools in 2026 --- Firecrawl
- Top 5 Agent Observability Tools --- MLflow
- 从 AI Agent 到模型推理:端到端 AI 可观测实践 --- 可观测中文社区
- 阿里云正式开源 LoongSuite --- 博客园
- LoongSuite Python Agent 发布 --- Alibaba Cloud Blog
B. 术语表
| 术语 | 全称 | 含义 |
|---|---|---|
| OTel | OpenTelemetry | 开源可观测性框架标准 |
| TTFT | Time to First Token | 首 Token 延迟(Prefill 阶段耗时) |
| TPOT | Time Per Output Token | 每 Token 生成间隔(Decode 阶段效率) |
| GenAI SemConv | GenAI Semantic Conventions | AI 应用可观测数据的语义规范 |
| MCP | Model Context Protocol | 模型上下文协议(AI 工具调用标准) |
| A2A | Agent-to-Agent | 多 Agent 通信协议 |
| LLM-as-Judge | --- | 用 LLM 作为评估裁判员的方法 |
| Monkey Patch | --- | Python 运行时动态替换函数/方法的技术 |
| KV Cache | Key-Value Cache | 模型推理中缓存中间计算结果的机制 |