首页 > 教程攻略 > ai资讯 >AI可观测性:Prompt、Tool Call、Trace、Token全链路追踪

AI可观测性:Prompt、Tool Call、Trace、Token全链路追踪

来源:互联网 时间:2026-07-01 14:58:24

先说一个让人头疼的场景:AI系统好不容易上线了,用户反馈“有时候好用,有时候不好用”。等你想排查问题时,瞬间陷入四个不知道——不知道Prompt是什么,没记录;不知道调了哪些工具,没日志;不知道完整调用链路,黑盒一个;不知道花了多少Token,月底看账单才傻眼。

这不是个别现象,这是2026年大多数AI系统的真实写照。传统软件有成熟的APM监控、日志、指标和链路追踪,但AI系统——尤其是基于大语言模型的应用——有其独特的复杂性:同样的输入可能产生不同的输出,一个用户请求能触发十几次LLM调用,Agent还会调用外部API、数据库、搜索引擎,Token消耗和API费用更是难以预估。

所以,AI可观测性这件事,不是锦上添花,而是刚需。

什么是AI可观测性?

AI可观测性不是简单的日志记录,而是理解AI系统内部状态和行为的完整能力。打个比方:传统APM监控的是HTTP请求到数据库查询再到响应,而AI可观测性追踪的是用户输入到Prompt到LLM调用到Tool Call再到多轮推理和最终输出。两件事完全不在一个复杂度层级上。

AI可观测性有四个核心维度,一个都不能少——缺任何一个,你的AI系统就是个昂贵的黑盒:

  • Prompt追踪:记录和追踪所有Prompt,包括动态生成的
  • Tool Call追踪:监控Agent调用的所有外部工具
  • Trace链路追踪:完整的调用链路,从输入到输出
  • Token追踪:Token消耗、成本和延迟的实时监控

维度1:Prompt追踪——你的AI在“想”什么?

为什么Prompt追踪如此重要?

一个典型的AI应用,一次用户请求可能生成多个Prompt。举个具体的例子:用户说“帮我写一封邮件”,背后可能发生的流程是这样的:

用户输入 → Prompt 1(意图识别,判断用户想做什么)→ Prompt 2(上下文检索,从知识库找相关信息)→ Prompt 3(邮件生成)→ Prompt 4(质量检查)→ 最终输出

如果最终输出的邮件有问题,你怎么定位是哪个Prompt出了问题?没有Prompt追踪,只能靠猜;有了它,数据说话。

Prompt追踪的核心要素

每个Prompt应该记录的信息相当丰富,包括唯一标识、时间戳、所属的Trace ID、系统Prompt、用户输入、最终发给LLM的完整Prompt、模型名称、参数、响应内容、完成原因、延迟、Token数量,还有用户ID、会话ID、功能标记等业务上下文。简单说,能记录的都记录下来,越全越好。

实战:用Langfuse实现Prompt追踪

Langfuse是目前最流行的开源AI可观测性平台。下面是一个完整的示例,展示了如何在代码中嵌入追踪逻辑:

from langfuse import Langfuse from openai import OpenAI langfuse = Langfuse( public_key="pk-lf-...", secret_key="sk-lf-...", host="https://cloud.langfuse.com" ) openai = OpenAI() def generate_email(user_input: str, user_id: str): trace = langfuse.trace( name="email_generation", user_id=user_id, metadata={"source": "web"} ) span1 = trace.span(name="intent_detection") intent_prompt = f"判断用户意图:{user_input}" response1 = openai.chat.completions.create( model="gpt-5.5", messages=[{"role": "user", "content": intent_prompt}] ) span1.end( output=response1.choices[0].message.content, metadata={ "tokens_input": response1.usage.prompt_tokens, "tokens_output": response1.usage.completion_tokens } ) intent = response1.choices[0].message.content span2 = trace.span(name="email_drafting") email_prompt = f"根据意图 '{intent}' 生成邮件" response2 = openai.chat.completions.create( model="gpt-5.5", messages=[{"role": "user", "content": email_prompt}] ) span2.end( output=response2.choices[0].message.content, metadata={ "tokens_input": response2.usage.prompt_tokens, "tokens_output": response2.usage.completion_tokens } ) email = response2.choices[0].message.content trace.update( output=email, metadata={"total_spans": 2} ) return email

