Một agent y tế được đánh giá không phải lúc chạy trơn tru, mà lúc gặp ca khó: khách hoảng loạn, triệu chứng khẩn, hoặc câu hỏi ngoài phạm vi. Bài này xây các lớp guardrail và luồng leo thang (escalation).
Ba lớp guardrail
LỚP 1 — Đầu vào (input): phát hiện ý định nguy hiểm/khẩn cấp NGAY
LỚP 2 — Hành động (tool): chặn hành động sai ở tầng code
LỚP 3 — Đầu ra (output): quét phản hồi trước khi gửi
Không lớp nào đủ một mình. Phòng thủ theo tầng (defense in depth).
Lớp 1 — Phát hiện khẩn cấp
Đây là guardrail quan trọng nhất trong y tế. Một số tín hiệu phải kích hoạt phản ứng khẩn ngay, không qua luồng thường.
TỪ KHÓA/Ý ĐỊNH KHẨN CẤP (ví dụ):
- "khó thở", "đau ngực", "chảy máu nhiều", "ngất", "co giật"
- "muốn tự tử", "không chịu nổi nữa"
- "sốc phản vệ", "dị ứng nặng"
→ PHẢN ỨNG: không cố xử lý, hiện ngay hướng dẫn gọi cấp cứu 115
+ chuyen_nguoi_that(muc_do="cao") lập tức.
Ví dụ phản ứng khẩn cấp
Khách: em thấy khó thở và tức ngực dữ quá
Agent: Đây có thể là tình huống khẩn cấp.
Anh/chị GỌI NGAY 115 (cấp cứu) hoặc đến cơ sở y tế gần nhất.
Em đang báo nhân viên trực gọi lại cho anh/chị ngay ạ.
[gọi chuyen_nguoi_that(muc_do="cao")]
Agent KHÔNG hỏi thêm triệu chứng, KHÔNG trấn an kiểu "chắc không sao đâu". Nó chuyển hướng về cấp cứu ngay.
Lớp 2 — Guardrail hành động
Mọi tool GHI cần điều kiện tiền đề kiểm tra bằng code:
def goi_tool(ten, args, ctx):
if ten == "tao_lich_hen" and not ctx.da_xac_nhan:
raise Guard("Chưa xác nhận, không tạo lịch")
if ten == "huy_lich_hen" and not ctx.xac_nhan_huy:
raise Guard("Hủy lịch cần xác nhận rõ ràng")
return thuc_thi(ten, args)
Lớp 3 — Quét đầu ra
Trước khi gửi, quét phản hồi tìm dấu hiệu vượt ranh giới (tư vấn thuốc/liều/chẩn đoán). Nếu phát hiện → thay bằng câu từ chối an toàn + đề nghị chuyển người.
Luồng leo thang (escalation)
Mức 0: agent tự xử (vùng Xanh)
Mức 1: agent không chắc / khách yêu cầu người
→ hàng đợi nhân viên (giờ hành chính)
Mức 2: vùng Đỏ phi khẩn (hỏi thuốc, khiếu nại)
→ điều dưỡng / quản lý
Mức 3: KHẨN CẤP y tế
→ hướng dẫn 115 + báo động nhân viên NGAY
Mỗi mức phải có: ai nhận, kênh nào, thời gian phản hồi kỳ vọng.
Khung tư duy "Fail safe, not fail silent"
Khi nghi ngờ, agent phải thất bại về phía AN TOÀN (chuyển người, khuyên đi khám) chứ không im lặng hay đoán bừa. Câu hỏi tự kiểm: "Nếu agent đoán sai ở đây, hậu quả xấu nhất là gì?" — nếu là sức khỏe/tính mạng → luôn leo thang.
Bước triển khai guardrails
- Lập danh sách tín hiệu khẩn cấp, kiểm ở LỚP 1 trước cả khi gọi LLM.
- Gắn điều kiện tiền đề cho mọi tool ghi (LỚP 2).
- Viết bộ quét đầu ra (LỚP 3).
- Định nghĩa 4 mức leo thang + người nhận + SLA.
- Test bằng bộ ca khó (xem Bài 8).
Checklist guardrails
- [ ] Phát hiện khẩn cấp chạy TRƯỚC LLM
- [ ] Mọi tool ghi có điều kiện tiền đề bằng code
- [ ] Quét đầu ra tìm nội dung lâm sàng
- [ ] 4 mức leo thang rõ người nhận + SLA
- [ ] Câu hướng dẫn 115 chuẩn, không trấn an sai
Sai lầm thường gặp
- Để LLM tự "đánh giá" mức độ khẩn cấp bằng suy luận tự do. Dùng phát hiện tín hiệu tường minh ở lớp đầu, an toàn hơn.
- Agent trấn an "chắc không sao". Cực kỳ nguy hiểm — không bao giờ hạ thấp triệu chứng khẩn.
- Leo thang mơ hồ ("sẽ có người liên hệ") mà không ai thực sự nhận. Phải có người + SLA cụ thể.
- Chỉ có 1 lớp guardrail. Một lớp sẽ có lỗ; xếp tầng mới bền.