以编程方式使用文档

追踪 JavaScript 函数时,LangSmith 默认会在后台追踪运行以避免增加延迟。在无服务器环境中,执行上下文可能会突然终止,因此在函数完成之前确保所有追踪数据正确刷新非常重要。

为确保此操作,您可以:

  • * 设置名为 LANGSMITH_TRACING_BACKGROUND to "false"的环境变量。这将导致您的追踪函数在返回之前等待追踪完成。
  • * 请注意,这与 环境变量 在 LangChain.js 中的命名不同,因为 LangSmith 可以独立于 LangChain 使用。
  • * 将自定义客户端传递到您的追踪运行中并 awaitclient.awaitPendingTraceBatches(); method.

以下是一个使用 awaitPendingTraceBatches 以及 traceable method:

const langsmithClient = new Client({});
const tracedFn = traceable(
  async () => {
    return "Some return value";
  },
  {
    client: langsmithClient,
  }
);
const res = await tracedFn();
await langsmithClient.awaitPendingTraceBatches();

高并发时的速率限制

默认情况下,LangSmith 客户端会批量处理追踪运行中的操作,每隔几毫秒发送一个新的批次。

在大多数情况下效果很好,但如果您的追踪函数运行时间较长且并发量非常高,您可能还会遇到与总体请求数相关的速率限制。

如果您看到与此相关的速率限制错误,可以尝试在客户端中设置 manualFlushMode: true ,如下所示:

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().