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.
Người dùng hỏi: “Đơn hàng của tôi đã giao chưa?”. Mô hình trả về tên công cụ lookup_order và mã đơn hàng. Chưa có dữ liệu nào được tra cứu chỉ vì đoạn văn bản ấy xuất hiện. Ứng dụng phải nhận lời gọi, kiểm tra nó, chạy dịch vụ và đưa kết quả trở lại cuộc hội thoại.
Hiểu ranh giới này giúp bạn tránh giao quyền cho mô hình chỉ bằng một câu nhắc “hãy cẩn thận”.
Một vòng gọi công cụ có những gì
Trong ví dụ giả định, người dùng đã chọn đơn DH-DEMO. Ứng dụng đưa cho mô hình mô tả công cụ chỉ đọc cùng schema đầu vào. Luồng khái niệm như sau:
Người dùng hỏi trạng thái đơn
→ mô hình đề xuất lookup_order(order_id)
→ ứng dụng kiểm tra quyền và tham số
→ dịch vụ trả trạng thái kèm thời điểm cập nhật
→ mô hình diễn đạt kết quả cho người dùng
Tài liệu tool use của Anthropic phân biệt công cụ do ứng dụng thực thi và công cụ chạy phía dịch vụ cung cấp. Với công cụ do bạn triển khai, lời gọi có cấu trúc vẫn phải đi qua mã ứng dụng. Mô hình lựa chọn công cụ không đồng nghĩa mô hình có quyền truy cập mọi dữ liệu mà công cụ biết đọc.
Viết mô tả để chọn đúng hành động
Tên do_stuff không cho mô hình biết lúc nào nên dùng. Tên lookup_order_status cùng mô tả “đọc trạng thái của đơn thuộc người dùng hiện tại, không thay đổi đơn” giảm sự nhập nhằng giữa tra cứu và cập nhật.
Đầu vào chỉ nên chứa thông tin mô hình cần lựa chọn. Danh tính người dùng lấy từ phiên xác thực phía máy chủ; không yêu cầu mô hình tự điền user_id rồi tin vào giá trị đó. Kiểm tra quyền sở hữu đơn hàng sau khi nhận order_id là bước bắt buộc của ứng dụng minh họa này.
Đầu ra cũng cần hợp đồng rõ. Phân biệt not_found, forbidden, temporarily_unavailable và kết quả thành công trong xử lý nội bộ. Phần thông báo ra ngoài có thể gộp một số trường hợp để tránh tiết lộ sự tồn tại của dữ liệu không được phép xem.
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.
Công cụ ghi dữ liệu cần cơ chế khác
“Đơn đang giao” và “hủy đơn” có hậu quả khác nhau. Khi thêm công cụ hủy, đừng để nó dùng cùng đường thực thi không kiểm soát với tra cứu. Trước khi chạy, xác minh trạng thái đơn còn cho phép hủy, ý định người dùng và quyền thực hiện.
Một thiết kế có thể tạo bản xem trước gồm mã đơn, tác động và điều kiện hủy, rồi nhận xác nhận gắn với chính bản đó. Nếu dữ liệu thay đổi trước khi xác nhận, cần kiểm tra lại thay vì thực hiện theo trạng thái cũ.
Khi mạng ngắt sau lời gọi, chưa thể kết luận hành động thất bại. Mã yêu cầu duy nhất và cơ chế chống thực thi lặp ở dịch vụ giúp việc thử lại không hủy hai lần hoặc gửi nhiều thông báo. Prompt không thay thế được cơ chế này.
Chọn công cụ nhỏ nhưng đừng chia vụn quá mức
Công cụ có phạm vi hẹp dễ mô tả và kiểm tra. Tuy nhiên, nếu một truy vấn đơn giản phải gọi quá nhiều bước phụ thuộc, độ trễ và số điểm hỏng tăng lên. Có thể gộp các thao tác chỉ đọc vốn luôn đi cùng nhau, miễn quyền truy cập vẫn rõ ràng.
Lỗi thường gặp là đưa toàn bộ schema cơ sở dữ liệu thành danh sách công cụ hoặc trả nguyên một đối tượng rất lớn. Mô hình cần dữ liệu phục vụ quyết định hiện tại. Trả thêm thông tin vừa tốn ngữ cảnh vừa mở rộng khả năng sử dụng sai dữ liệu.
Ghi nhật ký tên công cụ, trạng thái, mã tương quan và thời gian; tránh lưu thông tin cá nhân không cần thiết. Khi câu trả lời sai, nhật ký cho biết mô hình chọn sai công cụ hay dịch vụ trả dữ liệu sai.
Bài tập: kiểm tra đường thực thi
Thiết kế công cụ giả định tra cứu phòng họp trống và đặt phòng. Viết đầu vào, đầu ra và kiểm tra quyền cho từng công cụ. Sau đó mô phỏng phòng bị người khác đặt giữa lúc xem trước và xác nhận.
Tiêu chí đạt: tra cứu không làm thay đổi lịch, đặt phòng kiểm tra lại xung đột, yêu cầu lặp không tạo hai lịch và giao diện báo đúng trạng thái cuối. Đọc tiếp retry và timeout để xử lý những lần không nhận được phản hồi.