Webhook Gemini cho context 1M token.
Lệnh gọi Gemini với context dài mất 30–60 giây. Trước đây, kích hoạt một lệnh gọi như vậy từ handler (đoạn code xử lý webhook trên server của bạn) đồng nghĩa với polling (định kỳ gọi API để hỏi dữ liệu mới) hoặc một hàng đợi. Với AnyHook, không cần cả hai.
Bài toán thời gian
Gemini API gửi webhook theo spec Standard Webhooks và thử lại (retry) một lượt gửi thất bại trong 24 giờ với exponential backoff (khoảng chờ tăng theo cấp số nhân), nên một handler chậm sẽ bị gọi đi gọi lại.
Một lệnh gọi Gemini 1.5 Pro trên context 1M token mất 30 tới 60 giây. Bọc nó trong một handler webhook, chẳng hạn để chạy RAG trên kho dữ liệu riêng ở mỗi sự kiện Stripe, nghĩa là bạn không thể xác nhận (ack) kịp. Các lần thử lại chồng chất, chi phí cộng dồn.
Gemini với context dài trong handler webhook
AnyHook xác nhận rồi chuyển tiếp. Bạn chạy lệnh gọi Gemini trên toàn bộ kho dữ liệu của mình. Không vòng lặp polling, không hàng đợi Redis, không Cloud Tasks.
import { verifyWebhook } from "anyhook-verify";
import { GoogleGenerativeAI } from "@google/generative-ai";
const gemini = new GoogleGenerativeAI(process.env.GEMINI_API_KEY!);
export async function POST(req: Request) {
if (!(await verifyWebhook(req, process.env.ANYHOOK_SIGNING_SECRET!))) {
return new Response("invalid", { status: 401 });
}
const event = await req.json();
// Run RAG over the full corpus. 45 seconds. Stripe doesn't care.
const model = gemini.getGenerativeModel({ model: "gemini-1.5-pro" });
const result = await model.generateContent([
fullCorpusFor(tenantOf(event)),
`Process: ${JSON.stringify(event)}`,
]);
await persistDecision(result.response.text());
return new Response("ok", { status: 200 });
}Câu hỏi các team thường đặt ra
- AnyHook có hỗ trợ cơ chế chữ ký webhook của Gemini không?
- Có. Gemini ký theo cơ chế Standard Webhooks. Đặt nguồn của App (một URL nhận cho một nguồn webhook, ví dụ “Stripe production”) là Standard Webhooks và dán signing secret (khóa bí mật dùng để ký): AnyHook xác minh từng lượt gửi tại edge (lớp máy chủ biên của Cloudflare) trước khi chuyển tiếp.
- Nếu lệnh gọi Gemini chạm giới hạn tốc độ (rate limit) thì sao?
- Trả về 429 từ handler của bạn. AnyHook coi đó là lỗi có thể thử lại, áp dụng exponential backoff, và hiển thị chuỗi các lần thử lại trong dashboard. Bạn có thể phát lại (replay) sự kiện gốc khi hạn mức của bạn được làm mới.
- Cách này chỉ dành cho webhook của Gemini API hay cả Vertex AI?
- Cả hai. Mọi thứ gửi webhook HTTP đều đi qua AnyHook được. Chữ ký được kiểm tra tại edge với các cơ chế có trong tài liệu, gồm cả Standard Webhooks; bên gửi nằm ngoài các cơ chế đó dùng nguồn Generic, header gốc được chuyển tiếp để bạn tự kiểm tra.
Đổi một URL. Giữ nguyên handler Gemini của bạn.
Gói Free gồm 10.000 sự kiện / tháng. Không cần SDK: trỏ Gemini về URL nhận webhook của bạn trên AnyHook.