Xuất bản: Ngày 19 tháng 5 năm 2026, Lần cập nhật gần đây nhất: Ngày 28 tháng 5 năm 2026
| Video giải thích | Web | Phần mở rộng | Trạng thái của Chrome | Mục đích |
|---|---|---|---|---|
| GitHub | Xem | Ý định 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 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 nhân viên hỗ trợ hiểu rõ thời điểm gọi công cụ, cách thực hiện 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, ví dụ: sử dụng thông tin để gọi một công cụ khác.
- Xác minh hành trình của người dùng thành công. Dựa trên ý định của người dùng, liệu một trợ lý ảo 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 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 hỗ trợ có thể không sử dụng được công cụ này như mong đợi.
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ố |
|---|---|---|
| Tác nhân không chọn được công cụ phù hợp hoặc gọi trực tiếp công cụ không phù hợp. |
Tác nhân bỏ qua
|
|
| Nhân viên hỗ trợ gọi các công cụ theo thứ tự không chính xác |
Tác nhân gọi
|
|
| Nhân viên hỗ trợ 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ỏ lỡ điều gì đó. | 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 kiểm tra những điều sau:
- Mã công cụ có xử lý đúng tất cả các lỗi thời gian chạy và trường hợp ngoại lệ tiềm ẩn 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 thích hợp 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 không biết nên gọi công cụ nào 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.
Đ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ự kiến một 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 quy trình 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ụ: 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 hoàn chỉnh được mô phỏng.
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ó 2 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 Application Integration khác.
Chạy thử nghiệm xác suất
Nếu cần có đầ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 lệnh 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ử việc 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ý đặt hàng, bạn có thể gửi một mô hình 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 mô hình không gọi get_order_history, thì 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ử từ đầu đến cuối để giúp bạn tin tưởng 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 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 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ón đồ 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 chi tiết 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 đến 4 cho từng mục được yêu cầu.
Khi đến bước 2, tác nhân có thể tìm kiếm chiếc áo sơ mi đen 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 quy trình đánh giá toàn diện để xác minh các công cụ gọi của trợ lý ảo 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. 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 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 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 ở bước add_discount_coupon và chuyển sang bước 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 eval cho công cụ riêng biệt và đánh giá các trang web có 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 trên GitHub.
- Xem khoá học Tạo bản đánh giá AI của chúng tôi.