Prompt追踪的最佳实践

记录完整Prompt是关键——不要只记用户输入,要记最终发给LLM的全部内容,包括system prompt和few-shot示例。另外,Prompt模板要有版本号,方便追踪哪个版本效果好;A/B测试的分组信息要记在metadata里;用户输入如果有个人信息,记得脱敏再记录。

维度2:Tool Call追踪——你的Agent在“做”什么?

Agent的工具调用链

到了2026年,AI Agent早就不是简单的问答机器了。它们会搜索互联网获取实时信息,调用API查询数据库,执行代码做计算,甚至操作浏览器完成复杂任务。一个Agent任务可能调用5到20个工具,没有追踪,你根本不知道它在后台折腾什么。

Tool Call追踪需要记录的内容包括工具名称、版本号、调用参数、响应结果、延迟、重试次数、错误信息,还有缓存命中率和是否被限流等细节。

下面是一个用装饰器自动追踪工具调用的示例:

from langfuse import Langfuse from typing import Callable, Any langfuse = Langfuse() def tracked_tool_call(trace, tool_name: str, func: Callable, **kwargs): span = trace.span( name=f"tool_call:{tool_name}", input=kwargs ) try: result = func(**kwargs) span.end( output=result, metadata={"success": True} ) return result except Exception as e: span.end( output=None, metadata={ "success": False, "error_type": type(e).__name__, "error_message": str(e) } ) raise def search_web(query: str, num_results: int = 5): return {"results": [...], "count": num_results} trace = langfuse.trace(name="research_agent") results = tracked_tool_call( trace, "web_search", search_web, query="AI market size 2026", num_results=5 )

工具调用的常见陷阱

陷阱表现解决方案
工具超时Agent卡在某个工具调用设置超时 + 重试机制
工具幻觉Agent调用不存在的工具工具注册表 + 严格校验
工具滥用简单任务调用过多工具优化工具选择逻辑
工具依赖工具A失败导致工具B也失败记录依赖关系 + 级联错误处理

维度3:Trace链路追踪——完整的“故事线”

什么是Trace?

Trace是一次完整用户请求的全部调用链路。传统软件里,一个HTTP请求可能经过多个微服务调用和数据库查询才返回响应;在AI系统里,一个用户输入可能触发多个Prompt、多次LLM调用、多个Tool Call才能输出最终结果。Trace让你看到完整的故事线,而不是零散的片段。

一个典型的Trace层级结构大概长这样:

用户请求“帮我分析这个CSV文件” → Span1(意图识别,含一次LLM调用)→ Span2(文件读取,一次Tool Call)→ Span3(数据分析,含一次LLM调用和一次代码执行)→ Span4(报告生成)→ Span5(结果格式化)。算下来,这单次请求就用了4次LLM调用和2次工具调用,总延时4.6秒,消耗了7350个Token。

Trace的核心价值

用户说“响应太慢”,Trace能告诉你慢在哪个环节;发现某个Span耗时最长,就能针对性优化。成本分析方面,每次请求花了多少Token、哪些Prompt最贵,数据清清楚楚。还可以对比成功和失败的Trace,找出差异所在。

维度4:Token追踪——你的AI花了多少钱?

为什么Token追踪如此重要?

看看2026年各大模型的价格就知道了。GPT-5.5的输入价格是每百万Token 15美元,输出是60美元;Claude Opus 4的输出更是到了75美元;DeepSeek-V4相对便宜,输入只要0.55美元。一个复杂的Agent任务可能轻松消耗一万以上的Token,成本在0.5到1美元。如果你的系统日处理一万个请求,用低成本模型每天50到100美元,用高成本模型直接飙到5000到10000美元。

