Nối agent vào workflow tự động end-to-end
Một agent chạy khi bạn bấm nút thì vẫn cần bạn có mặt. Giá trị thật là khi nó tự kích hoạt theo sự kiện (email tới, đến giờ, form được điền) và chạy trọn quy trình. Bài này ghép agent vào một dây chuyền tự động dùng n8n (hoặc tương đương).
Ba thành phần của một workflow
- Trigger — cái khởi động: email mới, lịch (cron), webhook từ form, tin nhắn Telegram.
- Agent step — bộ não xử lý: nhận đầu vào, gọi tool, ra quyết định.
- Action — hành động cuối: lưu nháp, gửi tin, cập nhật Sheet, thông báo cho bạn.
Ví dụ: dây chuyền "lead mới → phản hồi trong 5 phút"
Minh chạy quảng cáo, khách điền form quan tâm. Trước đây anh trả lời sau nhiều giờ, mất lead. Nay:
- Trigger: webhook nhận dữ liệu form.
- Agent: đọc nhu cầu, phân loại (nóng/ấm/nguội), soạn phản hồi cá nhân hóa + gợi ý gói phù hợp.
- Action nếu lead ấm/nguội: gửi email tự động ngay.
- Action nếu lead nóng: gửi nháp cho Minh qua Telegram để anh duyệt và gọi ngay.
Sơ đồ mô tả (pseudocode)
ON form_submitted:
du_lieu = webhook.payload
ket_qua = agent.run(
goal="Phân loại lead + soạn phản hồi",
input=du_lieu
)
IF ket_qua.phan_loai == "nong":
telegram.send(minh, ket_qua.email_nhap + "— DUYỆT?")
ELSE:
email.send(du_lieu.email, ket_qua.email_nhap)
sheet.append(du_lieu, ket_qua.phan_loai) # lưu vết
Khung thiết kế route theo rủi ro
Không phải mọi nhánh đều nên tự động. Định tuyến:
- Rủi ro thấp + tự tin cao → tự động hoàn toàn (gửi luôn).
- Rủi ro cao HOẶC tự tin thấp → chuyển cho người duyệt.
- Không phân loại được → gửi cảnh báo cho bạn, đừng đoán.
Các bước làm
- Vẽ workflow trên giấy: Trigger → Agent → các Action theo nhánh.
- Dựng trigger trước, test nó bắn dữ liệu đúng.
- Cắm agent step, ép output có cấu trúc (JSON) để nhánh sau đọc được.
- Nối action, tách nhánh tự-động vs cần-duyệt.
- Luôn có bước lưu vết (Sheet/DB) mọi lần chạy.
- Chạy thử với 10 ca thật trước khi bật "live".
Bắt đầu ở chế độ "khô" (dry run)
Giai đoạn đầu, cho MỌI nhánh chỉ gửi nháp cho bạn, chưa gửi ra ngoài. Khi bạn duyệt tay 20–30 lần và thấy agent ổn định, mới mở dần từng nhánh sang tự động.
Sai lầm thường gặp
- Bật full-auto ngay: chưa kịp tin agent đã cho nó gửi thật, gặp lỗi trước mặt khách.
- Không lưu vết: khi khách phản ánh, bạn không biết agent đã gửi gì.
- Output agent không có cấu trúc: nhánh sau không đọc được, workflow gãy.
- Không có nhánh "không chắc": agent buộc phải chọn, chọn sai.
- Quên giới hạn tần suất: trigger bắn liên tục làm agent chạy hàng nghìn lần, cháy budget.
Checklist
- [ ] Đã vẽ Trigger → Agent → Action
- [ ] Output agent có cấu trúc
- [ ] Tách nhánh tự-động vs cần-duyệt
- [ ] Có bước lưu vết
- [ ] Chạy dry run trước khi live
<!--les-append-->
Ba chỗ workflow tự động hay gãy
Workflow chạy tốt tháng đầu rồi gãy âm thầm. Ba chỗ, theo thứ tự thường gặp:
| Chỗ gãy | Biểu hiện | Cách chặn |
|---|---|---|
| Trigger ngừng bắn | Không có lỗi nào, chỉ là không có gì xảy ra | Cảnh báo khi không có lần chạy nào trong 24h |
| Agent trả về định dạng khác | Nhánh sau đọc không được, gãy giữa dây | Kiểm cấu trúc đầu ra; nếu sai, gửi cho bạn thay vì bỏ |
| Hạn mức bên thứ ba | Gửi thất bại, không ai biết | Ghi lại kết quả của hành động, không chỉ của agent |
Lưu vết: ghi gì mới đủ dùng
"Lưu vết vào Sheet" dễ làm nửa vời. Năm cột tối thiểu, và cột cuối là cột cứu bạn:
| Cột | Nội dung |
|---|---|
| Thời điểm | Khi nào chạy |
| Đầu vào | Dữ liệu gốc nhận được |
| Quyết định của agent | Phân loại, lý do |
| Hành động đã làm | Đã gửi gì, cho ai — hoặc "chờ duyệt" |
| Kết quả của hành động | Gửi thành công hay thất bại, mã lỗi nếu có |
Giới hạn tần suất và giới hạn chi phí: đặt cứng
Hai con số nên đặt trước khi bật live, và đặt như một chốt cứng chứ không phải một cảnh báo:
- Số lần chạy tối đa mỗi giờ. Nếu vượt, dừng và báo bạn. Một form bị bot điền 3.000 lần trong đêm là chuyện có thật.
- Chi phí tối đa mỗi ngày. Vượt thì dừng hẳn.
Mở dần từ dry run: một tiêu chí cụ thể
"Duyệt tay 20–30 lần rồi mở" cần một tiêu chí rõ hơn. Tiêu chí dùng được:
> Mở một nhánh sang tự động khi trong 20 lần chạy liên tiếp gần nhất, bạn không sửa gì ở nhánh đó.
Nếu bạn vẫn sửa 3 trong 20, nhánh đó chưa sẵn sàng — và con số bạn sửa chính là tỉ lệ sai mà khách sẽ nhận nếu bạn mở sớm. <!--/les-append-->