Đánh giá cho WebMCP
Xuất bản: Ngày 19 tháng 5 năm 2026
WebMCP hỗ trợ các tác nhân sử dụng mô hình AI tạo sinh. Để kiểm thử bất kỳ hệ thống nào bằng AI tạo sinh, các bài kiểm thử của bạn cần hỗ trợ kết quả xác suất: một đầu vào có thể dẫn đến hàng nghìn câu trả lời với mức độ chính xác khác nhau. Kỹ thuật kiểm thử này được gọi là đánh giá hoặc evals.
Trước khi phát hành các công cụ vào quy trình sản xuất, bạn phải xác nhận rằng các đặc vụ hiểu rõ thời điểm gọi công cụ, cách thực thi công cụ và những câu trả lời nào được chấp nhận. Giải quyết các vấn đề có thể dẫn đến thất bại trước khi chúng xảy ra.
Viết các bản đánh giá để kiểm thử các điểm tiếp xúc của hệ thống với một mô hình ngôn ngữ lớn (LLM):
- Kiểm tra để đảm bảo mô hình hiểu được mục đích của công cụ dựa trên nội dung mô tả và giản đồ của công cụ.
- Xác minh rằng mô hình chọn đúng công cụ với các tham số chính xác để hỗ trợ ý định của người dùng.
- Xác nhận rằng mô hình đang hành động dựa trên thông tin mà mô hình nhận được, chẳng hạn như sử dụng thông tin để gọi một công cụ khác.
- Xác minh hành trình thành công của người dùng. Dựa trên ý định của người dùng, liệu một tác nhân phần mềm có thể hoàn tất hành trình của người dùng trên trang web của tôi bằng các công cụ được cung cấp hay không?
Bạn nên tiếp tục viết các kiểm thử xác định cổ điển cho mọi hoạt động tương tác của hệ thống không giao tiếp với mô hình.
Chế độ lỗi
Nhà phát triển nên kiểm thử hệ thống để ngăn chặn lỗi trước khi chúng xảy ra. Để làm như vậy, bạn cần hiểu rõ thời điểm hệ thống có thể gặp lỗi, cả khi hoạt động độc lập và khi tương tác với các yếu tố bên ngoài. Đối với WebMCP, bản thân công cụ này có thể gặp lỗi và các nhân viên có thể không sử dụng được công cụ như dự kiến.
Các công cụ WebMCP có thể gặp lỗi và khi đó, tác nhân có thể gặp lỗi với các công cụ WebMCP. Ví dụ: giả sử người dùng muốn thêm một chiếc áo thun vào giỏ hàng.
| Lỗi | Ví dụ: | Khắc phục sự cố |
|---|---|---|
| Trợ lý không chọn đúng công cụ hoặc gọi trực tiếp công cụ không chính xác. |
Tác nhân bỏ qua
|
|
| Trợ lý gọi các công cụ theo thứ tự không chính xác |
Tác nhân gọi
|
|
| Trợ lý gọi công cụ bằng các đối số không chính xác |
Tác nhân gọi
|
|
Nếu người dùng muốn kiểm tra những mặt hàng trong giỏ hàng thì sao?
| Lỗi | Ví dụ: | Khắc phục sự cố |
|---|---|---|
| Đầu ra của công cụ không chính xác hoặc công cụ bỏ sót thông tin. | Người dùng yêu cầu
|
|
Cuối cùng, một công cụ có thể theo bất kỳ cách nào mà JavaScript không thành công. Để khắc phục sự cố, hãy kiểm tra những điều sau:
- Mã công cụ có xử lý đúng cách tất cả các lỗi và trường hợp ngoại lệ tiềm ẩn trong thời gian chạy không?
- Lỗi có được báo cáo lại cho tác nhân và mô hình một cách suôn sẻ không?
- Các API hoặc dịch vụ bên ngoài mà công cụ này dựa vào có hoạt động bình thường không?
- Cấu trúc lỗi có đủ rõ ràng để mô hình có thể phân biệt giữa vấn đề tạm thời (thử lại) và lỗi nghiêm trọng không?
Kiểm thử các công cụ riêng biệt
Nếu tác nhân không thể tìm ra công cụ nào để gọi cho một yêu cầu như "Tôi muốn một chiếc bánh pizza nhỏ", thì tác nhân sẽ không có cơ hội trong một hành trình phức tạp của người dùng.
Bằng cách kiểm thử các công cụ riêng biệt, bạn có thể tối ưu hoá giản đồ và nội dung mô tả trước khi chạy mô phỏng trình duyệt.
LƯU Ý: Bạn có thể kích hoạt lệnh gọi công cụ WebMCP using navigator.modelContext.executeTool(...).
Đo lường độ chính xác của cuộc gọi
Hãy xem bản minh hoạ của chúng tôi, WebMCP zaMaker.
Khi người dùng đưa ra câu lệnh "Tôi muốn một chiếc bánh pizza nhỏ", bạn có thể dự đoán được câu trả lời của mô hình cho biết ý định thực hiện lệnh gọi set_pizza_size bằng đối số "size":"Small".
Hàm expectedCall xác định hàm và đối số dự kiến. Phương pháp này xác nhận rằng dựa trên giản đồ được cung cấp, tác nhân sẽ chọn công cụ phù hợp để hỗ trợ ý định của người dùng.
{
"messages": [
{
"role": "user",
"content": "I'd like a small pizza."
}
],
"expectedCall": [
{
"functionName": "set_pizza_size",
"arguments": { "size": "Small" }
}
]
}
expectedCall dùng để thực hiện một kiểm thử dựa trên quy tắc và có tính xác định:
Bạn có thể liên kết các công cụ WebMCP với vòng đời của một thành phần. Điều này có nghĩa là bạn phải kiểm thử khi trạng thái ứng dụng của bạn khớp với trạng thái mà WebMCP mong đợi. Để quản lý việc này, hãy cung cấp danh sách đầy đủ các công cụ có liên quan đến trạng thái mà bạn muốn đánh giá. Ví dụ: một người dùng đang cùng duyệt web với nhân viên hỗ trợ và mở WebMCP zaMaker.
Trạng thái ứng dụng
[
...
{
"name": "add_topping",
"description": "Add one or more toppings to the pizza",
...
},
{
"name": "set_pizza_size",
"description": "Set the pizza size directly.",
"inputSchema": {
"type": "object",
"properties": {
"size": {
"type": "string",
"enum": [
"Small",
"Medium",
"Large",
"Extra Large"
],
"description": "The specific size name."
},
}
}
},
{
"name": "set_pizza_style",
"description": "Set the style of the pizza (colors/theme)",
...
},
...
]
Cuộc gọi dự kiến
...
"expectedCall": [
{
"functionName": "set_pizza_size",
"arguments": { "size": "Small" }
}
]
...
Khi mở, WebMCP sẽ hiển thị các công cụ add_topping, set_pizza_size và set_pizza_style. Để kiểm thử chính xác bất kỳ công cụ riêng lẻ nào trong số này, bạn nên đưa tất cả các công cụ vào để tạo một trạng thái mô phỏng hoàn chỉnh.
LƯU Ý: Tác nhân có thể có quyền truy cập vào các công cụ khác, nhưng bạn chỉ có thể đánh giá những công cụ mà bạn cung cấp.
Giờ đây, khi đã biết tác nhân gọi đúng công cụ khi cần, bạn có thể kiểm thử xem lệnh gọi công cụ có đúng tham số hay không và kết quả có như mong đợi hay không. Có hai bước: kiểm thử xác định và kiểm thử xác suất.
Chạy các kiểm thử xác định
Vì các công cụ WebMCP được tạo bằng JavaScript hoặc dưới dạng chú thích HTML, nên bạn có thể viết các kiểm thử xác định để thực hiện những việc sau:
- Xác minh logic của công cụ.
- Xác nhận rằng các phần phụ thuộc đã được gọi đúng cách.
- Xác nhận rằng giao diện người dùng đã được cập nhật như dự kiến, cùng với mọi tác dụng phụ có chủ ý khác.
- Xác minh rằng thông tin được trả về khớp với giá trị dự kiến.
- Xác thực các tham số kiểm thử.
Ví dụ: nếu công cụ của bạn dùng hàm SearchComponent, bạn có thể kiểm thử bằng cách truyền một bản mô phỏng của SearchComponent. Hãy nhớ mô phỏng môi trường mà công cụ đang hoạt động để có được kết quả tốt nhất có thể. Đây là kỹ thuật tương tự mà bạn sẽ dùng để viết một bài kiểm thử tích hợp ứng dụng khác.
Chạy thử nghiệm xác suất
Nếu cần có một đầu ra của mô hình để gọi đúng các công cụ tiếp theo, bạn cần viết các hàm đánh giá.
Người dùng có thể đưa ra các câu hỏi trực tiếp cho mô hình để hỏi cụ thể về chức năng của công cụ, hoặc một câu hỏi mơ hồ ngụ ý rằng nên sử dụng một công cụ. Ví dụ: "Thêm pepperoni vào pizza của tôi" là một truy vấn trực tiếp. "Tôi muốn tất cả các loại thịt trên bánh pizza của mình" là một câu hỏi mơ hồ hơn và yêu cầu mô hình hiểu rằng mô hình cần công cụ add_topping và loại topping nào có thể được xác định là thịt.
Khi tạo tập dữ liệu cho các bản đánh giá, hãy đưa cả truy vấn trực tiếp để kiểm thử quá trình thực thi công cụ cơ sở và truy vấn mở để kiểm thử khả năng suy luận của mô hình và logic lựa chọn công cụ.
Nếu điều hành một quán cà phê, bạn có thể hỗ trợ những người dùng yêu cầu trợ lý ảo đặt lại loại cà phê mà họ đã đặt vào tháng trước. Viết một công cụ để tìm kiếm các đơn đặt hàng trước đây, OrderHistoryService và một công cụ khác để đặt cà phê. Để kiểm thử dịch vụ nhật ký đơn đặt hàng, bạn có thể gửi một bản mô phỏng trả về mã sản phẩm cà phê.
Trong ví dụ này, bạn đánh giá xem mô hình có hiểu ý định của truy vấn, chọn đúng công cụ hay không và liệu công cụ đó có cung cấp thông tin phù hợp để thực hiện hành động hay không.
Nếu không gọi get_order_history, mô hình sẽ không biết nên dùng item_id nào cho order_product.
Kiểm thử toàn diện
Viết các kiểm thử toàn diện để đảm bảo rằng người dùng và các tác nhân của họ có thể hoàn tất hành trình một cách thành công. Ngoài việc kiểm thử các công cụ riêng lẻ, bạn cũng đang kiểm thử để đảm bảo các thao tác nhiều bước được thực hiện theo đúng thứ tự.
Ví dụ: bạn điều hành một cửa hàng quần áo trực tuyến. Một người dùng hỏi trợ lý của họ: "Tôi đang muốn mua một chiếc áo khoác đen và một chiếc quần jean. Bạn có thể cung cấp thông tin chi tiết về các vật liệu được sử dụng không?
Một hành trình thành công của tác nhân có thể diễn ra như sau:
- Chuyển đến danh mục quần áo.
- Tìm một trong những mặt hàng quần áo được yêu cầu (thứ tự không quan trọng).
- Tìm một mục cụ thể (
search_clothes). - Lấy thông tin chi tiết về sản phẩm có chứa danh sách chất liệu (
get_product_details). - Lặp lại các bước 2-4 cho từng mục được yêu cầu.
Khi đến bước 2, nhân viên có thể tìm kiếm chiếc áo sơ mi đen hoặc quần jean trước, thứ tự không quan trọng. Tuy nhiên, bạn phải làm theo các bước còn lại theo trình tự.
Viết một quy trình đánh giá toàn diện để xác minh các công cụ gọi của tác nhân theo thứ tự dự kiến:
{
"messages": [
{
"role": "user",
"content": "I am looking to buy a black jacket and a pair of jeans.
Could you provide a breakdown of the materials used ?"
}
],
"expectedCall": [
{
"functionName": "navigate_to_category",
"arguments": { "category": "clothes" }
},
{
"unordered": [
{
"ordered": [
{
"functionName": "search_clothes",
"arguments": { "query": "black jacket" }
},
{
"functionName": "get_product_details",
"arguments": { "productId": "JACKET002" }
}
]
},
{
"ordered": [
{
"functionName": "search_clothes",
"arguments": { "query": "jeans" }
},
{
"functionName": "get_product_details",
"arguments": { "productId": "JEANS001" }
}
]
}
]
}
]
}
Đánh giá các lỗi xảy ra trong chuỗi
start_pizza_creator, set_pizza_style, set_pizza_size, start_checkout, add_discount_coupon và complete_checkout. add_discount_coupon không thành công, nhưng quy trình vẫn hoàn tất, tức là người dùng không nhận được chiết khấu.Có thể có những lúc một trợ lý ảo phải gọi nhiều công cụ theo trình tự. Điều gì sẽ xảy ra nếu một công cụ gặp lỗi trong quá trình này? Ví dụ: người dùng muốn đặt bánh pizza bằng mã giảm giá của họ:
"Tôi muốn một chiếc bánh pizza Pesto cỡ nhỏ. Sử dụng mã khuyến mãi của tôi, FreePizza".
Có thể tác nhân sẽ không thành công ở add_discount_coupon và chuyển sang thanh toán cho một chiếc bánh pizza có giá đầy đủ. Để kiểm thử công cụ add_discount_coupon, bạn có thể thực thi thủ công chuỗi lệnh gọi công cụ này mà không cần tương tác với một mô hình để mô phỏng tình huống này. Đưa ứng dụng của bạn về trạng thái mà bạn dự đoán công cụ sẽ gặp lỗi. Trong trường hợp này, đó là sau công cụ start_checkout. Sau đó, bạn có thể đánh giá add_discount_coupon một cách riêng biệt.
Thử nghiệm với WebMCP
Bắt đầu thử nghiệm với các hoạt động đánh giá cho các công cụ riêng biệt và đánh giá các trang web của riêng bạn có bật WebMCP bằng bất kỳ tác nhân phần mềm nào tương thích với WebMCP:
- Tải các công cụ đánh giá thử nghiệm của chúng tôi trên GitHub.
- Hãy xem khoá học của chúng tôi về Tạo bản đánh giá AI.