VISEN GROUP
Technology & Engineering

AI Agent gọi Tool & API: Cách chặn vòng lặp vô tận và kiểm soát chi phí Token

October 5, 20265 min readUncategorized

Khi tích hợp Function Calling hoặc Tool Use cho một AI Agent, cảm giác đầu tiên luôn rất phấn khích: mô hình tự biết gọi API thời tiết, tự chọc vào database tra cứu thông tin khách hàng, rồi tự kích hoạt gửi webhook.

Nhưng khi đưa vào môi trường production, thực tế lập tức dội một gáo nước lạnh:

  • Agent rơi vào vòng lặp vô tận (infinite loop): Gọi một tool lỗi, nhận về thông báo thất bại, lại thử gọi tiếp chính tool đó với tham số y hệt cho đến khi sập server hoặc cạn credit.
  • Token bùng nổ ngoài tầm kiểm soát: Mỗi lần gọi tool, toàn bộ schema, lịch sử đối thoại và payload trả về tiếp tục được nhồi vào context window. Một tác vụ đơn giản có thể tiêu tốn hàng chục ngàn token chỉ sau vài giây lặp.
  • Tác vụ nửa vời (Partial failure): Agent gọi tool trừ tồn kho thành công, nhưng bước gọi tool thanh toán bị lỗi, dẫn đến dữ liệu hệ thống rơi vào trạng thái bất nhất.

Xây dựng AI Agent “biết làm việc thật” không khó ở khâu prompt; cái khó nằm ở kiến trúc phòng thủ (defensive architecture) quanh các Tool Call. Dưới đây là 4 cơ chế cốt lõi để Agent chạy mượt mà mà không “đốt ví” của bạn.

1. Thiết lập Giới hạn Bước Chạy Cứng (Hard Execution Budget)

Sai lầm phổ biến nhất là để vòng lặp Agent chạy bằng lệnh while True với điều kiện dừng phụ thuộc hoàn toàn vào phán đoán của mô hình. Nếu Agent ảo giác (hallucinate) hoặc dữ liệu trả về từ tool không đúng format nó kỳ vọng, nó sẽ tiếp tục thử lại mãi mãi.

Giải pháp: Áp dụng cơ chế Budget Limit:

  • Max Iterations (Số lượt lặp tối đa): Khóa cứng số vòng suy nghĩ – gọi công cụ (thường từ 3 đến 5 lượt cho một request thông thường).
  • Timeout per Run: Đặt thời gian timeout tuyệt đối cho toàn bộ phiên làm việc của Agent (ví dụ: tối đa 30 giây).

Nếu chạm trần budget mà chưa ra kết quả, Agent buộc phải dừng lại, trả về thông báo lịch sự cho người dùng hoặc chuyển trạng thái sang Escalated để con người xử lý.

2. Chiến lược “Circuit Breaker” và Xử lý Lỗi Tool Thông minh

Khi một Tool API trả về mã lỗi 500 hoặc 400 Bad Request, đưa nguyên xi đoạn mã lỗi HTML/Stack trace dài ngoằng vào prompt là cách nhanh nhất để làm tràn context window và khiến AI bối rối.

Bắt lỗi gọn nhẹ (Sanitized Error Response)

Chỉ trả về cho AI thông tin lỗi súc tích dưới dạng JSON:

{
  "status": "error",
  "tool": "check_inventory",
  "reason": "Mã SKU không tồn tại trong hệ thống. Hãy kiểm tra lại tên sản phẩm hoặc hỏi lại người dùng."
}

Bộ ngắt mạch (Circuit Breaker)

Nếu một tool cụ thể bị gọi thất bại 2 lần liên tiếp với cùng một dạng lỗi, cơ chế runtime phải tạm thời vô hiệu hóa tool đó trong ngữ cảnh hiện tại và ép Agent chọn hướng đi khác:

  1. Hỏi lại người dùng để làm rõ thông tin thiếu.
  2. Dừng tác vụ và ghi log cảnh báo cho quản trị viên.

3. Cắt gọt Payload Dữ liệu trả về (Context Optimization)

Rất nhiều API trả về các payload JSON khổng lồ chứa hàng chục trường metadata không cần thiết (created_at, updated_by, internal_flags…). Nhồi toàn bộ dữ liệu này vào prompt của lượt tiếp theo vừa làm tốn token, vừa làm loãng sự chú ý (attention) của mô hình.

Quy tắc vàng: Dùng một lớp middleware (Serializer) ở giữa để lọc dữ liệu trước khi nạp ngược lại context:

  • Chỉ giữ lại các trường mà Agent thực sự cần để đưa ra quyết định tiếp theo (ví dụ: id, name, status, price).
  • Đối với danh sách dài (ví dụ: tra cứu danh mục hàng trăm sản phẩm), chỉ trả về top 3 – 5 kết quả sát nhất kèm phân trang hoặc bản tóm tắt ngắn.

4. Phân tách Quyền: Tool Đọc vs. Tool Ghi (Idempotency)

Các tác vụ đọc (GET) có thể cho phép thử lại nhiều lần nếu lỗi mạng. Tuy nhiên, các tác vụ ghi (POST, PUT, DELETE như: trừ tiền, tạo đơn, xoá dữ liệu) tuyệt đối phải có:

  • Idempotency Key (Khóa bất biến): Gắn một mã UUID duy nhất cho từng phiên tạo đơn. Dù Agent có bị lag mạng và gọi lại lệnh create_order 2 lần, backend chỉ xử lý trừ tiền và ghi nhận đúng 1 lần duy nhất.
  • Human Confirmation Gate: Với các tool có tính biến đổi dữ liệu lớn hoặc chi phí cao, Agent chỉ được phép tạo bản nháp (Draft). Lệnh thực thi cuối cùng chỉ kích hoạt khi có sự xác nhận của người dùng.

Lời kết

Một AI Agent hữu ích không phải là Agent tự do làm mọi thứ, mà là Agent biết rõ giới hạn an toàn của mình. Việc thiết lập trần bước chạy, kiểm soát payload tool và cơ chế ngắt mạch chính là ranh giới giữa một bản demo thú vị và một hệ thống tự động hóa bền bỉ phục vụ doanh nghiệp.

Leave a Reply

Your email address will not be published. Required fields are marked *