Open in
Celovito testiranje agenta (API)
Prek API-ja ThunderPhone izvajajte enkratne simulacije, vzporedne pakete scenarijev in zbirke za preverjanje pred izdajo, da odkrijete regresije agenta, preden jih slišijo stranke.
Izboljševanje agenta umetne inteligence pomeni izboljševanje njegovega poziva, njegovih orodij in načina obravnave robnih primerov. API za simulacije izvaja resnične klice proti agentu z uporabo scenarijskega poziva, ki ga navedete. Ciljanje agenta ustvari izvedbo med botoma; ciljanje telefonske številke ustvari izvedbo povratne zanke SIP. Vsaka izvedba ustvari resničen dnevnik klica s prepisom, ocenjevanjem in obračunavanjem, zato natančno vidite, kako se agent vede in koliko stane.
Uporabite ga za:
- Preizkuse delovanja pred uvedbo po vsakem urejanju poziva
- Regresijske zbirke, povezane s CI (povežite spletni kavelj
test-call.completed→ neuspešno zaključite gradnjo, če se rezultat zniža) - Preizkušanje omejitev sočasnosti pod obremenitvijo
Enkratni zagon: ena izvedba
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
}'Polja:
| Polje | Vrsta | Obvezno | Opis |
|---|---|---|---|
target_type | niz | da | agent ali phone_number |
target_id | celo število | da | ID agenta (ali ID telefonske številke) |
direction | niz | ne | outbound (privzeto; testni klicatelj kliče) ali inbound (testni klicatelj odgovori) |
scenario_prompt | niz | ne | Določa, kaj pove testni bot |
language / primary_language | niz | ne | Jezik testnega klicatelja; nepodprte kode so zavrnjene |
simulator_product | niz | ne | testing (privzeto) ali spark za bolj človeškemu podoben simulirani klicatelj, na primer za preizkuse posvetovanja pri toplem preusmerjanju |
consent_to_charge | logična vrednost | da | Mora biti true. Ocena zaračuna tako izbranega agenta kot simuliranega klicatelja ter morebitno telefonsko povezavo |
target_number | niz | ne | Preglasitev E.164 za oddaljeno stran; sicer se uporabi testna številka platforme |
mode je samo za branje in izhaja iz target_type: agent ustvari
mode="bot", medtem ko phone_number ustvari mode="sip".
Odgovor je objekt izvedbe simulacije
s status="queued". Poizvedujte, dokler status ne postane completed ali
failed; ko je nastavljen call_id, naložite prepis prek
GET /v1/calls/{call_id}/transcript.
Paketi: vzporedni scenariji
Hkrati zaženite N scenarijev — uporabno za regresijske zbirke, ki vzporedno preverjajo vsak znan robni primer:
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
}'Odgovor vsebuje seznam run_ids z ID-ji podrejenih izvedb. Pridobite stanje
paketa:
curl https://api.thunderphone.com/v1/simulations/batches/{batch_id} \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"run_count je omejen na 20; stagger_seconds časovno razporedi zagone,
da agenta ne preobremeni (0–60 s).
Vključite v CI
Na strani Simulacije
(/dashboard/simulations) ustvarite zbirko prehodnih preverjanj izdaje — izberite agenta, ročno dodajte scenarije ali
kliknite Ustvari scenarije z UI, da jih pripravite iz poziva agenta
(z izbirnim pregledom robnih primerov), nato pa jih združite v zbirko.
Zbirka pripne svoje scenarije in agenta ter določa najmanjši delež uspešnosti in
izbirno pravilo brez kritičnih neuspehov. Uspešni zagoni postanejo sprejeta
izhodiščna vrednost; poznejši prehodi iz uspeha v neuspeh so vrnjeni kot regresije.
V CI uporabite ključ API-ja organizacije.
Ta skript sproži zbirko, preverja stanje, dokler ocenjevanje in primerjava nista
končana, ter se zaključi z vrednostjo, ki ni nič, razen če je razsodba 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 vrne 202 z ID-jem
zagona. GET /v1/orgs/{org_id}/suites/{suite_id}/runs/{run_id} vrne
status, verdict, pass_rate, critical_failure_count in seznam
izhodiščnih regressions. Obe končni točki povežeta organizacijo v URL-ju
z organizacijo ključa API-ja.
Zaženite zbirko po urniku
Odprite zavihek Simuliraj agenta, izberite Zbirke prehodnih preverjanj izdaje in ustvarite ali uredite zbirko. Vklopite Zaženi po urniku, izberite Pogostost in Časovni pas, nato nastavite Minuta po uri, Lokalni čas ali Dan, kot je prikazano. Izberite Shrani zbirko. Če počistite možnost Zaženi po urniku, odstranite urnik na nadzorni plošči.
Prek API-ja
Z metodo PATCH posodobite zbirko, da dodate ali zamenjate njen urnik. Za celoten objekt zbirke in končne točke glejte Zbirke (prehodna preverjanja izdaje).
curl -X PATCH https://api.thunderphone.com/v1/suites/{suite_id} \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schedule": {
"enabled": true,
"frequency": "daily",
"timezone": "America/Chicago",
"hour": 6,
"minute": 30
}
}'frequency je lahko hourly, daily ali weekly. Uporabite časovni pas IANA.
Urniki na uro uporabljajo minute; dnevni urniki uporabljajo hour in minute;
tedenski urniki uporabljajo tudi weekday, kjer je ponedeljek 0 in nedelja 6.
Odgovor zbirke vključuje next_run_at in last_run_at.
Časi upoštevajo spremembe poletnega časa izbranega časovnega pasu. Načrtovani zagoni
so prikazani v zgodovini zagonov zbirke in uporabljajo njenega trenutnega agenta,
scenarije, kriterije in sprejeto izhodiščno vrednost. Vsak ustvarjeni testni klic
sproži test-call.completed; spletni kavelj za dokončanje na ravni zbirke ne obstaja.
Načrtovani klici se zaračunajo po enaki simulacijski tarifi kot ročni zagoni zbirke in
v zagon zbirke zapišejo trigger: "schedule".
Če želite začasno ustaviti urnik brez spreminjanja njegovega časa, z metodo PATCH posodobite
celoten obstoječi objekt urnika z "enabled": false. frequency je obvezen; izpuščeni
časovni pas in časovna polja se ponastavijo na privzete vrednosti, zato vključite obstoječe
vrednosti. Za odstranitev urnika pošljite "schedule": null.
Vzorci
Regresijska zbirka po pozivih
Vzdržujte datoteko JSON s tericami {name, scenario_prompt, expected_outcome}.
Ob vsaki spremembi poziva zaženite celoten nabor paketno; primerjajte prepise
in ocene s prejšnjim zagonom.
Hitri preizkus ob vsaki izdaji
En paket petih scenarijev uspešne poti, ki ga zaženete po vsaki
uvedbi. Občutljivo na zakasnitev, zato ohranite stagger_seconds: 0.
Primerjalno merjenje zakasnitve
Zaženite enake scenarije za različne ravni izdelka (spark,
bolt, storm-base). Primerjajte ocene call.graded in
duration_seconds iz vsakega nastalega dnevnika klica.
Naslednji koraki
Vsi parametri poizvedbe, kode stanja in oblike paketov.
Samodejno ocenite vsak testni zagon za spremljanje kakovosti skozi čas.
Označite določene teste za človeški pregled.
Pretakajte rezultate v svoj CI / Slack / PagerDuty.