在 Webhook 裡執行的 LangChain agent。
Stripe 大約在 20 秒就不再等待(未公布)。你的 LangChain agent 串三次工具呼叫需要 60 秒。AnyHook 大約 1 秒就回應,讓 agent 最多有方案的傳遞逾時時間可以做完。
時限問題
一個帶兩三次工具呼叫(向量搜尋、資料庫查詢、模型呼叫)的 LangChain agent,常常要 30 到 90 秒。多數 Webhook 發送端給你 5 到 30 秒。算不過來。
常見的變通做法,是把工作丟進自己維護的佇列:Redis、SQS、Inngest、Trigger.dev、Vercel cron、BullMQ。每一種都代表一個新的依賴、一個新的儀表板、一套新的死信政策。AnyHook 就是你不必自己維運的佇列。
20–90 秒
LangChain agent 一次呼叫的典型時間
約 20 秒
Stripe 的回應時限(未公開;社群通用的估計值)
5 分鐘
Scale 方案的傳遞逾時
1 行
接上 AnyHook 的 diff
跑你的 agent。AnyHook 替你撐住。
現有的 Next.js 或 Fastify 路由維持不變。只要改驗 AnyHook-Signature,不再驗發送端的簽章,就能在沒有逾時壓力的情況下執行 agent。
import { verifyWebhook } from "anyhook-verify";
import { AgentExecutor } from "langchain/agents";
export async function POST(req: Request) {
const ok = await verifyWebhook(req, process.env.ANYHOOK_SIGNING_SECRET!);
if (!ok) return new Response("invalid", { status: 401 });
const event = await req.json();
// Stripe / GitHub / Shopify already saw a 200 from AnyHook.
// You have up to 5 minutes (Scale plan) to finish.
const result = await agentExecutor.invoke({
input: `Process this event: ${JSON.stringify(event)}`,
});
await persistToDb(result);
await maybeNotify(result);
return new Response("ok", { status: 200 });
}團隊常問的問題
- AnyHook 也能搭配 LangGraph 嗎?
- 可以,參考 /for/langgraph-webhooks。LangGraph 的有狀態工作流程是同一種形狀:Webhook 進來之後,還要觸發更多模型呼叫。
- 如果 agent 跑到一半失敗了呢?
- 讓處理程式回傳 5xx。AnyHook 會把它視為可重試的錯誤,套用設定好的退避排程。原始事件以靜態資料加密的方式保存,修好 bug 後就能從儀表板重播。
- 這和 Inngest 或 Trigger.dev 比起來如何?
- 那些是持久執行(durable execution)平台:你用它們的 DSL 寫工作流程,由它們執行。AnyHook 在更上游:它只是把同步的 Webhook 變成可靠的非同步傳遞。你仍然可以用 Inngest 跑工作流程;AnyHook 只負責確保觸發事件可靠地送到 Inngest。
換一個網址。LangChain 的處理程式不用改。
Free 方案每月涵蓋 10,000 個事件。不用 SDK:把 LangChain 指向你的 AnyHook 接收網址。