首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Elastic APM 中的 LLM 追踪:在 Span 视图中查看提示、响应和 Token 计数

Elastic APM 中的 LLM 追踪:在 Span 视图中查看提示、响应和 Token 计数

原创
作者头像
点火三周
发布2026-09-02 15:09:13
发布2026-09-02 15:09:13
20
举报

Elastic APM 现在在 trace 视图中提供 LLM 追踪功能。span 弹出窗口中的 GenAI 标签页会显示完整的对话内容,因此你可以阅读系统提示、用户消息和模型响应,并可以复制任意内容。瀑布图中的每个 GenAI span 行都显示输入和输出 token 计数,因此在一个包含二十次 LLM 调用的 agentic trace 中,无需打开任何 span 即可找到消耗 token 最多的那个 span。你的 LLM 调用现在与数据库查询和 HTTP span 位于同一个瀑布图中。

这两个功能均遵循 OTel GenAI 语义约定,并可与任何使用 OTel 埋点的提供方配合使用。如果你的框架已经发出 OTel GenAI span 属性,则无需进行任何更改。

OTel GenAI spans 的结构

GenAI span 将所有内容存储为 span 属性。一个典型的聊天 span 包含:

  • gen_ai.provider.name:提供方(openaianthropicaws.bedrock 等);对于较旧的埋点,支持使用 gen_ai.system 作为后备。
  • gen_ai.operation.name:操作类型(chatembeddings 等)。
  • gen_ai.request.model:被调用的模型。
  • gen_ai.usage.input_tokens:提示消耗的 token 数。
  • gen_ai.usage.output_tokens:响应中生成的 token 数。
  • gen_ai.input.messagesgen_ai.output.messages:对话消息。
  • gen_ai.system_instructions:系统提示。

这两个功能从这些属性中读取数据:

功能

展示内容

出现位置

读取的属性

GenAI 标签页

详细信息(操作类型、请求模型、提供方、输入和输出 token 计数、响应模型、响应 ID)和对话内容(系统提示、用户消息、模型响应)

APM trace 视图中的 span 弹出窗口,以及 Discover 中的 span 弹出窗口

只要有任何 gen_ai.* 属性即出现。对话内容需要 gen_ai.system_instructionsgen_ai.input.messagesgen_ai.output.messages

Token 计数徽章

每个 GenAI span 的输入和输出 token 计数

trace 瀑布图中的每个 GenAI span 行

gen_ai.usage.input_tokensgen_ai.usage.output_tokens

如何在 GenAI 标签页中读取 LLM 提示和响应

当 span 上存在任何 gen_ai.* 属性时,span 弹出窗口会在 Metadata 旁边显示一个专用的 GenAI 标签页。

span 详情弹出窗口中的 GenAI 标签页
span 详情弹出窗口中的 GenAI 标签页

Details 部分显示来自 span 属性的模型元数据:操作类型、请求模型、提供方、输入和输出 token 计数、响应模型和响应 ID。Conversation 部分显示完整的交互内容,由 gen_ai.system_instructions(系统提示)、gen_ai.input.messages(用户消息)和 gen_ai.output.messages(模型响应)填充,每个部分都带有复制按钮,因此你可以从 trace 中提取确切的提示或响应,而无需从格式化表格中抓取文本。

所有原始 span 属性仍可在 Metadata 标签页中访问。

GenAI 标签页也可以在 Discover 的 span 弹出窗口中使用,因此你可以直接在与日志和 trace 数据并列的位置检查 LLM 提示和响应,而无需切换到 APM 视图。

Discover 中 span 弹出窗口的 GenAI 标签页
Discover 中 span 弹出窗口的 GenAI 标签页

LLM 追踪需要什么埋点?

无需在 Kibana 端进行任何配置。当 span 上存在任何 gen_ai.* 属性时,GenAI 标签页会自动出现。完整的对话支持需要 OTel GenAI v1.37.0 span-attribute 模型gen_ai.input.messagesgen_ai.output.messagesgen_ai.system_instructions

使用较旧的 span-events 模型(gen_ai.user.messagegen_ai.assistant.messagegen_ai.choice)的框架将显示 Details 元数据,但不会填充 Conversation 部分。有关当前兼容的埋点列表,请参阅 OTel GenAI 语义约定

要验证,请在 Discover 中打开 span,检查 gen_ai.input.messagesgen_ai.output.messages 是否存在,并确认 Conversation 部分已渲染。

如果你的应用程序已从 GenAI 工作负载向 Elastic 发送 APM 数据,请在 trace 视图中打开任何 GenAI span,并检查 GenAI 标签页。

trace 瀑布图中的 LLM token 使用情况

现在,瀑布图中的每个 GenAI span 行上都显示 token 计数徽章,因此你可以无需深入查看即可扫描整个 trace。在包含十次或二十次 LLM 调用的 agentic trace 中,这让你可以在打开任何 span 之前识别出哪个 span 驱动了 token 消耗。

带有 GenAI span token 计数的 trace 瀑布图
带有 GenAI span token 计数的 trace 瀑布图

每行显示源自 gen_ai.usage.input_tokensgen_ai.usage.output_tokens 的输入和输出 token 计数徽章。行标签是 span 名称,埋点框架通常将其设置为类似 chat gpt-4o-mini 的内容。

瀑布图级别的 token 计数在 agentic trace 中最为有用,其中一系列 LLM 调用使用不同的模型,或使用相同模型但上下文大小不同。

Elastic APM 支持哪些 LLM 提供方进行 GenAI 追踪?

