Skip to main content
Temporal 是一个持久化执行平台,使开发者能够构建弹性的分布式应用程序。本指南将向您展示如何使用 OpenTelemetry 在 LangSmith 中追踪 Temporal 工作流和活动。 LangSmith 支持 OpenTelemetry (OTEL) 追踪数据摄取,可与 Temporal 原生的 OpenTelemetry 拦截器无缝集成。这使得您可以在工作流执行、活动以及其中的任何 LLM 调用之间实现完整的分布式追踪。

先决条件

  • 一个 LangSmith 账户 和 API 密钥
  • 正在运行的 Temporal 服务器(本地或云端)
  • 适用于您所用语言的 OpenTelemetry SDK

环境变量

为所有实现设置以下环境变量:
对于欧盟区域或自托管的 LangSmith 安装,还需将 LANGCHAIN_BASE_URL 设置为您的 LangSmith 实例 URL。

设置追踪

Go 使用 langsmith-go SDK 和 Temporal 的 OpenTelemetry 拦截器来自动追踪工作流和活动。
1

安装

安装 LangSmith Go SDK、Temporal SDK 和 OpenTelemetry 拦截器:
2

初始化追踪器

初始化 LangSmith 追踪器,创建 Temporal 的 OpenTelemetry 拦截器,并将其注册到 Temporal 客户端和工作线程:
3

定义工作流和活动

定义一个执行活动的工作流。该活动演示了如何为 LangSmith 可见性添加自定义跨度属性:
4

执行工作流

在一个单独的客户端应用程序中,初始化追踪器并执行工作流:
client.go

在 LangSmith 中查看追踪数据

配置完成后,追踪数据将出现在您的 LangSmith 项目中:
  1. 导航到您的 LangSmith 实例。
  2. 选择您的项目。
  3. Tracing 选项卡中查看追踪数据。
  4. 点击单个追踪以查看完整的跨度层次结构。

配置选项

设置自定义服务名称

设置自定义服务名称以区分不同的 Temporal 工作线程或服务:

添加自定义跨度属性

添加自定义属性以丰富您的追踪数据:

配置采样

对于高流量的工作流,配置采样以减少追踪数据量:

故障排除

追踪数据未出现

  1. 验证 API 密钥:确保 LANGSMITH_API_KEY 设置正确
  2. 检查端点:确认您使用的是 https://api.smith.langchain.com/otel/v1/traces
  3. 在关闭时刷新:在应用程序退出前调用 provider.shutdown() 以刷新待处理的跨度
  4. 检查项目:验证追踪数据是否发送到正确的项目(默认为 "default"

缺少活动跨度

确保在客户端和工作线程上都配置了追踪拦截器:
  • 客户端:需要拦截器来启动工作流
  • 工作线程:需要拦截器来执行活动

上下文传播问题

验证传播器是否正确配置:
  • Golangsmith.NewTracer() 自动配置传播器
  • Python/TypeScript:确保 OpenTelemetry SDK 已正确初始化并配置了追踪传播器

工作线程关闭挂起

如果追踪数据未刷新,请确保使用适当的超时调用关闭方法:

后续步骤

其他资源