Link prompts to observations with Google ADK

用户使用 Google ADK 的 FastAPI 预构建应用 (`get_fast_api_app`) 并搭配 Langfuse 进行追踪。用户尝试将 prompt、input、output、session_id、user_id 等信息关联到已有的 trace 中,但发现这些字段缺失。用户参考了

Link prompts to observations with Google ADK

Link prompts to observations with Google ADK

快速结论:当从 Langgraph 迁移到 Google ADK 并尝试通过 Langfuse 实现可观测性时,直接在 ADK 创建的 OpenTelemetry span 上设置属性(如 `langfuse.prompt.name`、`input.value`、`user_id`),而不是试图合并两个独立的观测(observation)。优先排查是否在正确的 span 上设置了所有必需的属性。

问题场景

用户使用 Google ADK 的 FastAPI 预构建应用 (`get_fast_api_app`) 并搭配 Langfuse 进行追踪。用户尝试将 prompt、input、output、session_id、user_id 等信息关联到已有的 trace 中,但发现这些字段缺失。用户参考了 #6588 讨论后,尝试通过 `trace_context` 添加字段,但过程不直接。

报错原文

some information are missing in the traces, such as the input, output, session_id and user_id

原因分析

Langfuse 和 Google ADK 没有内置的方法来合并两个独立的观测(observation)。问题在于尝试创建额外的自定义观测(例如通过 `trace_context` 或额外调用 `@observe`),而不是在 ADK 已创建的 span 上直接富集所有需要的元数据。这导致一些字段(如 input/output)没有被正确关联到主要的生成观测上。

环境排查

  • 确认 Langfuse SDK 版本(建议使用最新版)。
  • 确认 Google ADK 版本。
  • 确认 OpenTelemetry 初始化顺序:Langfuse 实例化需要在 FastAPI 应用启动之后,以保证 tracer 正确初始化。
  • 确认 `tracer_provider` 参数是否正确传入 `Langfuse` 构造函数。

解决步骤

  1. 直接在 ADK 创建的 span 上设置属性:不要创建额外的观测。使用 OpenTelemetry 的 start_as_current_span 或获取当前活跃 span 后,通过 set_attribute 方法设置以下属性:
    • langfuse.prompt.name — prompt 名称
    • langfuse.prompt.version — prompt 版本
    • input.value — 输入数据
    • output.value — 输出数据(在 LLM 调用后设置)
    • user_id — 用户标识
    • session_id — 会话标识
  2. 确保属性设置在正确的 span 上:尽量在 LLM 调用生成的 span 上设置这些属性,这样 prompt 和所有可观测性字段会关联到同一个观测中。
  3. 如果使用 @observe(as_type="generation") 装饰器:只调用一次 update 方法,且尽可能在输出可用之后(延迟调用)。过早或多次更新可能导致更新丢失。
  4. 避免创建额外的、不完整的观测:不要在 span 结束后再尝试通过 observation ID 更新,除非使用底层 SDK 方法。
  5. 为 generations/spans 设置唯一名称:以确保 trace 清晰且易于 evaluator 定位。

验证方法

在 Langfuse UI 中检查对应 trace 的详细视图,确认 inputoutputsession_iduser_id 以及 prompt 信息(name/version)是否完整显示在正确的观测下,而不是出现在独立的、不完整的观测中。

参考来源

langfuse/langfuse #7937

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 13775

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注