
Webhook 负载
我们发送到您的 Webhook 端点的负载包含:"rule_id":这是触发此负载的自动化规则的 ID"start_time"和"end_time":这是我们找到匹配运行的时间范围"runs":这是一个运行数组,其中每个运行都是一个字典。如果您需要每个运行的更多信息,我们建议在您的端点中使用我们的 SDK 从 API 获取。"feedback_stats":这是一个包含运行反馈统计信息的字典。该字段的示例负载如下所示。
从 S3 URL 获取数据根据您运行的新旧程度,
inputs_s3_urls 和 outputs_s3_urls 字段可能包含指向实际数据的 S3 URL,而不是数据本身。可以通过 inputs_s3_urls 和 outputs_s3_urls 中分别提供的 ROOT.presigned_url 来获取 inputs 和 outputs。安全性
我们强烈建议您在 Webhook URL 中添加一个秘密查询字符串参数,并在任何传入请求中验证它。这确保了如果有人发现了您的 Webhook URL,您可以区分这些调用与真实的 Webhook 通知。 一个示例如下:Webhook 自定义 HTTP 头
如果您希望随 Webhook 发送任何特定的头部信息,可以按 URL 进行配置。要进行设置,请点击 URL 字段旁边的Headers 选项并添加您的头部。
头部信息以加密格式存储。

Webhook 投递
在向您的 Webhook 端点投递事件时,我们遵循以下准则:- 如果无法连接到您的端点,我们会重试传输连接最多 2 次,然后宣布投递失败。
- 如果您的端点响应时间超过 5 秒,我们将宣布投递失败,并且不会重试。
- 如果您的端点在 5 秒内返回 5xx 状态码,我们会重试最多 2 次,并采用指数退避策略。
- 如果您的端点返回 4xx 状态码,我们将宣布投递失败,并且不会重试。
- 您的端点返回的响应体内容将被忽略。
Modal 示例
设置
关于如何设置此功能的示例,我们将使用 Modal。Modal 为推理和微调提供自动扩展的 GPU,为代码代理提供安全的容器化环境,以及无服务器 Python Web 端点。这里我们将重点介绍 Web 端点。 首先,创建一个 Modal 账户。然后,在本地安装 Modal SDK:密钥
接下来,您需要在 Modal 中设置一些密钥。 首先,LangSmith 需要通过传入一个密钥来向 Modal 进行身份验证。 最简单的方法是在查询参数中传递一个密钥。 为了验证此密钥,我们需要在 Modal 中添加一个密钥进行验证。 我们将通过 创建 Modal 密钥 来实现。 为此,让我们将我们的密钥命名为ls-webhook,并设置一个名为 LS_WEBHOOK 的环境变量。
我们还可以设置一个 LangSmith 密钥——幸运的是,已经有一个集成模板了!

服务
之后,您可以创建一个 Python 文件作为您的端点。 下面是一个示例,附有解释说明:modal deploy ... 轻松部署此代码(参见 管理 Modal 部署)。
您现在应该会看到类似以下内容:
https://hwchase17--auth-example-f.modal.run —— 我们创建的运行函数。
注意:这不是最终的部署 URL,请确保不要误用。
连接
现在我们可以将上面创建的函数 URL 添加为 Webhook。 我们必须记住还要将密钥作为查询参数传递。 将所有内容组合起来,它应该看起来像:{SECRET} 替换为您创建的用于访问 Modal 服务的密钥。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

