对于自托管安装或区域 SaaS,请在下面的请求中相应地更新 LangSmith URL:欧盟 (GCP) 使用
eu.api.smith.langchain.com;AWS 托管的美国 SaaS 使用 aws.api.smith.langchain.com。追踪 LangChain 应用程序
如果您使用 LangChain 或 LangGraph,请使用内置集成来追踪您的应用程序:-
安装支持 OpenTelemetry 的 LangSmith 包:
需要 Python SDK 版本
langsmith>=0.3.18。我们推荐langsmith>=0.4.25以获得重要的 OpenTelemetry 修复。 -
在您的 LangChain/LangGraph 应用程序中,通过设置
LANGSMITH_OTEL_ENABLED环境变量启用 OpenTelemetry 集成: -
创建一个带有追踪功能的 LangChain 应用程序。例如:
- 应用程序运行后,在 LangSmith 仪表板中查看追踪数据(示例)。
追踪非 LangChain 应用程序
对于非 LangChain 应用程序或自定义检测,您可以使用标准的 OpenTelemetry 客户端在 LangSmith 中追踪您的应用程序。(我们推荐 langsmith ≥ 0.4.25。)-
安装 OpenTelemetry SDK、OpenTelemetry 导出器包以及 OpenAI 包:
-
设置端点的环境变量,替换为您特定的值:
根据您的 otel 导出器的配置方式,如果您只发送追踪数据,可能需要将
/v1/traces附加到端点。可选:指定一个不同于 “default” 的自定义项目名称:如果您是自托管 LangSmith,请将基础端点替换为您的 LangSmith API 端点并附加/api/v1。例如:OTEL_EXPORTER_OTLP_ENDPOINT=https://ai-company.com/api/v1/otel -
记录一个追踪。
此代码设置一个 OTEL 追踪器和导出器,用于将追踪数据发送到 LangSmith。然后调用 OpenAI 并发送所需的 OpenTelemetry 属性。
- 在 LangSmith 仪表板中查看追踪数据(示例)。
将追踪发送到备用提供商
虽然 LangSmith 是 OpenTelemetry 追踪的默认目标,但您也可以配置 OpenTelemetry 将追踪发送到其他可观测性平台。在 LangSmith Python SDK ≥ 0.4.1 中可用。我们推荐 ≥ 0.4.25,其中包含改进 OTEL 导出和混合扇出稳定性的修复。
使用环境变量进行全局配置
默认情况下,LangSmith OpenTelemetry 导出器会将数据发送到 LangSmith API OTEL 端点,但可以通过设置标准 OTEL 环境变量来自定义:- 如上所示设置 OTEL 环境变量,或者
- 在初始化 LangChain 组件之前设置全局追踪提供程序,LangSmith 将检测并使用它,而不是创建自己的。
配置备用 OTLP 端点
要将追踪发送到不同的提供程序,请使用提供程序的端点配置 OTLP 导出器:混合追踪在版本 ≥ 0.4.1 中可用。要仅将追踪发送到您的 OTEL 端点,请设置:
LANGSMITH_OTEL_ONLY="true"
(推荐:使用 langsmith ≥ 0.4.25。)支持的 OpenTelemetry 属性和事件映射
通过 OpenTelemetry 将追踪发送到 LangSmith 时,以下属性会映射到 LangSmith 字段:核心 LangSmith 属性
GenAI 标准属性
GenAI 请求参数
GenAI 使用指标
TraceLoop 属性
OpenInference 属性
LLM 属性
提示模板属性
检索器属性
工具属性
Logfire 属性
OpenTelemetry 事件映射
事件属性提取
对于消息事件,提取以下属性:content→ 消息内容role→ 消息角色id→ tool_call_id(用于工具消息)gen_ai.event.content→ 完整消息 JSON
finish_reason→ 选择完成原因message.content→ 选择消息内容message.role→ 选择消息角色tool_calls.{n}.id→ 工具调用 IDtool_calls.{n}.function.name→ 工具函数名称tool_calls.{n}.function.arguments→ 工具函数参数tool_calls.{n}.type→ 工具调用类型
exception.message→ 错误消息exception.stacktrace→ 错误堆栈跟踪(附加到消息)
实现示例
使用 LangSmith SDK 进行追踪
使用 LangSmith SDK 的 OpenTelemetry 辅助工具配置导出。以下示例追踪一个 Google ADK 代理:您无需设置 OTEL 环境变量或导出器。
configure() 会自动为 LangSmith 配置它们;检测器(如 GoogleADKInstrumentor)创建 span。向追踪添加附件
LangSmith 支持向追踪附加文件。这在构建具有多模态输入或输出的代理时非常有用。使用 OpenTelemetry 追踪时也支持附件。 下面的示例追踪一个 Google ADK 代理并向追踪添加附件。它结合使用了 LangSmith 的OtelSpanProcessor 和一个自定义的 AttachmentSpanProcessor,后者使用 on_end() 向父 span 添加图像附件。
高级配置
使用 OpenTelemetry collector 进行扇出
当您需要 OTEL 扇出时,请使用LANGSMITH_OTEL_ENABLED=true。配置您的应用程序发出一次 OTEL span,然后使用 OpenTelemetry Collector 将它们路由到 LangSmith 和任何其他可观测性后端。
当您正在追踪应用程序并希望进行多目标路由时,请使用此方法。如果您正在操作 LangSmith 平台基础设施遥测(来自 Kubernetes 上自托管 LangSmith 服务的日志、指标、追踪),请改用为 LangSmith 遥测配置您的 collector 指南。
对于更高级的场景,您可以使用 OpenTelemetry Collector 将您的遥测数据扇出到多个目标。这比在应用程序代码中配置多个导出器更具可扩展性。
- 为您的环境安装 OpenTelemetry Collector。
-
创建一个配置文件(例如
otel-collector-config.yaml),导出到多个目标: -
配置您的应用程序发送到 collector:
- 所有遥测目标的集中配置
- 减少应用程序代码中的开销
- 更好的可扩展性和弹性
- 无需更改应用程序代码即可添加或删除目标
使用 LangChain 和 OpenTelemetry 进行分布式追踪
当您的 LLM 应用程序跨越多个服务或进程时,分布式追踪至关重要。OpenTelemetry 的上下文传播功能确保追踪在服务边界之间保持连接。分布式追踪中的上下文传播
在分布式系统中,上下文传播在服务之间传递追踪元数据,以便将相关的 span 链接到同一追踪:- Trace ID:整个追踪的唯一标识符
- Span ID:当前 span 的唯一标识符
- 采样决策:指示是否应采样此追踪
使用 LangChain 设置分布式追踪
要启用跨多个服务的分布式追踪:将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。

