Trong bài viết này
Từ được đánh dấu có giải thích. Di chuột hoặc chạm để xem, hay mở từ điển AI.
Một trợ lý báo “đã tạo báo cáo” ngay sau khi công cụ trả về mã công việc. Vài giây sau, tác vụ nền thất bại. Lỗi nằm ở việc hệ thống coi yêu cầu được nhận là công việc hoàn tất. State machine giúp ta biểu diễn hai sự kiện này bằng hai trạng thái khác nhau.
Tiên quyết: bạn đã hiểu vòng lặp gọi công cụ trong bài AI agent và quen với hàm trả về dữ liệu có cấu trúc. Ví dụ dưới đây là thiết kế minh họa cho một trợ lý tạo báo cáo nội bộ.
Bắt đầu từ những điều hệ thống được phép khẳng định
Chọn các trạng thái RECEIVED, PLANNED, RUNNING, VERIFYING, SUCCEEDED, BLOCKED và FAILED. Mỗi tên phải có ý nghĩa kiểm tra được. SUCCEEDED yêu cầu tệp tồn tại, đúng định dạng và chứa đủ phần bắt buộc; lời mô hình tự nhận hoàn tất không phải điều kiện chuyển trạng thái.
Building effective agents phân biệt đường đi được mã xác định với việc mô hình tự điều phối. Ta có thể kết hợp chúng: mô hình đề xuất bước làm, còn mã kiểm soát các ranh giới của vòng đời. Đây là nguyên tắc kiến trúc, không phải yêu cầu chọn một framework cụ thể.
Agent dùng trạng thái hiện tại để chọn công cụ, đọc kết quả thực thi và kiểm tra tiến độ. Vòng lặp tiếp tục trong giới hạn được đặt trước hoặc kết thúc với kết quả đã xác minh.
↔ Vuốt ngang để xem toàn bộ sơ đồ.
01 / Quan sát
Agent nhận mục tiêu, trạng thái hiện tại và kết quả của các bước trước.
02 / Gọi công cụ
Mô hình đề xuất công cụ và đầu vào; ứng dụng kiểm tra quyền trước khi thực thi.
03 / Đọc kết quả
Agent nhận dữ liệu trả về, bao gồm thành công, dữ liệu rỗng hoặc lỗi.
04 / Kiểm tra và dừng
Kiểm tra mục tiêu đã đạt chưa. Dừng khi hoàn thành, thiếu quyền hoặc chạm giới hạn; nếu cần thì tiếp tục.
Minh họa một vòng lặp agent đơn giản. Công cụ chỉ được thực hiện thao tác trong quyền đã cấp; lời mô hình nói không thay thế kết quả thực thi.
Sơ đồ minh họa vòng lặp chung; nó chưa thể hiện đầy đủ các trạng thái lỗi và điều kiện chuyển được thiết kế trong bài.
Viết chuyển trạng thái như một hợp đồng
Một sự kiện nên mang run_id, event_id, phiên bản trạng thái và bằng chứng. Bộ xử lý chỉ chấp nhận sự kiện đúng phiên bản; cập nhật bằng thao tác so sánh rồi ghi để hai worker không cùng chuyển một bước.
transition(state, event):
require event.expected_version == state.version
if state.phase == RUNNING and event.type == TOOL_DONE:
return VERIFYING with artifact_id = event.artifact_id
if state.phase == VERIFYING and event.type == CHECK_PASSED:
return SUCCEEDED with evidence = event.check_result
otherwise reject event
Đây là mã giả minh họa, chưa có lưu trữ hoặc xử lý đồng thời hoàn chỉnh. Điều đáng chú ý là TOOL_DONE không đi thẳng tới SUCCEEDED. Một công cụ có thể tạo tệp rỗng; bước kiểm tra phải độc lập với câu trả lời của mô hình.
BLOCKED cũng khác FAILED: thiếu quyền cần thông tin hoặc quyết định mới; lỗi định dạng có thể sửa trong ngân sách cho phép. Phân biệt này giúp giao diện nói rõ người dùng cần làm gì.
Đưa ngân sách và hủy tác vụ vào thiết kế
Giả sử tác vụ được phép tối đa tám lần gọi công cụ. Lưu bộ đếm trong trạng thái bền vững, tăng trước khi cấp lượt tiếp theo và kiểm tra ở mọi đường gọi. Nếu chỉ đặt giới hạn trong prompt, một nhánh phục hồi có thể bỏ qua nó.
Hủy tác vụ cần được kiểm tra trước mỗi tác dụng phụ. Nếu công cụ đang chạy không hỗ trợ hủy, trạng thái phải ghi rằng yêu cầu hủy đã nhận nhưng kết quả còn chờ đối soát. Không thể làm một email đã gửi biến mất bằng cách đổi nhãn tác vụ thành CANCELLED.
State machine quá chi tiết sẽ khó sửa; quá thô lại che mất sự khác biệt vận hành. Chỉ tách trạng thái khi nó làm thay đổi quyền, hành động tiếp theo, cách phục hồi hoặc thông tin hiển thị. “Đang suy nghĩ lần hai” thường không cần trở thành một trạng thái nghiệp vụ.
Kiểm thử đường đi bất thường trước
Cho TOOL_DONE đến hai lần, cho kết quả đến sau yêu cầu hủy, rồi cho kiểm tra thất bại sau khi tệp đã tồn tại. Hệ thống cần từ chối chuyển trạng thái vô nghĩa và lưu lý do, thay vì im lặng ép mọi sự kiện vào đường thành công.
Bài tập: dựng một bộ chuyển trạng thái thuần cho việc tạo báo cáo. Tạo ít nhất sáu chuỗi sự kiện, gồm thành công, thiếu quyền, hết ngân sách, sự kiện trùng, kết quả muộn và kiểm tra thất bại. Tự kiểm bằng ba bất biến: chỉ một trạng thái kết thúc được công nhận, mọi thành công có bằng chứng, và không có lần ghi mới sau khi quyền thực thi bị thu hồi.
Đọc tiếp checkpoint và phục hồi để lưu vòng đời qua lần khởi động lại, rồi đánh giá trạng thái cuối để kiểm tra điều người dùng thực sự nhận được.