Skema kumpulan data
Dataset berisi satu atau lebih skenario. Setiap skenario mewakili percakapan (sesi) dengan agen. Baik runner dataset on-demand maupun batch menggunakan format dataset yang sama.
AgentCore SDK mendukung dua jenis skenario:
-
Skenario yang telah ditentukan menggunakan urutan belokan tetap yang Anda buat dengan tangan. Pelari memutar ulang belokan persis seperti yang tertulis.
-
Skenario simulasi menggunakan LLM-backed aktor untuk menghasilkan belokan secara dinamis berdasarkan persona dan tujuan. Lihat Simulasi pengguna untuk detail tentang profil aktor dan konfigurasi simulasi.
FileDatasetProviderotomatis mendeteksi jenis skenario dari struktur JSON: skenario dengan turns bidang dimuat seperti yang telah ditentukan sebelumnya; skenario dengan actor_profile bidang (dan tidakturns) dimuat sebagai simulasi.
Skenario yang telah ditentukan
Skenario yang telah ditentukan menentukan urutan belokan tetap dengan input yang diketahui dan output yang diharapkan opsional.
Single-turn contoh
Setiap skenario mengirimkan satu prompt dan memeriksa respons:
{ "scenarios": [ { "scenario_id": "math-question", "turns": [ { "input": "What is 15 + 27?", "expected_response": "15 + 27 = 42" } ], "expected_trajectory": ["calculator"], "assertions": ["Agent used the calculator tool to compute the result"] }, { "scenario_id": "weather-check", "turns": [ { "input": "What's the weather?", "expected_response": "The weather is sunny" } ], "expected_trajectory": ["weather"], "assertions": ["Agent used the weather tool"] } ] }
Multi-turn contoh
Multi-turn skenario memiliki beberapa putaran per skenario. Mengubah mengeksekusi secara berurutan dalam sesi yang sama, mempertahankan konteks percakapan. Setiap giliran dapat memiliki sendiriexpected_response, sementara assertions dan expected_trajectory berlaku untuk seluruh sesi:
{ "scenarios": [ { "scenario_id": "math-then-weather", "turns": [ { "input": "What is 15 + 27?", "expected_response": "15 + 27 = 42" }, { "input": "What's the weather?", "expected_response": "The weather is sunny" } ], "expected_trajectory": ["calculator", "weather"], "assertions": [ "Agent used the calculator tool for the math question", "Agent used the weather tool when asked about weather" ] } ] }
Bidang skenario
| Bidang | Diperlukan | Tipe | Batasan | Deskripsi |
|---|---|---|---|---|
|
|
Ya |
String |
Non-empty |
Pengidentifikasi unik untuk skenario. |
|
|
Ya |
Daftar objek |
Non-empty daftar |
Daftar giliran dalam percakapan. Setiap giliran memiliki |
|
|
Tidak |
Daftar string |
Urutan nama alat yang diharapkan. Digunakan oleh evaluator lintasan ( |
|
|
|
Tidak |
Daftar string |
Pernyataan bahasa alami tentang perilaku yang diharapkan. Digunakan oleh |
|
|
|
Tidak |
Objek |
Metadata nilai kunci arbitrer untuk skenario tersebut. |
Putar bidang
| Bidang | Diperlukan | Tipe | Batasan | Deskripsi |
|---|---|---|---|---|
|
|
Ya |
String atau Objek |
Non-empty |
Prompt dikirim ke agen untuk giliran ini. Bisa berupa string biasa (misalnya, |
|
|
Tidak |
String |
Respon agen yang diharapkan untuk giliran ini. Digunakan oleh |
Skenario simulasi
Skenario simulasi mendefinisikan profil aktor dan input awal. Aktor menghasilkan belokan berikutnya secara dinamis:
{ "scenarios": [ { "scenario_id": "geography-student", "scenario_description": "A curious student asks geography questions", "actor_profile": { "traits": {"expertise": "novice", "tone": "curious"}, "context": "A student studying world geography who wants to learn about capitals", "goal": "Find out the capital cities of at least two different countries" }, "input": "Hi! I'm studying geography. Can you help me learn about world capitals?", "max_turns": 5, "assertions": [ "Agent provides accurate capital city information", "Agent is helpful and encouraging to the student" ] } ] }
Bidang skenario
| Bidang | Diperlukan | Tipe | Batasan | Deskripsi |
|---|---|---|---|---|
|
|
Ya |
String |
Non-empty |
Pengidentifikasi unik untuk skenario. |
|
|
Ya |
Objek |
Harus mengandung |
Identitas dan tujuan aktor, berisi |
|
|
Ya |
String atau Objek |
Non-empty |
Pesan pertama dikirim ke agen Anda untuk memulai percakapan. Biasanya string polos, tetapi juga bisa menjadi objek terstruktur. |
|
|
Tidak |
String |
Metadata opsional yang menjelaskan skenario. Berguna untuk mengatur dan mengidentifikasi skenario dalam hasil. |
|
|
|
Tidak |
Bilangan Bulat |
Harus ≥ 1 |
Jumlah putaran maksimum sebelum percakapan berhenti. Default: 10. |
|
|
Tidak |
Daftar string |
Pernyataan bahasa alami tentang perilaku yang diharapkan. Digunakan oleh |
|
|
|
Tidak |
Objek |
Metadata nilai kunci arbitrer untuk skenario tersebut. |
catatan
Skenario simulasi tidak mendukung expected_trajectory atau per-putaran expected_response karena alur percakapan tidak diketahui sebelumnya. Gunakan assertions untuk kebenaran dasar dengan skenario simulasi.
Pemetaan kebenaran dasar
Kedua pelari secara otomatis memetakan bidang dataset ke evaluator yang menggunakannya:
| Penilai | Bidang kebenaran dasar | Tingkat | Deskripsi |
|---|---|---|---|
|
|
|
Jejak |
Mengukur seberapa akurat respons agen sesuai dengan jawaban yang diharapkan. |
|
|
|
Sesi |
Memvalidasi apakah perilaku agen memenuhi pernyataan bahasa alami. |
|
|
|
Sesi |
Memeriksa apakah urutan panggilan alat yang sebenarnya cocok persis. |
|
|
|
Sesi |
Memeriksa bahwa alat yang diharapkan muncul secara berurutan, memungkinkan tambahan di antara mereka. |
|
|
|
Sesi |
Memeriksa bahwa semua alat yang diharapkan ada, terlepas dari urutannya. |
-
Bidang kebenaran dasar adalah opsional. Evaluator yang tidak menggunakan kebenaran dasar (misalnya,
Builtin.Helpfulness,Builtin.Faithfulness) mengevaluasi berdasarkan konten sesi saja. -
Anda dapat menyertakan semua bidang kebenaran dasar dalam satu kumpulan data. Setiap pelari merutekan bidang yang relevan ke evaluator yang sesuai.
-
Jika tidak ada bidang kebenaran dasar yang ada, evaluator kembali ke mode bebas kebenaran dasar mereka.
Untuk detail selengkapnya tentang bidang kebenaran dasar dan cara kerjanya dengan API Evaluate, lihat Evaluasi kebenaran dasar.
Konstruksi kumpulan data sebaris
Alih-alih memuat dari file JSON, Anda dapat membuat kumpulan data langsung dengan Python:
from bedrock_agentcore.evaluation import Dataset, PredefinedScenario, Turn dataset = Dataset( scenarios=[ PredefinedScenario( scenario_id="math-question", turns=[ Turn( input="What is 15 + 27?", expected_response="15 + 27 = 42", ), ], expected_trajectory=["calculator"], assertions=["Agent used the calculator tool"], ), PredefinedScenario( scenario_id="weather-check", turns=[ Turn(input="What's the weather?"), ], expected_trajectory=["weather"], ), ] )
Atau muat dari file JSON:
from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()