AI Webhook 处理器模板:入门指南
基于 Webhook 的事件驱动 AI 处理模板
AI Webhook 处理器模板:入门指南
基于 Webhook 的事件驱动 AI 处理模板
AI Webhook 处理器模板(2026):naive 版必败的四种方式(超时/重试风暴/无签名/无背压)与对应模板——先 ACK 后处理、事件 ID 幂等双查、原始 body 验签、队列限流。AI 步骤按注入面处理 payload,附死信/重放/排队深度监控。
AI Webhook 处理器:入门模板
“Webhook 接入 → AI 处理 → 动作输出”是半数实际 AI 自动化的核心形态:对新的支持工单分类、总结合并的 PR、对表单提交进行分诊。本入门指南为你提供生产级模板——快速确认、验证签名、异步处理、保持幂等——因为 naive 版(在 webhook 处理器内部直接调用 LLM)会以四种可预测的方式失败。
为什么 naive 版会失败
text
Naive: webhook → [LLM 调用, 5-30s] → 200 OK
模板
python
FastAPI + 队列 worker 模式 — 将队列替换为你自己的栈(SQS/BullMQ/pg-boss)
import hashlib, hmac, json
from fastapi import FastAPI, Request, HTTPExceptionapp = FastAPI()
@app.post('/webhooks/tickets')
async def receive(request: Request):
raw = await request.body()
# 1. 在原始 body 上验证签名(先解析会破坏 MAC)
sig = request.headers.get('x-signature', '')
expected = hmac.new(SECRET, raw, hashlib.sha256).hexdigest()
if not hmac.compare_digest(sig, expected):
raise HTTPException(401)
event = json.loads(raw)
# 2. 使用发送方的事件 ID 作为幂等键
if await already_processed(event['id']):
return {'status': 'duplicate'} # 200 — 发送方停止重试
# 3. 入队并立即 ACK — 毫秒级,而非秒级
await queue.send(event)
return {'status': 'queued'}
python
worker.py — AI 实际运行的地方
async def handle(event: dict):
if await already_processed(event['id']): # 执行时再次检查
return
result = await classify_ticket(event['payload']) # LLM 步骤,经过 schema 验证
await act(result) # 路由 / 标记 / 通知
await mark_processed(event['id'], result) # 溯源行
四个修复的映射:先 ACK 后处理消除超时;事件 ID 幂等(在接收和执行时都检查)消除重试重复;对原始 body 进行 HMAC消除伪造;队列免费提供背压、并发上限和带退避的重试。
AI 步骤本身
标准规范适用,精简如下:
运维说明
FAQ
为什么检查两次幂等? 接收时检查阻止队列污染;执行时检查覆盖两个重试都在第一个标记完成前入队的竞态。廉价的保险。
发送方要求同步响应? 有些 webhook 希望在响应中得到裁决。选项:使用严格超时的快速路径小模型(超时时使用安全默认值),或重新协商为异步回调——不要将前沿模型的延迟置于 webhook SLA 内。
批量调用 LLM? 如果发送方突发(每分钟数百个事件)且每个事件的延迟不重要,在 worker 中进行微批量处理(每个提示分组 10-20 个)——成本/吞吐量数量级提升,与批量逻辑相同,规模较小。
*最后更新:2026 年 6 月。*
相关工具