Context Hub 提交 Webhook 会在您的工作区中创建代理或技能提交时,通知外部服务。您可以使用它们根据 Context Hub 的变更触发自动化操作,包括通过 LangSmith Fleet 创建的提交。 管理 Context Hub Webhook 需要 prompts:update 权限。工作区管理员和工作区编辑者默认拥有此权限。

添加 Webhook

每个 Webhook 都应用于整个工作区。每个已配置的端点都会接收所有代理和技能提交,包括 Fleet 创建的提交。context_hub.commit.created.v1 事件不支持按仓库或事件类型进行筛选。 添加 Webhook 的步骤:
  1. 在 LangSmith UI 中,前往 设置 → 集成 → Context Hub Webhook。
  2. 点击 添加 Webhook。
  3. 输入一个可从公网访问的 HTTPS URL。
  4. (可选)添加自定义请求标头,例如 Authorization 标头。
  5. 点击 添加 Webhook。
  6. 复制生成的签名密钥并妥善保存。
您可以添加的订阅数量取决于工作区配置。

管理 Webhook

Webhook 列表会显示端点 URL 和自定义标头名称。标头值和签名密钥会保持隐藏状态,直到您点击 显示密钥。如果您仍拥有管理 Context Hub Webhook 的权限,之后也可以再次显示这些信息。 使用 Webhook 上的控件进行管理:
  • 编辑 Webhook:更改 HTTPS URL 或替换自定义标头。编辑不会更改签名密钥。
  • 轮换签名密钥:生成并显示新的签名密钥。LangSmith 会立即使用新密钥进行后续发送,旧密钥将停止工作。请更新所有用于验证 Webhook 的消费者。
  • 删除 Webhook:停止该端点接收来自工作区的后续 Context Hub 提交事件。

发送

LangSmith 会针对每个事件发送一个 JSON POST 请求。自定义标头不能覆盖 Content-Type 或 X-LangSmith-Signature,因为 LangSmith 会在应用自定义标头后设置这两个标头。 重试会包含字节完全相同的请求正文,并保留事件 id。在产生下游影响之前,请根据 id 对事件进行去重。

验证签名

每个请求都包含一个 X-LangSmith-Signature 标头,格式如下:
使用 Webhook 的签名密钥,根据请求正文中完全相同的原始字节计算 HMAC-SHA256 摘要。在解析 JSON 之前验证签名,并以恒定时间比较完整的标头值。在验证前解析并重新序列化正文可能会改变其字节内容,从而导致签名失效。

事件信封

外层的 id、type、created 和 data 信封已固定。事件类型中的 .v1 后缀用于标识 data.commit 架构的版本。

data.commit

data.commit 对象描述触发该事件的 Context Hub 提交。

data.commit.files_changed

每个条目概述一个发生变更的路径,但不包含文件内容。

处理事件版本

在解析 data.commit 之前,根据完整的事件类型进行分支处理:
对 data.commit 的破坏性变更会使用新的事件类型后缀,例如 .v2。请忽略未知类型,不要尝试将其作为 v1 解析;同时允许存在未知字段,以免兼容性新增字段导致处理程序失效。

下一步