Elastic APM 的 LLM 追踪适用于任何使用 OTel 埋点的提供方:无论你的应用程序使用哪个提供方,GenAI 标签页和瀑布图 token 计数都使用相同的 OTel 属性架构。提供方从 gen_ai.provider.name 读取,对于较旧的埋点,回退到 gen_ai.system

实现此提供方检测的 OTel GenAI 语义约定 目前处于 Development 生命周期。在升级埋点之前,请检查发布说明

如何在 Elastic APM 中启用 LLM 追踪

可用性: 这两个功能在 Elastic Serverless 上作为 Technical Preview 提供,并将在 Elastic Stack 9.6 中作为 Technical Preview 提供。

要试用这些功能:

  1. 使用遵循 OTel GenAI 语义约定(v1.37.0 或更高版本以获得完整的对话支持)的 OTel SDK 对你的 GenAI 应用程序进行埋点。
  2. 使用 OTLP、Elastic APM agent 或 EDOT SDK 将 trace 发送到 Elastic Observability
  3. 在 Kibana 中打开 APM 部分,导航到进行 LLM 调用的服务,并打开任何事务的 trace 瀑布图。

GenAI 标签页会出现在任何设置了至少一个 gen_ai.* 属性的 span 上;当 gen_ai.usage.input_tokensgen_ai.usage.output_tokens 存在时,token 计数徽章会出现。

如果你没有可用于测试的 GenAI 应用程序,otel-genai-chat-app 仓库是一个最小的 OpenAI 聊天应用,已预先使用 EDOT 进行埋点。设置 OPENAI_API_KEY,并按照 README 中的 EDOT 命令将 trace 发送到 Elastic,即可看到这两个功能的效果。

Elastic APM 中 LLM 可观测性的下一步

我们正在探索每个 span 的成本估算(基于模型定价和 token 计数的预估花费,显示在瀑布图中)以及工具调用渲染(对于 agentic span,以结构化方式显示工具/函数调用的输入和输出)。

如果你正在构建 GenAI 应用程序,并希望获得早期访问或分享反馈,请通过 Elastic 社区论坛联系我们,或打开 kibana 仓库中的 issue。

常见问题

Elastic APM 是否允许我在 trace 中查看 LLM 提示和模型响应?

是的。Elastic APM 在 span 弹出窗口中包含一个专用的 GenAI 标签页,其中 Details 部分显示模型元数据,Conversation 部分显示系统提示、用户消息和模型响应。每条消息都包含一个复制按钮。该功能目前在 Elastic Serverless 上作为 Technical Preview 提供,并在 Elastic Stack 9.6 中作为 Technical Preview 提供。

我是否需要更改埋点才能使用 Elastic APM 中的 GenAI span 详细信息?

如果你的 SDK 已经发出 OTel GenAI span 属性,则无需在 Kibana 端进行任何配置。当 span 上存在任何 gen_ai.* 属性时,GenAI 标签页会出现。对话内容由 gen_ai.input.messagesgen_ai.output.messagesgen_ai.system_instructions(OTel GenAI 约定 v1.37.0)填充。仍然使用较旧 span-events 模型的框架将显示 Details 元数据,但不会显示 Conversation 部分。

Elastic APM 如何在 trace 中显示 LLM token 使用情况?

输入和输出 token 计数徽章出现在 trace 瀑布图中的每个 GenAI span 行上,因此你可以扫描整个 agentic trace 的消耗情况,而无需打开单个 span。这些徽章映射到 gen_ai.usage.input_tokensgen_ai.usage.output_tokens

Elastic APM 支持哪些 LLM 提供方和埋点框架进行 GenAI 追踪?

Elastic APM 支持任何遵循 OTel GenAI 语义约定的 OTel 埋点提供方。提供方从 gen_ai.provider.name 读取,对于较旧的埋点,回退到 gen_ai.system

Elastic APM GenAI 标签页需要什么版本的 OTel GenAI 语义约定?

Kibana 的 APM GenAI 标签页使用 OTel GenAI v1.37.0 span-attribute 模型。对话内容从 gen_ai.input.messagesgen_ai.output.messagesgen_ai.system_instructions 读取。仍然发出较旧 span-events 模型(gen_ai.user.messagegen_ai.assistant.messagegen_ai.choice)的框架将显示 Details 元数据,但不会填充 Conversation 部分。

Elastic APM 即将推出哪些 GenAI 可观测性功能?

即将推出的功能包括每个 span 的成本估算以及 trace 视图中的工具调用渲染。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • OTel GenAI spans 的结构
  • 如何在 GenAI 标签页中读取 LLM 提示和响应
  • LLM 追踪需要什么埋点?
  • trace 瀑布图中的 LLM token 使用情况
  • Elastic APM 支持哪些 LLM 提供方进行 GenAI 追踪?
  • 如何在 Elastic APM 中启用 LLM 追踪
  • Elastic APM 中 LLM 可观测性的下一步
    • 常见问题
      • Elastic APM 是否允许我在 trace 中查看 LLM 提示和模型响应?
      • 我是否需要更改埋点才能使用 Elastic APM 中的 GenAI span 详细信息?
      • Elastic APM 如何在 trace 中显示 LLM token 使用情况?
      • Elastic APM 支持哪些 LLM 提供方和埋点框架进行 GenAI 追踪?
      • Elastic APM GenAI 标签页需要什么版本的 OTel GenAI 语义约定?
      • Elastic APM 即将推出哪些 GenAI 可观测性功能?
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档