Evaluasi untuk WebMCP
Dipublikasikan: 19 Mei 2026, Terakhir diperbarui: 28 Mei 2026
WebMCP mendukung agen yang menggunakan model AI generatif. Untuk menguji sistem apa pun menggunakan AI generatif, pengujian Anda harus mendukung hasil probabilistik: satu input dapat menghasilkan ribuan jawaban dengan tingkat akurasi yang bervariasi. Teknik pengujian ini disebut evaluasi atau eval.
Sebelum merilis alat ke dalam produksi, Anda harus mengonfirmasi bahwa agen memahami kapan harus memanggil alat, cara mengeksekusinya, dan jawaban apa yang dapat diterima. Mengatasi peluang kegagalan sebelum terjadi.
Tulis evaluasi untuk menguji titik kontak sistem Anda dengan model bahasa besar (LLM):
- Periksa apakah model memahami tujuan alat Anda, berdasarkan deskripsi dan skemanya.
- Verifikasi bahwa model memilih alat yang tepat dengan parameter yang benar untuk mendukung maksud pengguna.
- Mengonfirmasi bahwa model bertindak berdasarkan informasi yang diterimanya, misalnya menggunakan informasi untuk memanggil alat lain.
- Verifikasi keberhasilan perjalanan pengguna. Mengingat niat pengguna, dapatkah agen berhasil memenuhi perjalanan pengguna di situs saya dengan alat yang disediakan?
Anda harus terus menulis pengujian deterministik klasik untuk setiap interaksi sistem yang tidak berkomunikasi dengan model.
Mode kegagalan
Developer harus menguji sistem mereka untuk mencegah kegagalan sebelum terjadi. Untuk melakukannya, Anda perlu memahami kapan sistem dapat gagal, baik dengan sendirinya maupun saat berinteraksi dengan faktor eksternal. Untuk WebMCP, alat itu sendiri mungkin gagal dan agen mungkin gagal menggunakan alat sesuai harapan.
Alat WebMCP dapat gagal dan saat agen dapat gagal dengan alat WebMCP. Misalnya, pengguna Anda ingin menambahkan t-shirt ke keranjang mereka.
| Gagal | Contoh | Memecahkan masalah |
|---|---|---|
| Agen gagal memilih alat yang benar atau langsung memanggil alat yang salah. |
Agen melewati
|
|
| Agen memanggil alat dalam urutan yang salah |
Agen memanggil
|
|
| Agen memanggil alat dengan argumen yang salah |
Agen menelepon
|
|
Bagaimana jika pengguna ingin memeriksa isi keranjangnya?
| Gagal | Contoh | Memecahkan masalah |
|---|---|---|
| Output alat salah atau alat tidak menemukan sesuatu. | Pengguna meminta
|
|
Terakhir, alat dapat gagal dengan cara apa pun yang menyebabkan JavaScript gagal. Untuk memecahkan masalah, selidiki hal-hal berikut:
- Apakah kode alat menangani semua potensi error dan pengecualian runtime dengan benar?
- Apakah error dilaporkan kembali ke agen dan model dengan baik?
- Apakah API atau layanan eksternal yang digunakan alat tersebut berfungsi dengan baik?
- Apakah struktur error cukup jelas sehingga model dapat membedakan antara masalah sementara (coba lagi) dan kegagalan kritis?
Menguji alat secara terpisah
Jika agen tidak dapat mengetahui alat mana yang harus dipanggil untuk permintaan seperti, "Saya ingin pizza kecil", agen tidak akan memiliki peluang dalam perjalanan pengguna yang kompleks.
Dengan menguji alat secara terpisah, Anda dapat mengoptimalkan skema dan deskripsi sebelum menjalankan simulasi browser.
Mengukur akurasi panggilan
Lihat demo kami, yaitu
WebMCP zaMaker.
Saat pengguna memberikan perintah, "Saya ingin pizza kecil", Anda dapat mengharapkan respons model yang menunjukkan niat untuk melakukan panggilan set_pizza_size dengan argumen "size":"Small".
Fungsi expectedCall menentukan fungsi dan argumen yang diharapkan. Pendekatan ini mengonfirmasi bahwa agen akan memilih alat yang tepat untuk mendukung maksud pengguna, berdasarkan skema yang diberikan.
{
"messages": [
{
"role": "user",
"content": "I'd like a small pizza."
}
],
"expectedCall": [
{
"functionName": "set_pizza_size",
"arguments": { "size": "Small" }
}
]
}
expectedCall digunakan untuk melakukan pengujian deterministik berbasis aturan:
Anda dapat mengikat alat WebMCP ke siklus proses komponen, yang berarti Anda harus menguji saat status aplikasi Anda cocok dengan yang diharapkan WebMCP. Untuk mengelola hal ini, berikan daftar lengkap alat yang relevan dengan status yang ingin Anda evaluasi. Misalnya, pengguna sedang menjelajah bersama agennya dan membuka WebMCP zaMaker.
Status aplikasi
[
...
{
"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)",
...
},
...
]
Panggilan yang diharapkan
...
"expectedCall": [
{
"functionName": "set_pizza_size",
"arguments": { "size": "Small" }
}
]
...
Saat dibuka, WebMCP akan menampilkan alat add_topping, set_pizza_size, dan
set_pizza_style. Untuk menguji setiap alat ini secara akurat,
Anda harus menyertakan semua alat untuk membuat status lengkap yang disimulasikan.
CATATAN: Agen mungkin memiliki akses ke alat tambahan, tetapi yang dapat Anda lakukan adalah mengevaluasi alat yang Anda berikan.
Setelah mengetahui bahwa agen memanggil alat yang tepat sesuai kebutuhan, Anda dapat menguji apakah panggilan alat memiliki parameter yang benar dan hasilnya sesuai yang diharapkan. Ada dua langkah: pengujian deterministik dan pengujian probabilistik.
Menjalankan pengujian deterministik
Karena alat WebMCP dibuat dengan JavaScript atau sebagai anotasi HTML, Anda dapat menulis pengujian deterministik untuk melakukan tugas berikut:
- Verifikasi logika alat.
- Pastikan dependensi dipanggil dengan benar.
- Konfirmasi bahwa antarmuka pengguna diperbarui seperti yang diharapkan, beserta efek samping yang disengaja lainnya.
- Verifikasi bahwa informasi yang ditampilkan cocok dengan nilai yang diharapkan.
- Validasi parameter pengujian.
Misalnya, jika alat Anda menggunakan fungsi SearchComponent, Anda dapat menguji dengan
meneruskan tiruan SearchComponent. Jangan lupa untuk menyimulasikan lingkungan tempat alat beroperasi untuk mendapatkan hasil terbaik. Teknik ini sama dengan yang akan Anda gunakan saat menulis pengujian integrasi aplikasi lain.
Menjalankan pengujian probabilistik
Jika Anda memerlukan output model untuk memanggil alat berikutnya dengan benar, Anda perlu menulis evaluasi.
Pengguna dapat memberikan kueri langsung ke model yang secara khusus menanyakan fungsi alat, atau kueri ambigu yang menyiratkan bahwa alat harus digunakan. Misalnya, "Tambahkan pepperoni ke pizza saya" adalah kueri langsung. "Saya ingin semua daging di pizza saya" lebih ambigu dan mengharuskan model memahami bahwa model memerlukan alat add_topping dan topping mana yang dapat didefinisikan sebagai daging.
Saat membuat set data untuk evaluasi, sertakan kueri langsung yang menguji eksekusi alat dasar dan kueri terbuka yang menguji logika penalaran model dan pemilihan alat.
Jika Anda menjalankan kedai kopi, Anda dapat mendukung pengguna yang meminta agen mereka untuk memesan ulang kopi yang sama dengan yang mereka pesan bulan lalu. Tulis alat untuk menelusuri pesanan
sebelumnya, OrderHistoryService, dan alat lain untuk memesan kopi. Untuk menguji layanan histori pesanan, Anda dapat mengirimkan tiruan yang menampilkan ID produk kopi.
Dalam contoh ini, Anda mengevaluasi apakah model memahami maksud kueri, memilih alat yang tepat, dan apakah alat tersebut memberikan informasi yang tepat untuk mengambil tindakan.
Jika model tidak memanggil get_order_history, model tidak akan tahu item_id
yang akan digunakan untuk order_product.
Pengujian menyeluruh
Tulis pengujian end-to-end untuk memberi Anda keyakinan bahwa pengguna dan agen mereka dapat menyelesaikan perjalanan mereka dengan sukses. Selain menguji setiap alat, Anda juga menguji bahwa tindakan multi-langkah dilakukan dalam urutan yang benar.
Misalnya, Anda menjalankan toko pakaian online. Pengguna bertanya kepada agen: "Saya ingin membeli jaket hitam dan celana jeans. Dapatkah Anda memberikan rincian bahan yang digunakan?"
Perjalanan yang berhasil dengan agen mungkin terlihat seperti berikut:
- Buka kategori pakaian.
- Temukan salah satu item pakaian yang diminta (urutan tidak penting).
- Menemukan item tertentu (
search_clothes). - Dapatkan detail produk yang berisi daftar materi (
get_product_details). - Ulangi langkah 2-4 untuk setiap item yang diminta.
Saat mencapai langkah 2, agen dapat menelusuri kemeja hitam terlebih dahulu atau celana jeans, urutannya tidak penting. Namun, langkah-langkah lainnya harus diikuti secara berurutan.
Tulis evaluasi end-to-end untuk memverifikasi bahwa agen memanggil alat dalam urutan yang diharapkan:
{
"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" }
}
]
}
]
}
]
}
Mengevaluasi kegagalan di tengah rantai
start_pizza_creator, set_pizza_style, set_pizza_size, start_checkout, add_discount_coupon, dan complete_checkout. add_discount_coupon gagal, tetapi proses masih dapat diselesaikan, yang berarti pengguna tidak menerima diskon.Terkadang, agen harus memanggil beberapa alat secara berurutan. Apa yang terjadi jika alat gagal di tengah proses ini? Misalnya, pengguna ingin memesan pizza dengan kode kuponnya:
"Saya ingin Pesto pizza ukuran kecil. Gunakan kode promo saya, FreePizza."
Agen mungkin gagal di add_discount_coupon dan melanjutkan ke
checkout untuk pizza dengan harga penuh. Untuk menguji alat add_discount_coupon, Anda
dapat mengeksekusi urutan panggilan alat ini secara manual, tanpa berinteraksi
dengan model, untuk menyimulasikan skenario ini. Bawa aplikasi Anda ke status
tempat Anda memperkirakan alat akan gagal. Dalam hal ini, itu setelah
alat start_checkout. Kemudian, Anda dapat mengevaluasi add_discount_coupon secara terpisah.
Bereksperimen dengan WebMCP
Mulai bereksperimen dengan evaluasi untuk alat secara terpisah dan mengevaluasi situs yang kompatibel dengan WebMCP milik Anda sendiri dengan agen yang kompatibel dengan WebMCP:
- Download alat evaluasi eksperimental kami di GitHub.
- Tinjau kursus kami, Membuat evaluasi AI.