Evals cho WebMCP
Ngày xuất bản: 19 tháng 5 năm 2026, Cập nhật gần đây nhất: 28 tháng 5 năm 2026
| Thông tin giải thích | Web | Phần mở rộng | Trạng thái Chrome | Mục đích |
|---|---|---|---|---|
| GitHub | Xem | Mục đích thử nghiệm |
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 sử dụ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 dữ liệu đầ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 phiên bản chính thức, bạn phải xác nhận rằng các tác nhân 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 là chấp nhận được. Giải quyết các cơ hội xảy ra lỗi trước khi chúng xảy ra.
Viết các bài đánh giá để kiểm thử các điểm tiếp xúc của hệ thống với mô hình ngôn ngữ lớn (LLM):
- Kiểm tra để đảm bảo rằng mô hình hiểu rõ 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ụ có 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. Với mục đích của người dùng, liệu một tác nhân có thể hoàn thành thành công 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 không?
Bạn nên tiếp tục viết các bài kiểm thử xác định cổ điển cho mọi 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 của họ để 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 hệ thống 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ụ có thể gặp lỗi và các tác nhâ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 phông vào giỏ hàng.
| Lỗi | Ví dụ | Khắc phục sự cố |
|---|---|---|
| Tác nhân không chọn được công cụ chính xác hoặc gọi trực tiếp công cụ không chính xác. |
Tác nhân bỏ qua
|
|
| Tác nhân gọi công cụ theo thứ tự không chính xác |
Tác nhân gọi
|
|
| Tác nhân gọi công cụ bằng các đối số không chính xác |
Tác nhân gọi
|
|
Điều gì sẽ xảy ra nếu người dùng muốn kiểm tra nội dung trong giỏ hàng của họ?
| Lỗi | Ví dụ | Khắc phục sự cố |
|---|---|---|
| Kết quả 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ể gặp lỗi theo bất kỳ cách nào mà JavaScript gặp lỗi. Để khắc phục sự cố, hãy điều tra những điều sau:
- Mã công cụ có xử lý đúng cách tất cả các lỗi và 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ụ 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ông cụ một cách riêng biệt
Nếu một tác nhân không thể xác định được công cụ nào cần gọi cho một yêu cầu như "Tôi muốn một chiếc 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ông cụ một cách 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.
Đo lường độ chính xác của lệnh gọi
Hãy xem bản minh hoạ của chúng tôi, the
WebMCP zaMaker.
Khi người dùng đưa ra câu lệnh "Tôi muốn một chiếc pizza nhỏ", bạn có thể mong đợi mô hình phản hồi
cho biết ý định thực hiện lệnh gọi set_pizza_size với đố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 tác nhân sẽ chọn đúng công cụ để hỗ trợ ý định của người dùng dựa trên giản đồ được cung cấp.
{
"messages": [
{
"role": "user",
"content": "I'd like a small pizza."
}
],
"expectedCall": [
{
"functionName": "set_pizza_size",
"arguments": { "size": "Small" }
}
]
}
expectedCall được dùng để thực hiện bài kiểm thử xác định dựa trên quy tắc:
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, 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 những gì 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ụ: người dùng đang cùng duyệt web với tác nhân của họ 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)",
...
},
...
]
Lệnh gọi dự kiến
...
"expectedCall": [
{
"functionName": "set_pizza_size",
"arguments": { "size": "Small" }
}
]
...
Khi mở, WebMCP 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 trạng thái mô phỏng, hoàn chỉnh.
LƯU Ý: Một tác nhân có thể có quyền truy cập vào các công cụ bổ sung, nhưng bạn chỉ có thể đánh giá các công cụ mà bạn cung cấp.
Giờ đây, bạn đã 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ó các tham số chính xác và kết quả có đúng như dự kiến không. Có 2 bước: kiểm thử xác định và kiểm thử xác suất.
Chạy các bài kiểm thử xác định
Vì các công cụ WebMCP được xây dựng bằng JavaScript hoặc dưới dạng chú thích HTML, nên bạn có thể viết các bài kiểm thử xác định để thực hiện các tác vụ sau:
- Xác minh logic công cụ.
- Xác nhận rằng các phần phụ thuộc đã được gọi chính xác.
- 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 sử dụng hàm SearchComponent, bạn có thể kiểm thử bằng cách truyền 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ó kết quả tốt nhất có thể. Đây là kỹ thuật tương tự mà bạn sẽ sử dụng khi viết một bài kiểm thử tích hợp ứng dụng khác.
Chạy các bài kiểm thử xác suất
Nếu bạn yêu cầu đầu ra của mô hình để gọi đúng các công cụ tiếp theo, thì bạn cần viết evals.
Người dùng có thể đưa ra các truy vấn trực tiếp cho mô hình để hỏi cụ thể về những gì công cụ thực hiện hoặc một truy vấn 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 pizza của tô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 evals, hãy đưa cả các truy vấn trực tiếp kiểm thử việc thực thi công cụ cơ sở và các truy vấn mở kiểm thử logic suy luận và lựa chọn công cụ của mô hình.
Nếu bạn đ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 tác nhân của họ đặ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 đó, OrderHistoryService và một công cụ khác để đặt cà phê. Để kiểm thử dịch vụ nhật ký đặ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 rõ ý định của truy vấn, chọn đúng công cụ và công cụ đó có cung cấp thông tin chính xác để thực hiện hành động không.
Nếu mô hình không gọi get_order_history, thì mô hình sẽ không biết item_id nào cần sử dụng cho order_product.
Kiểm thử toàn diện
Viết các bài kiểm thử toàn diện để bạn tự tin rằng người dùng và tác nhân của họ có thể hoàn thành hành trình của mì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 rằng các hành động 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 tác nhân của họ: "Tôi đang muốn mua một chiếc áo khoác màu đ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 chất liệu được sử dụng không?"
Hành trình thành công của tác nhân có thể như sau:
- Chuyển đến danh mục quần áo.
- Tìm một trong các mặt hàng quần áo được yêu cầu (thứ tự không quan trọng).
- Tìm mặt hàng 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 bước 2-4 cho từng mặt hàng được yêu cầu.
Khi tác nhân chuyển đến bước 2, tác nhân có thể tìm kiếm áo khoác màu đen trước hoặc quần jean, 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 eval toàn diện để xác minh rằng tác nhân gọi công cụ 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 giữa chuỗi
start_pizza_creator, set_pizza_style, set_pizza_size, start_checkout, add_discount_coupon, và complete_checkout. Lệnh gọi add_discount_coupon không thành công, nhưng quy trình vẫn có thể hoàn tất, nghĩa là người dùng không nhận được chiết khấu.Có thể có những trường hợp tác nhân 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 ở giữa quy trình này? Ví dụ: người dùng muốn đặt pizza bằng mã phiếu giảm giá của họ:
"Tôi muốn một chiếc pizza Pesto nhỏ. Sử dụng mã khuyến mãi của tôi, FreePizza."
Có thể tác nhân có thể gặp lỗi ở add_discount_coupon và chuyển sang thanh toán cho chiếc 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ô 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 evals cho các công cụ một cách riêng biệt và đánh giá các trang web hỗ trợ WebMCP của riêng bạn bằng bất kỳ tác nhân 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 xuống trên GitHub.
- Xem khoá học Tạo bài đánh giá AI.