您可以使用 LangSmith 来跟踪 Vercel AI SDK 的运行。本指南向您展示如何为 AI SDK v5、v6 和 v7 设置跟踪。

安装

安装 Vercel AI SDK、一个模型提供者包和 LangSmith。本指南的以下代码片段使用 Vercel 的 OpenAI 集成,但您可以使用任何其他 Vercel AI SDK 提供者。
LangSmithTelemetry 需要 AI SDK v7,并且可在 langsmith>=0.7.2 中使用。

环境配置

Shell

基本设置

注册一次 LangSmithTelemetry,然后像往常一样使用 AI SDK 方法。
您应该会在 LangSmith 仪表板中看到一个跟踪,像这个一样。您还可以跟踪带有工具调用的运行:
这将产生一个类似这个的跟踪。
您可以像往常一样使用其他 AI SDK 方法。

结合 traceable

您可以将 traceable 调用包装在 AI SDK 调用周围,或者放在 AI SDK 工具调用内部。如果您想在 LangSmith 中对运行进行分组,这很有用。
生成的跟踪将看起来像这个。

在无服务器环境中进行跟踪

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

传递 LangSmith 配置

您可以传递 LangSmith 特定的配置,例如元数据、运行名称、标签和自定义客户端实例。
如果您全局注册集成,该配置将应用于未来的 AI SDK 调用:
要将配置应用于单个运行,请在该 AI SDK 调用中传递一个遥测集成:

编辑(脱敏)数据

您可以通过指定自定义的输入/输出处理函数来自定义 AI SDK 发送给 LangSmith 的输入和输出内容。如果您处理的是敏感数据,希望避免发送到 LangSmith,这很有用。 因为输出格式取决于您使用的 AI SDK 方法,我们建议为每次 AI SDK 调用单独定义和传递遥测配置。您还需要为 AI SDK 调用内部的子 LLM 运行提供单独的函数,因为顶层的 generateText 调用会在内部调用 LLM,并且可能多次调用。 以下是 generateText 的一个示例:
实际的返回值将包含原始的、未经编辑的结果,但 LangSmith 中的跟踪将被编辑(脱敏)。 对于工具输入/输出的编辑(脱敏),请像这样将您的 execute 方法包装在 traceable 中:
traceable 的返回类型比较复杂,因此需要进行类型转换。如果您希望避免类型转换,也可以省略 AI SDK 的 tool 辅助函数。