Tool call vLLM: vì sao schema accuracy quyết định độ tin cậy của agent
Ubicloud cho biết constrained decoding trong vLLM có thể bảo đảm tool call tuân thủ schema. Với đội vận hành agent, cần tách bạch schema accuracy, trigger similarity và kiểm thử đúng tổ hợp model, template, parser.
Tool calling là điểm mà câu trả lời xác suất của LLM biến thành hành động có cấu trúc. Vì vậy, một lỗi nhỏ như gọi searchweb thay vì websearch, hoặc dùng cityname khi schema yêu cầu location, có thể làm đứt cả luồng agent.
Ubicloud nêu một ví dụ đáng chú ý: khi phục vụ Kimi K2.6 bằng vLLM phiên bản 0.28, họ chỉ nhận được tool call đúng schema trong 92% trường hợp — tương đương khoảng 2 trên 25 lần gọi bị lỗi. Với tác vụ agent nhiều lượt, phần lỗi còn lại có thể nhanh chóng trở thành vấn đề.
Tool call đúng không chỉ là JSON hợp lệ
Để một LLM gọi được công cụ bên ngoài, ứng dụng cần làm hai việc:
Cung cấp danh sách tool mà model được phép sử dụng.
Hướng dẫn model xuất lời gọi theo định dạng có cấu trúc.
Mỗi tool đi kèm một schema: mô tả tên tham số, kiểu dữ liệu, trường bắt buộc và các giá trị hợp lệ. Ví dụ, một tool webfetch có thể yêu cầu trường url; trường format, nếu có, chỉ nhận text, markdown hoặc html.
Inference engine sau đó phải đóng gói khai báo tool thành các token đúng với định dạng mà model nhận biết. Khi model sinh lời gọi, server lại cần parser để tách các token đặc thù đó thành JSON mà agent harness có thể thực thi.
Do đó, JSON “trông hợp lệ” vẫn chưa đủ. Một tool call chỉ dùng được khi nó tuân thủ schema đang hoạt động: đúng tên tool, đúng trường bắt buộc, đúng kiểu dữ liệu và đúng tập giá trị cho phép.
Vì sao schema accuracy quan trọng với agent
LLM sinh token theo xác suất; nó không hoạt động như compiler hay type checker. Dù schema đã được cung cấp, model vẫn có thể nhầm sang tên tool hoặc tên trường từng xuất hiện trong dữ liệu huấn luyện nhưng không tồn tại trong môi trường hiện tại.
Theo Ubicloud, tool call lỗi có thể kéo theo:
Agent phải thử lại lời gọi.
Thông báo lỗi được đưa vào ngữ cảnh hội thoại.
Chất lượng phản hồi giảm vì model phải tiếp tục suy luận trên ngữ cảnh bị nhiễu.
Chi phí tăng do phát sinh thêm lượt xử lý.
Vấn đề này đặc biệt rõ với workflow nhiều bước: một tool call sai không chỉ làm hỏng một thao tác mà còn có thể làm lệch phần ngữ cảnh cho các bước sau.
Hai chỉ số cần tách bạch
Moonshot AI công bố benchmark K2VV ToolCall để đối chiếu chất lượng phục vụ Kimi. Theo bài viết, workload của benchmark gồm 2.000 request và đo hai khía cạnh khác nhau:
| Chỉ số | Ý nghĩa |
|---|---|
| Trigger similarity | Dịch vụ có quyết định gọi tool tương tự dịch vụ tham chiếu của Moonshot AI hay không |
| Schema accuracy | Tool call được sinh ra có tuân thủ schema để có thể thực thi hay không |
Schema accuracy cao là cần thiết, nhưng không thay thế trigger similarity. Một hệ thống có thể luôn tạo cấu trúc hợp lệ mà vẫn gọi tool không đúng thời điểm.
Constrained decoding giải quyết phần nào?
Ubicloud cho biết vLLM đã bổ sung hỗ trợ constrained decoding và đưa tính năng này ra dưới dạng tùy chọn phía server trong vLLM 0.31.
Đây là cơ chế giải mã có ràng buộc: trong quá trình sinh token, engine chỉ cho phép những token vẫn có thể dẫn tới đầu ra tuân thủ schema. Theo bài viết, cách này có thể đạt 100% schema accuracy với các model Kimi và DeepSeek mới hơn.
Điểm quan trọng là phạm vi của kết quả: constrained decoding bảo đảm tính tuân thủ schema, không tự nó trả lời mọi câu hỏi về chất lượng agent — chẳng hạn model có chọn gọi đúng tool hay không.
Parser và template là một phần của chất lượng phục vụ
Bài viết nhấn mạnh rằng schema tool không chỉ được đưa nguyên dạng JSON vào model. Inference engine phải bọc nó bằng các token phù hợp với cách model được huấn luyện để nhận biết tool declaration.
Trong ví dụ Kimi, phần khai báo tool được đặt trong các token riêng như <|imsystem|>, tooldeclare và <|imend|>. Phần tool call sinh ra cũng dùng token đánh dấu chuyên biệt trước khi parser chuyển thành cấu trúc JSON.
Điều này cho thấy chất lượng tool calling phụ thuộc vào cả chuỗi thành phần:
Model đang phục vụ.
Cách khai báo schema cho model.
Chat template hoặc định dạng token tương ứng.
Parser dùng để trích xuất tool call.
Schema mà agent harness cần thực thi.
Một endpoint vẫn có thể trả phản hồi bình thường, nhưng tool call sẽ không dùng được nếu template hoặc parser không khớp với định dạng của model.
Cộng đồng tranh luận gì?
Một số bình luận dưới bài viết đồng tình rằng schema accuracy rất quan trọng với các tác vụ cần nhiều tool call liên tiếp.
Tuy nhiên, cũng có ý kiến cho rằng constrained decoding và constrained tool-call decoding đã xuất hiện trong vLLM từ trước dưới các hình thức khác nhau; vấn đề thực tế có thể nằm ở cấu hình phù hợp. Đây là nhận xét từ cộng đồng, không phải kết luận được chứng minh trong bài viết.
Một ý kiến khác đặt câu hỏi về tác động của schema-constrained decoding lên chất lượng đầu ra nói chung, vì cơ chế này thay đổi tập token mà model có thể chọn. Bài viết của Ubicloud tập trung vào schema accuracy và không công bố phép so sánh độc lập giữa constrained decoding với các chiến lược retry.
Điều cần kiểm tra khi đánh giá tool calling
Với đội triển khai vLLM, bài viết gợi ra một nguyên tắc đơn giản: không đánh giá tool calling chỉ bằng việc endpoint có trả HTTP response hay không.
Nên kiểm tra tối thiểu:
Model có nhận đúng phần khai báo tool hay không.
Parser có tách đúng tool call từ đầu ra đặc thù của model hay không.
Tên tool và arguments sau khi parse có tuân thủ schema hay không.
Model có gọi tool ở thời điểm phù hợp hay không.
Kết quả có giữ được khi thay đổi model, template, parser hoặc schema hay không.
Với Kimi, K2VV ToolCall là benchmark được Moonshot AI công bố để kiểm tra cả quyết định gọi tool lẫn tính hợp lệ của tool call. Với các schema riêng, cần có bộ kiểm thử phản ánh đúng tool mà agent thực tế sử dụng.
Kết luận
Tool calling không phải chỉ là một trường JSON trong API. Nó là giao điểm giữa đầu ra xác suất của LLM và một hành động mà hệ thống có thể thực thi.
Constrained decoding có thể loại bỏ lỗi vi phạm schema trong phạm vi mà Ubicloud mô tả. Nhưng để agent vận hành đáng tin cậy, cần nhìn toàn bộ chuỗi model, template, parser, schema và quyết định kích hoạt tool — thay vì chỉ nhìn một phản hồi có vẻ đúng định dạng.