Agent nguy hiểm hơn chatbot vì nó hành động: gọi API, ghi dữ liệu, chi tiền. Ở quy mô production, một lỗi logic có thể lặp lại hàng nghìn lần trong vài phút. Bài này xây các lớp an toàn cho hành động: giới hạn vòng lặp, guardrail đầu vào/đầu ra, human-in-the-loop, và idempotency.
Chặn vòng lặp và hành động thất thoát
Agent tự lập kế hoạch có thể kẹt trong vòng lặp gọi tool vô tận. Luôn đặt trần: số bước tối đa, số lần gọi mỗi tool, tổng chi phí mỗi phiên.
MAX_STEPS = 8
for step in range(MAX_STEPS):
action = agent.next_action(state)
if action.type == "final":
break
guard = check_action(action) # guardrail trước khi thực thi
if not guard.allowed:
log_block(action, guard.reason); break
state = execute(action)
else:
escalate("Đạt trần số bước, chuyển người xử lý")
Guardrail hai chiều
- Đầu vào: lọc prompt injection, nội dung độc hại, dữ liệu ngoài phạm vi trước khi agent xử lý.
- Đầu ra: kiểm tra trước khi trả lời/thực thi — không rò rỉ PII, không vượt quyền, hành động nằm trong danh sách cho phép (allowlist).
Human-in-the-loop cho hành động rủi ro cao
Phân loại hành động theo mức rủi ro và chèn phê duyệt của người vào nhánh nguy hiểm:
| Rủi ro | Ví dụ | Cơ chế |
|---|---|---|
| Thấp | Tra cứu, tóm tắt | Agent tự làm |
| Trung | Gửi email cho khách | Agent làm, log đầy đủ, lấy mẫu kiểm tra |
| Cao | Hoàn tiền, xóa dữ liệu | Bắt buộc người phê duyệt trước khi thực thi |
Idempotency: an toàn khi thử lại
Production đầy retry (mạng chập chờn, timeout). Nếu agent gửi lại một hành động ghi, bạn không muốn hoàn tiền hai lần. Gắn mỗi hành động ghi một idempotency key để hệ thống nhận ra và bỏ qua bản lặp.
key = f"refund:{order_id}:{amount}"
refund_api.create(order_id, amount, idempotency_key=key)
# gọi lại cùng key => API trả kết quả cũ, không hoàn tiền lần hai
Khung tư duy: bậc thang quyền cho agent
Cấp cho agent ít quyền nhất có thể (least privilege). Bắt đầu ở chế độ chỉ-đọc/đề xuất, chỉ mở quyền ghi cho từng hành động sau khi đã có guardrail, log và idempotency đầy đủ.
Các bước làm
- Đặt trần bước/tool/chi phí cho mỗi phiên agent, có nhánh escalate.
- Cài guardrail đầu vào và đầu ra, dùng allowlist cho hành động.
- Phân loại hành động theo rủi ro và chèn phê duyệt người cho mức cao.
- Thêm idempotency key cho mọi hành động ghi.
- Chạy least privilege: mở quyền ghi dần, mỗi lần kèm đủ lớp an toàn.
Checklist an toàn hành động
- [ ] Có trần số bước, số lần gọi tool và chi phí mỗi phiên.
- [ ] Guardrail cả đầu vào lẫn đầu ra, hành động theo allowlist.
- [ ] Hành động rủi ro cao bắt buộc người phê duyệt.
- [ ] Mọi hành động ghi đều có idempotency key.
- [ ] Agent chạy least privilege, quyền ghi mở dần có kiểm soát.
Sai lầm thường gặp
- Không giới hạn vòng lặp. Agent kẹt lặp đốt tiền hoặc spam API đối tác.
- Dựa vào blocklist. Luôn có kiểu tấn công mới lọt qua danh sách cấm.
- Cho quyền ghi rộng từ đầu. Một lỗi nhân lên hàng nghìn lần trước khi ai kịp phản ứng.
- Bỏ idempotency. Retry biến một hành động thành nhiều, gây trùng lặp tai hại.