Giáo trình tự học miễn phí · Dịch vụ hỗ trợ theo nhu cầu.
4. Kiến Trúc Tool Gateway: Kiểm Soát & Phân Quyền Công Cụ Thay Vì 'Tool Pile'
Ném cho Agent 20 công cụ không làm nó mạnh hơn mà cho nó 20 cách phạm sai lầm. Xây dựng Cổng kiểm soát công cụ với 8 cơ chế rào chắn an toàn.
Một sai lầm rất phổ biến khi xây dựng AI Agent là gom tất cả các API, hàm shell, câu lệnh database và ném hết vào mảng tools của mô hình. Kết quả là Agent bị phân vân, chọn sai công cụ, truyền sai tham số hoặc vô tình xóa nhầm dữ liệu quan trọng.
🚪 Cổng Kiểm Soát Công Cụ (Tool Gateway, Not Tool Pile)
Hệ thống chuyên nghiệp luôn tách biệt rõ ràng hai thẩm quyền:
- Mô hình: Đề xuất hành động (Propose).
- Tool Gateway: Quyết định xem hành động đó có hợp lệ, an toàn và đủ điều kiện để kích hoạt hay không (Decide & Authorize).

Một Tool Gateway chuẩn mực cung cấp 8 rào chắn bảo vệ:
- Hide Irrelevant Tools (Ẩn công cụ không liên quan): Khi đang ở bước đọc tài liệu, không hiển thị công cụ xóa file hay gửi email.
- Validate Arguments (Kiểm tra kiểu dữ liệu): Dùng schema (như Pydantic/JSON Schema) chặn ngay tham số sai trước khi gọi mã nguồn thật.
- Restrict Paths & Domains (Giới hạn đường dẫn & tên miền): Chỉ cho phép đọc ghi trong thư mục dự án; cấm truy cập file hệ điều hành (
/etc/,C:\Windows\). - Attach Timeouts (Gắn thời gian chờ tối đa): Mọi lệnh shell hoặc truy vấn mạng phải tự ngắt sau một khoảng thời gian nhất định (ví dụ: 10 giây).
- Idempotency (Bảo đảm tính lũy thừa): Thao tác retry nhiều lần không làm nhân bản dữ liệu hay gửi 2 hóa đơn.
- Normalize Outputs (Chuẩn hóa đầu ra): Rút gọn log quá dài, lọc bỏ dữ liệu nhạy cảm trước khi trả kết quả về cho mô hình.
- Human Confirmation (Xin phê duyệt khi rủi ro): Lệnh xóa database, reset git, gửi tiền bắt buộc phải có xác nhận của con người.
- Return Evidence (Trả về bằng chứng): Không chỉ trả về
'Success', mà phải trả về mã băm file, diff nội dung hoặc mã phản hồi HTTP.
# TOOL GATEWAY MẪU TRONG PYTHON
import os
from pathlib import Path
from pydantic import BaseModel, Field, validator
WORKSPACE_ROOT = Path("/app/workspace").resolve()
class SafeWriteFileInput(BaseModel):
file_path: str = Field(..., description="Đường dẫn tương đối của tệp tin cần ghi")
content: str = Field(..., description="Nội dung cần ghi")
@validator("file_path")
def validate_path_containment(cls, v):
target = (WORKSPACE_ROOT / v).resolve()
# RÀO CHẮN 1: Chống Path Traversal (../../etc/passwd)
if not str(target).startswith(str(WORKSPACE_ROOT)):
raise ValueError(f"CẤM: Đường dẫn nằm ngoài phạm vi workspace an toàn: {v}")
# RÀO CHẮN 2: Bảo vệ các file bất biến hệ thống
forbidden_files = [".env", "config/production_keys.json", ".git/config"]
if any(v.endswith(f) for f in forbidden_files):
raise ValueError(f"CẤM: Tệp tin được bảo vệ bởi chính sách bảo mật: {v}")
return str(target)
def execute_safe_write(tool_input: SafeWriteFileInput) -> dict:
"""Tool Gateway thực thi có kiểm soát và trả về bằng chứng"""
target_path = Path(tool_input.file_path)
target_path.parent.mkdir(parents=True, exist_ok=True)
# Ghi file
target_path.write_text(tool_input.content, encoding="utf-8")
# TRẢ VỀ BẰNG CHỨNG (EVIDENCE)
return {
"status": "SUCCESS",
"bytes_written": len(tool_input.content),
"file_hash": hash(tool_input.content),
"absolute_path": str(target_path)
}
Thực hành và tự đánh giá
Hãy thiết kế một bảng quy tắc kiểm soát cho công cụ run_terminal_command: Những lệnh nào được chạy tự động, những lệnh nào bị cấm tuyệt đối, và những lệnh nào cần con người duyệt?
AI Tinh Gọn hỗ trợ khảo sát hiện trạng, kèm 1-1 on-premise bảo mật dữ liệu, setup hạ tầng riêng và xuất hóa đơn VAT hợp pháp cho doanh nghiệp.
Tiến độ tự học lưu trên trình duyệt này. Chỉ đánh dấu khi đã kiểm tra sản phẩm thực hành.