如果你正在使用 LangChain(Python 或 JS/TS),请直接前往 LangChain 专用说明。
前提条件
开始追踪前,请设置以下环境变量:LANGSMITH_TRACING=true:启用追踪。设置此变量可以在不更改代码的情况下开启或关闭追踪。LANGSMITH_API_KEY:你的 LangSmith API 密钥。
要禁用追踪,请移除
LANGSMITH_TRACING 环境变量。这不会影响 RunTree 对象或直接 API 使用,它们是底层操作,不受追踪开关控制。使用 @traceable / traceable
推荐的方法是使用 @traceable 装饰器(Python)或 traceable 包装器(TypeScript)。将其应用于任何函数,使其成为被追踪的运行,LangSmith 会自动处理嵌套调用间的上下文传播。
以下示例追踪一个简单的流水线:run_pipeline 调用 format_prompt 构建消息,调用 invoke_llm 调用模型,并调用 parse_output 提取结果。
每个函数都被单独追踪,并且由于它们是从 run_pipeline(同样被追踪)内部调用的,LangSmith 会自动将它们嵌套为子运行。invoke_llm 使用 run_type="llm" 将其标记为 LLM 调用,以便 LangSmith 能正确渲染令牌计数和延迟:
run_pipeline 追踪,其中包含嵌套为子运行的 format_prompt、invoke_llm 和 parse_output。
当你用
traceable 包装一个同步函数时(例如,前面示例中的 formatPrompt),调用时请使用 await 关键字,以确保追踪被正确记录。使用 trace 上下文管理器(仅限 Python)
在 Python 中,你可以使用 trace 上下文管理器将追踪记录到 LangSmith。这在以下情况下很有用:
- 你想为特定的代码块记录追踪。
- 你想控制追踪的输入、输出和其他属性。
- 使用装饰器或包装器不可行。
- 以上任意或全部情况。
traceable 装饰器和 wrap_openai 包装器无缝集成,因此你可以在同一个应用程序中一起使用它们。
以下示例展示了三者一起使用的情况。wrap_openai 包装了 OpenAI 客户端,使其调用自动被追踪。my_tool 使用 @traceable 并设置 run_type="tool" 和自定义 name,以便在追踪中正确显示。chat_pipeline 本身没有装饰——相反,ls.trace 包装了调用,让你可以显式传递项目名称和输入,并通过 rt.end() 手动设置输出:
使用 RunTree API
另一种更显式地将追踪记录到 LangSmith 的方式是通过 RunTree API。这个 API 让你对追踪有更多控制权——你可以手动创建运行和子运行来组装你的追踪。你仍然需要设置 LANGSMITH_API_KEY,但 LANGSMITH_TRACING 对于此方法不是必需的。
此方法不推荐使用,因为在传播追踪上下文时更容易出错。
使用示例
你可以扩展前面章节中解释的工具来追踪任何代码。以下代码展示了一些扩展示例。 追踪类中的任何公共方法:确保所有追踪在退出前提交
LangSmith 在后台线程中执行追踪,以避免阻塞你的生产应用程序。这意味着你的进程可能在所有追踪成功发布到 LangSmith 之前就结束了。以下是确保在退出应用程序前提交所有追踪的一些选项。使用 LangSmith SDK
如果你独立使用 LangSmith SDK,可以在退出前使用flush 方法:
使用 LangChain
如果你正在使用 LangChain,请参考我们的 LangChain 追踪指南。 如果你更喜欢视频教程,请查看 LangSmith 入门课程中的 追踪基础视频。Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

