Agent LangChain chạy ngay trong webhook.
Stripe ngừng chờ ở khoảng 20 giây (không công bố). Agent LangChain của bạn cần 60 giây để nối ba lệnh gọi tool. AnyHook trả lời sau khoảng một giây và cho agent tối đa bằng timeout của gói để chạy xong.
Bài toán thời gian
Một agent LangChain với hai, ba lệnh gọi tool (tìm kiếm vector, truy vấn DB, gọi mô hình) thường xuyên mất 30 tới 90 giây. Phần lớn bên gửi webhook chỉ cho bạn 5 tới 30 giây. Phép tính không khớp.
Cách lách thường gặp là đẩy việc vào một hàng đợi bạn tự duy trì: Redis, SQS, Inngest, Trigger.dev, Vercel cron, BullMQ. Mỗi lựa chọn đều kéo theo một dependency mới, một dashboard mới, một chính sách dead-letter mới. AnyHook là hàng đợi mà bạn không phải tự vận hành.
Chạy agent. AnyHook giữ chân bên gửi.
Route Next.js hay Fastify hiện có của bạn giữ nguyên. Bạn chỉ cần xác minh AnyHook-Signature thay cho chữ ký của bên gửi, rồi chạy agent mà không bị áp lực timeout.
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 });
}Câu hỏi các team thường đặt ra
- AnyHook có dùng được với LangGraph không?
- Có, xem /for/langgraph-webhooks. Các workflow có trạng thái của LangGraph có cùng dạng: một webhook callback cần kích hoạt thêm các lệnh gọi mô hình.
- Nếu agent thất bại giữa chừng thì sao?
- Trả về 5xx từ handler (đoạn code xử lý webhook trên server của bạn). AnyHook coi đó là lỗi có thể thử lại (retry) và áp dụng lịch backoff đã cấu hình. Sự kiện gốc được giữ lại, mã hóa khi lưu trữ, để bạn phát lại (replay) từ dashboard sau khi đã sửa bug.
- So với Inngest hay Trigger.dev thì sao?
- Đó là các nền tảng durable execution: bạn viết workflow bằng DSL của họ và họ thực thi nó. AnyHook nằm ở upstream: nó chỉ biến webhook đồng bộ thành các lượt gửi bất đồng bộ đáng tin cậy. Bạn vẫn có thể dùng Inngest cho workflow nếu muốn; AnyHook chỉ đảm bảo sự kiện kích hoạt chắc chắn tới được Inngest.
Đổi một URL. Giữ nguyên handler LangChain của bạn.
Gói Free gồm 10.000 sự kiện / tháng. Không cần SDK: trỏ LangChain về URL nhận webhook của bạn trên AnyHook.