View a markdown version of this page

On-demand pelari kumpulan data - Batuan Dasar Amazon AgentCore

On-demand pelari kumpulan data

OnDemandEvaluationDatasetRunnerIni mengatur seluruh sisi klien siklus hidup evaluasi: memanggil agen, menunggu konsumsi telemetri, mengumpulkan rentang dari CloudWatch, dan memanggil Evaluate API, semuanya dalam satu panggilan. run()

Gunakan runner sesuai permintaan untuk iterasi waktu pengembang, CI/CD saluran pipa, 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. Pelari secara otomatis menangani konstruksi permintaan sadar tingkat, pengelompokan, dan pemetaan kebenaran dasar untuk evaluator mana pun yang Anda konfigurasikan.

Cara kerjanya

Pelari memproses skenario dalam tiga fase:

  1. Invoke: Semua skenario berjalan secara bersamaan menggunakan kumpulan utas. Setiap skenario mendapatkan ID sesi unik, dan berubah dalam skenario yang dijalankan secara berurutan untuk mempertahankan konteks percakapan.

  2. Tunggu: Penundaan yang dapat dikonfigurasi (default: 180 detik) memungkinkan CloudWatch untuk menelan data telemetri. Penundaan ini dibayar sekali, bukan per skenario.

  3. Evaluasi: Rentang dikumpulkan dari CloudWatch dan permintaan evaluasi dibuat untuk setiap evaluator. Bidang kebenaran dasar dari kumpulan data (expected_response,assertions,expected_trajectory) secara otomatis dipetakan ke input referensi API yang benar.

Agen invoker

Pelari membutuhkan agen pemanggil, panggilan yang memanggil agen Anda untuk satu giliran. Invoker adalah framework-agnostic: 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

AgentInvokerInput.payload

str atau dict

Masukan giliran dari dataset.

AgentInvokerInput.session_id

str

Stabil di semua belokan dalam skenario. Berikan ini ke agen Anda untuk mempertahankan konteks percakapan.

AgentInvokerOutput.agent_output

Any

Tanggapan agen.

Contoh

Contoh berikut memuat dataset dari file JSON dan menjalankan evaluasi sesuai permintaan. Untuk format kumpulan data, lihat Skema kumpulan data.

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

An 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), polling hingga bentang 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

evaluator_config.evaluator_ids

Daftar ID evaluator (nama bawaan atau ID evaluator kustom).

evaluation_delay_seconds

180

Detik untuk menunggu setelah doa CloudWatch untuk menelan rentang. Setel ke 0 jika menggunakan CloudWatch non-kolektor.

max_concurrent_scenarios

5

Jumlah maksimum skenario untuk dipanggil dan dievaluasi secara paralel.

simulation_config

Tidak ada

Konfigurasi untuk skenario simulasi. Setel SimulationConfig(model_id="…​") saat dataset berisi SimulatedScenario instance. Lihat Simulasi pengguna.

Struktur hasil

Pelari mengembalikan a 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 di dalamnya results adalah dict respons mentah dari Evaluate API, yang berisi bidang sepertivalue,label,explanation,, contexttokenUsage, danignoredReferenceInputFields. Lihat Memulai evaluasi sesuai permintaan untuk format respons lengkap.

Skenario dengan status FAILED berarti terjadi masalah struktural (kesalahan pemanggilan agen, kegagalan pengumpulan rentang). Kesalahan evaluator individu dalam COMPLETED skenario dicatat dalam results daftar evaluator dengan errorCode dan errorMessage bidang.