Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 7 — Logging, Kiểm toán & Truy vết cho Agent

Đã đọc 0/7 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Khi một agent tự chủ chạy hàng nghìn hành động, câu hỏi không phải "nó có sai không" mà "khi nó sai, tôi có tái dựng lại được chuyện gì đã xảy ra không?". Logging và audit trail là điều kiện bắt buộc của EU AI Act (high-risk), là bằng chứng tuân thủ PDPL, và là công cụ điều tra sự cố. Bài này xây một lớp quan sát (observability) đúng chuẩn.

Log cái gì? (Bộ tối thiểu để truy vết)

Mỗi "lượt" (turn/run) của agent nên ghi:

  • Định danh: run_id, agent_id, user_id (đã ẩn danh/hash), timestamp.
  • Đầu vào & ngữ cảnh: prompt (đã redact PII), dữ liệu truy xuất.
  • Quyết định: agent định gọi tool nào, tham số gì, vì sao (reasoning tóm tắt).
  • Hành động thực thi: tool call, kết quả, thành công/thất bại.
  • Guardrail & approval: có bị chặn không, ai duyệt, quyết định.
  • Phiên bản: model version, policy version, prompt version.

Ví dụ cụ thể

Khách khiếu nại: "Agent tự hủy đơn của tôi lúc 2h sáng!". Với audit trail tốt, bạn truy run_id, thấy: đầu vào là một email chứa injection, guardrail đã cảnh báo nhưng tool cancel_order không bị chặn. → Bạn biết chính xác lỗi ở đâu và vá đúng chỗ. Không có log, bạn chỉ có thể đoán.

Audit trail còn có giá trị pháp lý trực tiếp. Nếu cơ quan quản lý (theo EU AI Act với agent high-risk) yêu cầu chứng minh có human oversight và có kiểm soát, bạn xuất được log cho thấy hành động nào đã qua approval, ai duyệt, guardrail nào kích hoạt. Ngược lại, nếu không log, bạn không thể chứng minh mình đã tuân thủ — và trong nhiều khung pháp lý, không chứng minh được bị coi như không có.

Các bước xây audit trail

  • Chuẩn hóa cấu trúc log (structured/JSON), không log tự do khó truy vấn.
  • Gán trace_id xuyên suốt một run để nối các bước.
  • Redact PII trước khi ghi (nối lại Bài 4) — log không được thành kho dữ liệu cá nhân.
  • Ghi bất biến (append-only/WORM) cho log audit quan trọng — chống sửa/xóa dấu vết.
  • Đặt thời hạn lưu trữ (retention): đủ dài để tuân thủ, không dài vô hạn (mâu thuẫn PDPL).
  • Phân quyền truy cập log — log chứa thông tin nhạy cảm.
  • Gắn cảnh báo (alerting) cho sự kiện bất thường: guardrail bị kích hoạt nhiều, chi phí tăng vọt.
import json, uuid, time

def audit_log(run_id, event, payload):
    record = {
        "run_id": run_id,
        "ts": time.time(),
        "event": event,                  # tool_call | guardrail_block | approval | error
        "agent_id": AGENT_ID,
        "model_version": MODEL_VER,
        "policy_version": POLICY_VER,
        "payload": redact_pii_dict(payload),
    }
    append_only_store.write(json.dumps(record))  # WORM: khong sua/xoa

rid = str(uuid.uuid4())
audit_log(rid, "tool_call", {"tool": "cancel_order", "order_id": "A123"})
audit_log(rid, "guardrail_block", {"rule": "injection_detected"})

Khung tư duy: "Tái dựng được không?" (Reconstructability)

Một log tốt trả lời được năm câu 5W1H cho bất kỳ sự cố nào: Who (agent/user nào), What (làm gì), When (khi nào), Which (model/policy version nào), Why (guardrail/approval ra sao), How (chuỗi tool call). Nếu log của bạn không trả lời được, nó chưa đủ.

Checklist observability

  • [ ] Log có cấu trúc (JSON) và có trace_id?
  • [ ] Ghi đủ input, decision, action, guardrail, approval?
  • [ ] PII được redact trước khi ghi?
  • [ ] Log audit là append-only/bất biến?
  • [ ] Có retention rõ ràng?
  • [ ] Truy cập log được phân quyền?
  • [ ] Có alert cho bất thường?

Sai lầm thường gặp

  • Chỉ log lỗi, không log hành động thành công → không tái dựng được chuỗi sự việc.
  • Log nguyên PII → vi phạm PDPL, log thành rủi ro.
  • Log có thể bị sửa/xóa → mất giá trị pháp lý khi audit.
  • Không có trace_id → các dòng log rời rạc, không nối được thành câu chuyện.
  • Giữ log mãi mãi → mâu thuẫn nguyên tắc tối thiểu hóa lưu trữ.
Bài cuối: gắn tất cả lại thành quy trình vận hành thực tế — từ pilot đến production, xử lý sự cố và cải tiến liên tục.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi