Webhooks 支持从你的 LangSmith 应用程序向外部服务进行事件驱动的通信。例如,当对 LangSmith 的 API 调用完成运行后,你可能希望向另一个服务发送一个更新。 许多 LangSmith 的端点接受一个 webhook 参数。如果一个可以接受 POST 请求的端点指定了此参数,LangSmith 将在运行完成时发送一个请求。 在使用 LangSmith 时,你可能希望使用 Webhooks 在 API 调用完成后接收更新。Webhooks 非常适合在运行处理完成后触发你服务中的操作。要实现此功能,你需要暴露一个可以接受 POST 请求的端点,并在你的 API 请求中将该端点作为 webhook 参数传递。 目前,SDK 没有为定义 webhook 端点提供内置支持,但你可以通过 API 请求手动指定它们。

支持的端点

以下 API 端点接受 webhook 参数: 在本指南中,我们将展示如何在流式运行后触发一个 webhook。

设置你的助手和线程

在进行 API 调用之前,先设置好你的助手和线程。
示例响应:

在图运行中使用 Webhook

要使用 webhook,请在你的 API 请求中指定 webhook 参数。当运行完成时,LangSmith 会向指定的 webhook URL 发送一个 POST 请求。 例如,如果你的服务器在 https://my-server.app/my-webhook-endpoint 监听 webhook 事件,请在请求中包含此 URL:

Webhook 负载

LangSmith 以 Run 的格式发送 webhook 通知。请求负载包含运行的输入、配置和其他元数据,位于 kwargs 字段中。除了标准运行字段外,webhook 负载还包括 values、webhook_sent_at 和 error 字段。 完整的 webhook 负载包含以下字段: 示例负载:
当运行失败时,error 字段包含失败详情:

安全 Webhook

为确保只有授权的请求能到达你的 webhook 端点,考虑添加安全令牌作为查询参数:
你的服务器应该在处理请求之前提取并验证此令牌。

为 Webhook 请求添加头部

适用于 langgraph-api>=0.5.36。
你可以配置静态头部,以便包含在所有出站 webhook 请求中。这对于认证、路由或向你的 webhook 端点传递元数据非常有用。 在你的 langgraph.json 文件中添加 webhooks.headers 配置:

在头部中使用环境变量

要包含密钥或特定于环境的值而不将它们检入配置文件,可以使用 ${{ env.VAR }} 模板语法:
为了安全起见,默认情况下只能引用以 LG_WEBHOOK_ 开头的环境变量。这可以防止意外泄露不相关的环境变量。你可以使用 env_prefix 自定义此前缀:
缺少必需的环境变量将阻止服务器启动,确保你不会在配置不完整的情况下进行部署。

限制 Webhook 目标

适用于 langgraph-api>=0.5.36。
出于安全或合规目的,你可以使用 webhooks.url 配置来限制哪些 URL 是有效的 webhook 目标:
可用选项:

禁用 Webhooks

从 langgraph-api>=0.2.78 起,开发者可以在 langgraph.json 文件中禁用 webhooks:
此功能主要面向自托管部署,平台管理员或开发者可能倾向于禁用 webhooks 以简化其安全态势——尤其是在他们没有配置防火墙规则或其他网络控制的情况下。禁用 webhooks 有助于防止不受信任的负载被发送到内部端点。 有关完整配置详情,请参阅配置文件参考。

测试 Webhooks

你可以使用以下在线服务测试你的 webhook:
  • Beeceptor – 快速创建一个测试端点并检查传入的 webhook 负载。
  • Webhook.site – 实时查看、调试和记录传入的 webhook 请求。
这些工具可帮助你验证 LangSmith 是否正确地触发并向你的服务发送了 webhooks。