Skip to main content
你可以使用 LangSmith 来追踪 Vercel AI SDK 的运行。本指南将通过一个示例进行说明。

安装

此包装器要求 AI SDK v5 和 langsmith>=0.3.63。如果你使用的是旧版本的 AI SDK 或 langsmith,请参阅基于 OpenTelemetry (OTEL) 的方法在此页面
安装 Vercel AI SDK。本指南在下面的代码片段中使用 Vercel 的 OpenAI 集成,但你也可以使用他们的其他任何选项。

环境配置

基本设置

导入并包装 AI SDK 方法,然后像往常一样使用它们:
你应该能在 LangSmith 仪表板中看到一个追踪记录,类似这样 你也可以追踪带有工具调用的运行:
这将产生一个追踪记录,类似这样 你可以像往常一样使用其他 AI SDK 方法。

使用 traceable

你可以在 AI SDK 调用周围或 AI SDK 工具调用内部包装 traceable 调用。如果你想在 LangSmith 中将运行分组,这很有用:
生成的追踪记录将类似这样

在无服务器环境中追踪

在无服务器环境中追踪时,必须在环境关闭前等待所有运行刷新完毕。为此,你可以在包装 AI SDK 方法时传递一个 LangSmith Client 实例,然后调用 await client.awaitPendingTraceBatches()。 确保也将其传递给你创建的任何 traceable 包装器:
如果你使用 Next.js,有一个方便的 after 钩子,你可以在其中放置此逻辑:
有关更多详细信息,包括在无服务器环境中管理速率限制的信息,请参阅在无服务器环境中追踪 JS 函数

传递 LangSmith 配置

你可以通过 providerOptions.langsmith 在初始包装 AI SDK 方法时以及运行它们时传递 LangSmith 特定的配置。这包括元数据(稍后可用于在 LangSmith 中过滤运行)、顶级运行名称、标签、自定义客户端实例等。 包装时传递的配置将应用于你使用包装方法进行的所有未来调用:
而通过 providerOptions.langsmith 在运行时传递的配置仅适用于该次运行。 我们建议导入并使用 createLangSmithProviderOptions 包装你的配置,以确保正确的类型:

指定自定义运行 ID

你可以使用 providerOptionscreateLangSmithProviderOptions 为每次调用预先指定一个运行 ID。使用 LangSmith SDK 中的 uuid7() 生成有效的 ID:
有关手动指定运行 ID 的更多详细信息,请参阅指定自定义运行 ID

数据脱敏

你可以通过指定自定义的输入/输出处理函数来定制 AI SDK 发送到 LangSmith 的内容。如果你处理的是敏感数据并希望避免发送到 LangSmith,这很有用。 由于输出格式根据你使用的 AI SDK 方法而异,我们建议单独定义配置并传递到包装的方法中。你还需要为 AI SDK 调用内部的子 LLM 运行提供单独的函数,因为在顶层调用 generateText 会在内部调用 LLM,并且可能多次调用。 我们还建议向 createLangSmithProviderOptions 传递一个泛型参数,以获取输入和输出的正确类型。 以下是 generateText 的示例:
实际的返回值将包含原始的、未脱敏的结果,但 LangSmith 中的追踪记录将被脱敏。这是一个示例 对于工具输入/输出的脱敏,像这样将你的 execute 方法包装在 traceable 中:
traceable 的返回类型很复杂,因此需要进行类型转换。如果你希望避免类型转换,也可以省略 AI SDK 的 tool 包装函数。