没有Token追踪,你只能月底看账单傻眼。有了它,实时监控、预警、优化,一套全搞定。

完整的AI可观测性架构

这四个维度怎么整合?用户请求进来,Trace链路追踪贯穿始终。每个Span里,Prompt追踪记录完整Prompt和LLM调用,Tool Call追踪记录工具调用和执行结果,Token追踪聚合所有Span的Token消耗。一线贯穿,环环相扣。

技术栈方面,开源方案首推Langfuse(支持全维度,集成容易,适合中小团队),另一条路是用OpenTelemetry加上自定义方案。商业方案有LangSmith(与LangChain深度集成,调试和评估功能强)和Helicone(专注LLM监控,成本追踪做得不错)。

实战案例:一个完整的可观测性改造

用一个电商客服AI系统的改造来感受一下实际效果。改造前的问题非常典型:没有Prompt追踪,没有Tool Call追踪,没有Trace,没有Token追踪。改造方案就是接入Langfuse,加上自定义追踪,再构建监控仪表盘。

结果相当惊人:问题定位时间从2到4小时降到了5到10分钟,P95延迟从8.5秒降到3.2秒,日均成本从450美元降到280美元,用户满意度从3.2分升到4.3分。关键发现包括:某个Tool Call(查询订单系统)的P95延迟本来是4.2秒,优化后降到0.8秒;Prompt模板里的few-shot示例过时了,更新后准确率提升25%;还有30%的请求其实可以用更便宜的处理。

最佳实践:AI可观测性的10条原则

总结一下:从第一天就接入可观测性,不要等上线后再补。追踪一切但要有重点,重点关注高成本功能、高延迟环节和高错误率路径。结构化Trace,使用清晰的命名规范。记录足够的上下文,输入输出、模型参数、Token消耗、延迟、错误信息、业务上下文,一样不能少。

设置合理的告警——P95延迟大于5秒、错误率超过5%、成本超过预算80%、单次请求Token超过一万,这些都是值得关注的红线。每周定期回顾最慢的10个Trace、最贵的10个Trace和失败的Trace。建立团队的成本意识,让每个人都了解每个功能的日均成本、每个用户的平均成本和每次LLM调用的平均成本。

持续优化Prompt,基于Trace数据缩短不必要的Prompt、优化few-shot示例、调整参数。做好版本管理,Prompt模板版本、模型版本、工具版本、代码版本一个都不能漏。最后,安全与隐私是底线,脱敏敏感信息,控制数据访问权限,遵守数据保留政策。

总结:从黑盒到透明

AI可观测性不是可选项,而是必选项。没有可观测性的AI系统,问题定位靠猜、性能优化靠感觉、成本控制靠月底账单、质量改进靠用户反馈。有了可观测性,问题定位靠数据、性能优化靠分析、成本控制靠实时监控、质量改进靠A/B测试。

记住这四个维度:Prompt追踪告诉你AI在想什么,Tool Call追踪告诉你Agent在做什么,Trace链路追踪给你完整的故事线,Token追踪告诉你花了多少钱。从今天开始,别让你的AI系统继续当黑盒了。


参考资料:

  1. Langfuse官方文档(https://langfuse.com/docs)
  2. LangSmith官方文档(https://docs.smith.langchain.com)
  3. OpenTelemetry for LLMs(https://opentelemetry.io/blog/2024/genai)
  4. AI Trust OS: Continuous Governance for Autonomous AI(https://arxiv.org/abs/2604.04749)
  5. Governance-Aware Agent Telemetry(https://arxiv.org/abs/2604.05119)
  6. From Confident Closing to Silent Failure(https://arxiv.org/abs/2606.09863)

相关下载