静态设置目标项目
LangSmith 使用 项目 的概念来分组追踪。如果未指定,项目将设置为default。
您可以设置 LANGSMITH_PROJECT 环境变量,为整个应用程序运行配置自定义项目名称。请在运行应用程序之前设置此项:
动态设置目标项目
您也可以在程序运行时以多种方式设置项目名称,具体取决于您如何注释代码以进行追踪。当您希望在同一个应用程序中将追踪记录到不同项目时,这非常有用:- 在装饰或配置时传递项目名称。
- 在每次单独调用时覆盖它。
- 在直接构造运行时设置它。
使用以下方法之一动态设置项目名称会覆盖由
LANGSMITH_PROJECT 环境变量设置的项目名称。动态设置目标工作区
如果您需要根据运行时配置(例如,将不同用户或租户路由到单独的工作区)将追踪动态路由到不同的 LangSmith 工作区,方法因语言而异:- Python:使用具有
tracing_context的特定于工作区的 LangSmith 客户端。 - TypeScript:将自定义客户端传递给
traceable,或使用带有回调的LangChainTracer。
先决条件
- 一个具有访问多个工作区权限的 LangSmith API 密钥。
- 每个目标工作区的工作区 ID。
通用跨工作区追踪
对于希望根据运行时逻辑(例如,客户 ID、租户或环境)将追踪动态路由到不同工作区的通用应用程序,请使用此方法。 关键组件:- 为每个工作区初始化单独的
Client实例,并指定各自的workspace_id。 - 使用
tracing_context(Python)或将特定于工作区的client传递给traceable(TypeScript)来路由追踪。 - 通过应用程序的运行时配置传递工作区配置。
覆盖 LangSmith 部署的默认工作区
当部署代理到 LangSmith 时,您可以使用图生命周期上下文管理器覆盖追踪发送到的默认工作区。当您希望根据通过config 参数传递的运行时配置,将已部署代理的追踪路由到不同工作区时,这非常有用。
关键点
- 通用跨工作区追踪:使用
tracing_context(Python)或将特定于工作区的client传递给traceable(TypeScript)以将追踪动态路由到不同工作区。 - LangGraph 跨工作区追踪:对于 LangGraph 应用程序,使用带有特定于工作区客户端的
LangChainTracer,并通过callbacks参数附加它。 - LangSmith 部署覆盖:使用图生命周期上下文管理器(Python)根据运行时配置覆盖默认部署工作区。
- 每个
Client实例通过workspaceId参数维护与特定工作区的连接。 - 您可以为每个路由自定义工作区和项目名称。
- 此模式适用于任何 LangSmith 兼容的追踪(LangChain、OpenAI、自定义函数等)。
使用跨工作区追踪进行部署时,请确保您的服务密钥或 PAT 具有所有目标工作区的必要权限。我们建议在生产部署中使用多工作区服务密钥。对于 LangSmith 部署,您必须将具有跨工作区访问权限的服务密钥添加到环境变量中(例如
LS_CROSS_WORKSPACE_KEY),以覆盖部署生成的默认服务密钥。使用副本将追踪写入多个目标
副本允许您同时将每条追踪发送到多个项目或工作区。与每条追踪只发送到一个目标的动态路由模式不同,副本会将追踪并行复制到所有配置的目标。 副本可用于:- 将生产追踪镜像到暂存或个人项目中进行调试。
- 写入多个工作区以实现多租户隔离,而无需更改任何应用程序代码。
- 将追踪发送到同一服务器下的不同项目,并按副本覆盖元数据。
通过环境变量配置副本
将LANGSMITH_RUNS_ENDPOINTS 环境变量设置为 JSON 值。支持两种格式:
-
对象格式:将每个端点 URL 映射到其 API 密钥:
-
数组格式:副本对象列表,当您需要多个副本指向同一 URL 或希望为每个副本设置
project_name时很有用:
在运行时配置副本
您也可以在代码中直接传递副本,当目标因请求或租户而异时,这非常有用。updates 字段将额外字段(例如元数据或标签)合并到特定副本的运行中——主追踪保持不变。副本错误是非致命的:如果副本端点不可用,LangSmith 会记录错误,而不会影响主追踪。
在同一服务器内复制(仅项目副本)
如果所有副本都使用相同的 LangSmith 服务器,您可以省略api_url 和 auth,仅指定 project_name。SDK 会重用默认客户端凭据:
在 LangSmith 和 OpenTelemetry 目标之间路由
您可以在运行时决定给定调用是将追踪发送到 LangSmith、发送到 OpenTelemetry (OTel) 后端,还是同时发送到两者,而无需重新部署或修改应用程序逻辑。当您希望按环境甚至按请求在可观测性后端之间切换时,这非常有用,在运行时做出决策。 使用tracing_mode 构造函数参数或 LANGSMITH_TRACING_MODE 环境变量设置追踪模式。两者接受相同的值;显式的 tracing_mode 参数始终优先于环境变量:
"langsmith"(默认):将追踪原生发送到 LangSmith。"otel":将追踪作为 OpenTelemetry span 导出到配置的 OTel 后端。"hybrid"(仅限 Python):从单个副本同时发送到 LangSmith 和 OTel 后端。
如果您正在使用
Client 上已弃用的 otel_enabled 参数(仅限 Python),请迁移到 tracing_mode:Client(otel_enabled=True) → Client(tracing_mode="hybrid")。otel_enabled 参数将在下一个次要版本中移除。Client 直接传递到副本中,以在运行时应用所需的模式:
Client 上的 tracing_mode 决定了该副本的导出路径。在 Python 中,"hybrid" 模式在单个副本中处理两个目标。在 TypeScript 中,“同时发送到两者”的情况使用两个单独的副本,每个客户端一个,因为没有 "hybrid" 模式。由于每个副本独立解析自己的客户端,您也可以在单个 tracing_context 中混合模式,例如保持一个副本发送到 LangSmith,同时通过第二个副本将相同的追踪转发到 OTel 收集器。
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。

