跳到主要内容
本节内容适用于使用 LangSmith JS SDK 0.2.0 及更高版本的用户。如果您在无服务器环境中使用 LangChain.js 或 LangGraph.js 进行追踪,请参阅本指南
追踪 JavaScript 函数时,LangSmith 默认会在后台追踪运行,以避免增加延迟。在执行上下文可能突然终止的无服务器环境中,确保所有追踪数据在函数完成前正确刷新至关重要。 为确保这一点,您可以:
  • 将名为 LANGSMITH_TRACING_BACKGROUND 的环境变量设置为 "false"。这将使您的追踪函数在返回之前等待追踪完成。
    • 请注意,这与 LangChain.js 中的环境变量名称不同,因为 LangSmith 可以在不使用 LangChain 的情况下使用。
  • 将自定义客户端传递到您的追踪运行中,并 await 调用 client.awaitPendingTraceBatches(); 方法。
以下是结合traceable方法使用 awaitPendingTraceBatches 的示例
import { Client } from "langsmith";
import { traceable } from "langsmith/traceable";
const langsmithClient = new Client({});
const tracedFn = traceable(
  async () => {
    return "Some return value";
  },
  {
    client: langsmithClient,
  }
);
const res = await tracedFn();
await langsmithClient.awaitPendingTraceBatches();

高并发下的速率限制

默认情况下,LangSmith 客户端会批量处理您的追踪运行执行操作,每隔几毫秒发送一个新批次。 这在大多数情况下都有效,但如果您的追踪函数是长时间运行的并且并发性非常高,您也可能会遇到与整体请求数量相关的速率限制。 如果您看到与此相关的速率限制错误,您可以尝试在客户端中设置 manualFlushMode: true,如下所示:
import { Client } from "langsmith";
const langsmithClient = new Client({  manualFlushMode: true,});
const myTracedFunc = traceable(
  async () => {
    // Your logic here...
  },
  { client: langsmithClient }
);
然后在无服务器函数关闭之前,手动调用 client.flush(),如下所示
try {
  await myTracedFunc();
} finally {
  await langsmithClient.flush();
}
请注意,在您调用 .flush() 之前,运行不会显示在 LangSmith UI 中。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.