Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
On-demand pelari dataset
Meng OnDemandEvaluationDatasetRunner atur seluruh siklus hidup evaluasi sisi klien: panggil agen, tunggu penyerapan telemetri, kumpulkan rentang dari, dan panggil Evaluate API CloudWatch, semuanya dalam satu panggilan. run()
Gunakan pelari sesuai permintaan untuk iterasi waktu pengembangan, CI/CD pipeline, dan kumpulan data kecil di mana Anda memerlukan detail per-skenario, per-evaluator segera dalam respons.
catatan
Pelari sesuai permintaan mendukung semua AgentCore evaluator, termasuk semua evaluator bawaan di seluruh level sesi, pelacakan, dan panggilan alat, serta evaluator khusus. Runner secara otomatis menangani konstruksi permintaan sadar tingkat, batching, dan pemetaan kebenaran dasar untuk evaluator mana pun yang Anda konfigurasikan.
Cara kerjanya
Pelari memproses skenario dalam tiga fase:
-
Memanggil: Semua skenario berjalan secara bersamaan menggunakan kumpulan utas. Setiap skenario mendapatkan ID sesi unik, dan beralih ke skenario yang dijalankan secara berurutan untuk mempertahankan konteks percakapan.
-
Tunggu: Penundaan yang dapat dikonfigurasi (default: 180 detik) memungkinkan CloudWatch untuk menelan data telemetri. Penundaan ini dibayar sekali, bukan per skenario.
-
Evaluasi: Rentang dikumpulkan dari CloudWatch dan permintaan evaluasi dibuat untuk setiap evaluator. Bidang kebenaran dasar dari dataset (
expected_response,assertions,expected_trajectory) secara otomatis dipetakan ke input referensi API yang benar.
Agen pemanggil
Pelari membutuhkan agen pemanggil, panggilan yang memanggil agen Anda untuk satu giliran. Invoker bersifat framework-agnostik: Anda dapat memanggil agen Anda melalui boto3invoke_agent_runtime, panggilan fungsi langsung, permintaan HTTP, atau metode lainnya.
import json import boto3 from bedrock_agentcore.evaluation import AgentInvokerInput, AgentInvokerOutput REGION = "<region-code>" AGENT_ARN = "arn:aws:bedrock-agentcore:<region-code>:<account-id>:runtime/<agent-id>" LOG_GROUP = "/aws/bedrock-agentcore/runtimes/<agent-id>-DEFAULT" agentcore_client = boto3.client("bedrock-agentcore", region_name=REGION) def agent_invoker(invoker_input: AgentInvokerInput) -> AgentInvokerOutput: payload = invoker_input.payload if isinstance(payload, str): payload = json.dumps({"prompt": payload}).encode() elif isinstance(payload, dict): payload = json.dumps(payload).encode() print(f"[{invoker_input.session_id}] > sending payload: {payload.decode()}") response = agentcore_client.invoke_agent_runtime( agentRuntimeArn=AGENT_ARN, runtimeSessionId=invoker_input.session_id, payload=payload, ) response_body = response["response"].read() print(f"[{invoker_input.session_id}] < received response: {response_body.decode()}") return AgentInvokerOutput(agent_output=json.loads(response_body))
| Bidang | Tipe | Deskripsi |
|---|---|---|
|
|
|
Input giliran dari dataset. |
|
|
|
Stabil di semua belokan dalam skenario. Berikan ini ke agen Anda untuk mempertahankan konteks percakapan. |
|
|
|
respon agen tersebut. |
Contoh
Contoh berikut memuat dataset dari file JSON dan menjalankan evaluasi sesuai permintaan. Untuk format dataset, lihat Skema Dataset.
from bedrock_agentcore.evaluation import ( OnDemandEvaluationDatasetRunner, EvaluationRunConfig, EvaluatorConfig, FileDatasetProvider, CloudWatchAgentSpanCollector, ) # Load dataset from a local file (see Dataset schema for format) dataset = FileDatasetProvider("dataset.json").get_dataset() # Or load from the Dataset Management service from bedrock_agentcore.evaluation import DatasetClient, DatasetManagementServiceProvider ds_client = DatasetClient(region_name=REGION) dataset = DatasetManagementServiceProvider(dataset_id="my-dataset-id", client=ds_client).get_dataset() # Create span collector span_collector = CloudWatchAgentSpanCollector( log_group_name=LOG_GROUP, region=REGION, ) # Configure evaluators config = EvaluationRunConfig( evaluator_config=EvaluatorConfig( evaluator_ids=[ "Builtin.GoalSuccessRate", "Builtin.TrajectoryExactOrderMatch", "Builtin.Correctness", "Builtin.Helpfulness", ], ), evaluation_delay_seconds=180, max_concurrent_scenarios=5, ) # Run runner = OnDemandEvaluationDatasetRunner(region=REGION) result = runner.run( agent_invoker=agent_invoker, dataset=dataset, span_collector=span_collector, config=config, ) print(f"Completed: {len(result.scenario_results)} scenario(s)")
Hasil proses:
for scenario in result.scenario_results: print(f"\nScenario: {scenario.scenario_id} ({scenario.status})") if scenario.error: print(f" Error: {scenario.error}") continue for evaluator in scenario.evaluator_results: print(f" {evaluator.evaluator_id}:") for r in evaluator.results: print(f" Score: {r.get('value')}, Label: {r.get('label')}") ignored = r.get("ignoredReferenceInputFields", []) if ignored: print(f" Ignored fields: {ignored}")
Untuk menyimpan hasil ke file:
with open("results.json", "w") as f: f.write(result.model_dump_json(indent=2))
Referensi konfigurasi
Kolektor rentang
Sebuah AgentSpanCollector yang mengambil rentang telemetri setelah pemanggilan agen. SDK mengirimkanCloudWatchAgentSpanCollector:
from bedrock_agentcore.evaluation import CloudWatchAgentSpanCollector span_collector = CloudWatchAgentSpanCollector( log_group_name="/aws/bedrock-agentcore/runtimes/<agent-id>-DEFAULT", region=REGION, )
Kolektor menanyakan dua grup CloudWatch log (aws/spansuntuk rentang struktural dan grup log agen untuk konten percakapan), melakukan polling sampai rentang muncul, dan mengembalikannya sebagai daftar datar.
Konfigurasi evaluasi
from bedrock_agentcore.evaluation import EvaluationRunConfig, EvaluatorConfig config = EvaluationRunConfig( evaluator_config=EvaluatorConfig( evaluator_ids=["Builtin.Correctness", "Builtin.GoalSuccessRate"], ), evaluation_delay_seconds=180, # Wait for CloudWatch ingestion (default: 180) max_concurrent_scenarios=5, # Thread pool size (default: 5) simulation_config=None, # Set SimulationConfig for simulated scenarios )
| Bidang | Default | Deskripsi |
|---|---|---|
|
|
— |
Daftar ID evaluator (nama bawaan atau ID evaluator khusus). |
|
|
180 |
Detik menunggu setelah pemanggilan CloudWatch untuk menelan rentang. Setel ke 0 jika menggunakan non- CloudWatch kolektor. |
|
|
5 |
Jumlah skenario maksimum untuk dipanggil dan dievaluasi secara paralel. |
|
|
Tidak ada |
Konfigurasi untuk skenario simulasi. Tet |
Struktur hasil
Pelari mengembalikan sebuah EvaluationResult dengan struktur berikut:
EvaluationResult └── scenario_results: List[ScenarioResult] ├── scenario_id: str ├── session_id: str ├── status: "COMPLETED" | "FAILED" ├── error: Optional[str] └── evaluator_results: List[EvaluatorResult] ├── evaluator_id: str └── results: List[Dict] # Raw API responses
Setiap entri results adalah diktat respons mentah dari Evaluate API, berisi bidang sepertivalue,label,explanation,context,tokenUsage, danignoredReferenceInputFields. Lihat Memulai evaluasi sesuai permintaan untuk format respons lengkap.
Skenario dengan status FAILED berarti masalah struktural terjadi (kesalahan pemanggilan agen, kegagalan pengumpulan rentang). Kesalahan evaluator individu dalam COMPLETED skenario dicatat dalam results daftar evaluator dengan bidang errorCode danerrorMessage.