Test en agent ende-til-ende (API)
Kjør engangssimuleringer, parallelle scenariobatcher og suiter for utgivelsesporter gjennom ThunderPhone API, slik at regresjoner i agenten fanges opp før kundene hører dem.
Å iterere på en AI-agent betyr å iterere på prompten, verktøyene og måten den håndterer randtilfeller på. Simulerings-API-et kjører ekte samtaler mot en agent ved hjelp av en scenarioprompt du oppgir. Å målrette mot en agent oppretter en bot-til-bot-kjøring; å målrette mot et telefonnummer oppretter en SIP-loopback-kjøring. Hver kjøring produserer en ekte samtalelogg med transkripsjon, vurdering og fakturering, slik at du ser nøyaktig hvordan agenten oppfører seg og hva den koster.
Bruk det til:
- Røyketester før distribusjon etter hver promptendring
- Regresjonssuiter koblet til CI (koble til webhooken
test-call.completed→ la byggingen feile hvis poengsummen synker) - Belastningstesting av samtidighetsgrenser
Éngangskjøring: enkeltkjøring
curl -X POST https://api.thunderphone.com/v1/simulations \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_type": "agent",
"target_id": 12,
"direction": "outbound",
"scenario_prompt": "You are a polite caller asking about refund policy for order 12345.",
"consent_to_charge": true
}'Felt:
| Felt | Type | Påkrevd | Beskrivelse |
|---|---|---|---|
target_type | string | ja | agent eller phone_number |
target_id | integer | ja | Agent-ID-en (eller telefonnummer-ID-en) |
direction | string | nei | outbound (standard; testinnringeren ringer) eller inbound (testinnringeren svarer) |
scenario_prompt | string | nei | Styrer hva testboten sier |
language / primary_language | string | nei | Språk for testinnringeren; koder som ikke støttes, avvises |
simulator_product | string | nei | testing (standard) eller spark for en mer menneskelignende simulert innringer, for eksempel tester av konsultasjon ved varm overføring |
consent_to_charge | boolean | ja | Må være true. Estimatet fakturerer både den valgte agenten og den simulerte innringeren, samt eventuelle telefoniøkter |
target_number | string | nei | E.164-overstyring for den eksterne siden; ellers brukes plattformens testnummer |
mode er skrivebeskyttet og avledes fra target_type: agent produserer
mode="bot", mens phone_number produserer mode="sip".
Svaret er et objekt for simuleringskjøring
med status="queued". Poll til status blir completed eller
failed; når call_id er angitt, laster du inn transkripsjonen via
GET /v1/calls/{call_id}/transcript.
Batcher: parallelle scenarioer
Kjør N scenarioer samtidig — nyttig for regresjonssuiter som treffer hvert kjente randtilfelle parallelt:
curl -X POST https://api.thunderphone.com/v1/simulations/batches \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_type": "agent",
"target_id": 12,
"direction": "outbound",
"run_count": 5,
"stagger_seconds": 2,
"scenario_prompts": [
"Ask about refund policy.",
"Ask for hours of operation.",
"Complain about a delayed shipment.",
"Ask to speak with a human.",
"Ask an unrelated trivia question."
],
"consent_to_charge": true
}'Svaret inneholder en run_ids-liste med underordnede kjørings-ID-er. Hent batch-
status:
curl https://api.thunderphone.com/v1/simulations/batches/{batch_id} \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"run_count er begrenset til 20; stagger_seconds fordeler oppstarten
for å unngå å overbelaste agenten (0–60 s).
Koble det til CI
Opprett en utgivelsesportpakke på siden Simuleringer
(/dashboard/simulations) – velg agenten, legg til scenarier manuelt eller
klikk Generer scenarier med AI for å utarbeide dem fra agentens
prompt (med en valgfri gjennomgang av kanttilfeller), og grupper dem i en pakke.
En pakke låser scenariene og agenten, samt en minste beståttprosent og en
valgfri regel om null kritiske feil. Beståtte kjøringer blir det godkjente
referansegrunnlaget; senere overganger fra bestått til ikke bestått rapporteres som regresjoner.
Bruk en organisasjons-API-nøkkel i CI.
Dette skriptet utløser pakken, sjekker status til vurderingen og sammenligningen er
fullført, og avslutter med en annen status enn null med mindre resultatet er pass:
#!/usr/bin/env bash
set -euo pipefail
: "${THUNDERPHONE_API_KEY:?Set THUNDERPHONE_API_KEY}"
: "${THUNDERPHONE_ORG_ID:?Set THUNDERPHONE_ORG_ID}"
: "${THUNDERPHONE_SUITE_ID:?Set THUNDERPHONE_SUITE_ID}"
base="https://api.thunderphone.com/v1/orgs/${THUNDERPHONE_ORG_ID}/suites/${THUNDERPHONE_SUITE_ID}"
auth="Authorization: Bearer ${THUNDERPHONE_API_KEY}"
run_id="$(curl --fail --silent --show-error -X POST "${base}/run" \
-H "$auth" -H "Content-Type: application/json" -d '{}' | jq -r '.id')"
deadline=$((SECONDS + 1800))
while (( SECONDS < deadline )); do
result="$(curl --fail --silent --show-error \
"${base}/runs/${run_id}" -H "$auth")"
status="$(jq -r '.status' <<<"$result")"
if [[ "$status" == "completed" ]]; then
jq . <<<"$result"
[[ "$(jq -r '.verdict' <<<"$result")" == "pass" ]]
exit
fi
sleep 10
done
echo "ThunderPhone suite timed out" >&2
exit 1POST /v1/orgs/{org_id}/suites/{suite_id}/run returnerer 202 med
kjørings-ID-en. GET /v1/orgs/{org_id}/suites/{suite_id}/runs/{run_id} returnerer
status, verdict, pass_rate, critical_failure_count og
referansegrunnlagets liste over regressions. Begge endepunktene knytter organisasjonen
i URL-en til organisasjonen for API-nøkkelen.
Mønstre
Regresjonskorpus per prompt
Vedlikehold en JSON-fil med tupler av {name, scenario_prompt, expected_outcome}.
Ved hver endring i prompten kjører du hele settet som en batch; sammenlign
transkripsjonene og vurderingene med forrige kjøring.
Røyketest per utgivelse
En enkelt batch med fem scenarier for normalflyten som du kjører etter hver
utrulling. Latenssensitiv, så behold stagger_seconds: 0.
Latensbenchmarking
Kjør identiske scenarier mot ulike produktnivåer (spark,
bolt, storm-base). Sammenlign call.graded-skårene og
duration_seconds fra hver resulterende samtalelogg.
Neste steg
Alle spørringsparametere, statuskoder og batchformater.
Gi hver testkjøring automatisk poengsum for å følge kvaliteten over tid.
Marker bestemte tester for menneskelig gjennomgang.
Strøm resultater til CI / Slack / PagerDuty.