← Tất cả bài viết
SOOT · BLOG

AI agent hoạt động thế nào? Năm mảnh ghép dễ hiểu

Agent không phải phép màu. Nó là một mô hình ngôn ngữ, một tờ giấy, một vòng lặp, vài tool và vài lan can an toàn. Đây là từng mảnh, bằng lời thường.

Bạn giao việc cho một agent, và nó quay lại với kết quả. Dễ nghĩ rằng ở giữa có điều gì đó bí ẩn. Thật ra không có. Agent là năm mảnh bình thường xếp chồng lên nhau. Hiểu được chúng, bạn sẽ biết vì sao agent chạy tốt, hoặc vì sao nó âm thầm làm sai.

1. Mô hình chỉ đoán chữ tiếp theo

Mô hình ngôn ngữ lớn (LLM) chỉ làm một việc: nhìn một đoạn chữ rồi đoán chữ kế tiếp. Nối đủ nhiều lần đoán, ta có câu văn, kế hoạch, đoạn code.

Đó cũng là giới hạn của nó. Một mình nó không tra cứu được, không bấm được nút, không nhớ được hôm qua. Hỏi giá vàng hôm nay, nó trả một con số nghe hợp lý. Đó là đoán.

2. Prompt là một tờ giấy

Giữa hai lần gọi, mô hình không nhớ gì. Mọi thứ nó biết nằm trên tờ giấy gửi đi lần này:

Vai trò:   Bạn là Mai, nhân viên CSKH thân thiện.
Luật:      Hoàn tối đa 500k. Phải xác minh đơn trước.
Tool:      tra_don(mã), hoàn_tiền(mã)
Lịch sử:   (các lượt trước)
Tin mới:   Đơn #123 giao trễ 3 ngày. Hoàn tiền cho tôi!

Vai trò, luật, danh sách tool, cuộc trò chuyện trước đó: tất cả chỉ là chữ viết thêm vào tờ giấy. Không có gì là phép màu, và cả tờ giấy được gửi lại ở mỗi lần gọi.

3. Vòng lặp biến chatbot thành agent

Tới đây mô hình mới chỉ biết *viết đơn xin* gọi tool. Vòng lặp lo phần còn lại:

  1. Nghĩ. Mô hình đọc tờ giấy, quyết định: gọi tool hay trả lời.
  2. Làm. Nếu nó xin tool, chương trình bao quanh sẽ chạy tool thật.
  3. Xem. Kết quả được dán lại vào tờ giấy.
  4. Quay lại bước 1. Khi mô hình không xin tool nào nữa, vòng lặp dừng.

Đó là toàn bộ khác biệt giữa chatbot và agent. Vòng lặp cũng cần một cái trần. Không có trần, agent cứ thấy “chưa đủ” sẽ chạy mãi, nên runtime thực tế giới hạn số lượt và số lần gọi tool. Mặc định thường là vài chục lượt và vài chục lần gọi tool.

4. Tool là đôi tay, skill là cuốn sổ công thức

Mô hình không bao giờ tự làm. Nó viết đơn xin, và chương trình chủ (host) quyết định có chạy hay không. Một host hợp lý kiểm tra ba điều trước khi làm gì:

  • Tool này có tồn tại không?
  • Tham số có đúng dạng không?
  • Agent có được phép dùng không?

Mặc định là cấm. Tool chỉ dùng được khi có người cấp quyền. Khi một yêu cầu bị chặn, lý do được gửi lại cho mô hình để nó đổi hướng thay vì sập.

Tool nói agent *làm được gì*. Skill nói *làm thế nào*, ví dụ bảng sự kiện của công ty được tổ chức ra sao. Agent luôn thấy một dòng giới thiệu mỗi skill, và chỉ nạp đầy đủ khi cần. Memory là mảnh thứ ba: những gì agent đã biết từ trước.

5. Context là cái bàn có hạn

Mỗi kết quả dán vào tờ giấy đều chiếm chỗ, mà tờ giấy có kích thước cố định. Chạy đủ lâu là tràn. Vì vậy agent tốt phải dọn bàn trong lúc chạy:

  • Dọn kết quả tool cũ khi bàn đầy khoảng một nửa. Rẻ, không cần gọi mô hình.
  • Tóm tắt phần đầu cuộc trò chuyện khi bàn gần đầy. Tốn một lần gọi mô hình.
  • Cất kho những kết quả khổng lồ. Giữ một cái phiếu trên bàn, cần thì mới lấy nội dung đầy đủ.
  • Ghim kế hoạch ra ngoài lịch sử, để tóm tắt không thể nuốt mất nó.

Mỗi lan can chặn một kiểu hỏng

Mỗi lan can nhắm vào một cách agent làm hỏng việc: chạy mãi không dừng, lặp lại một lệnh đang lỗi, báo xong mà chưa kiểm tra, quên kế hoạch, làm ngập bàn, đứng chờ một việc chậm, tự quyết một việc không hoàn tác được, mất nhà cung cấp mô hình giữa chừng, quên chuyện hôm qua, hoặc chạy ra ngoài thư mục được giao. Mỗi cái là một mảnh nhỏ riêng. Bỏ bất kỳ mảnh nào, agent vẫn chạy, chỉ là xử lý được ít tình huống hơn.

Tự thử

Chúng tôi đã biến toàn bộ nội dung này thành một trang tương tác: bạn tự đóng vai mô hình đoán chữ, cấp và cấm tool, rồi cố giữ một agent sống 20 lượt khi bàn làm việc đầy dần. Thử ngay tại đây.

Muốn xem các mảnh này chạy trong một agent thật, hãy bắt đầu từ tài liệu Soot: trysoot.com/docs.