Ištestuokite agentą nuo pradžios iki pabaigos (API)
Tobulinant DI agentą, tobulinamas jo raginimas, įrankiai ir būdas, kuriuo jis apdoroja kraštinius atvejus. simulations API vykdo tikrus skambučius agentui, naudodama jūsų pateiktą scenarijaus raginimą. Nustačius agentą kaip tikslą, vykdomas roboto su robotu testas; nustačius telefono numerį kaip tikslą, vykdomas SIP grįžtamojo ryšio testas. Kiekvieno vykdymo metu sukuriamas tikras skambučių žurnalas su transkriptu, vertinimu ir apmokestinimu, todėl tiksliai matote, kaip agentas veikia ir kiek tai kainuoja.
Naudokite šią funkciją:
- Greitiesiems testams prieš diegimą po kiekvieno raginimo redagavimo
- Regresijos rinkiniams, integruotiems į CI (prijunkite
test-call.completedwebhook → nesėkmingai užbaikite surinkimą, jei įvertis sumažėja) - Lygiagretumo ribų apkrovos testavimui
Vienkartinis vykdymas: vienas paleidimas
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
}'
Laukai:
| Laukas | Tipas | Privalomas | Aprašas |
|---|---|---|---|
target_type | eilutė | taip | agent arba phone_number |
target_id | sveikasis skaičius | taip | Agento ID (arba telefono numerio ID) |
direction | eilutė | ne | outbound (numatytoji reikšmė; testinis skambintojas skambina) arba inbound (testinis skambintojas atsiliepia) |
scenario_prompt | eilutė | ne | Nurodo, ką sako testinis robotas |
language / primary_language | eilutė | ne | Testinio skambintojo kalba; nepalaikomi kodai atmetami |
simulator_product | eilutė | ne | testing (numatytoji reikšmė) arba spark, skirtas labiau į žmogų panašiam imituojamam skambintojui, pavyzdžiui, šiltojo perjungimo konsultacijos testams |
consent_to_charge | loginė reikšmė | taip | Turi būti true. Sąmata apmokestina ir pasirinktą agentą, ir imituojamą skambintoją, taip pat bet kurią telefonijos liniją |
target_number | eilutė | ne | E.164 nuotolinės pusės pakeitimas; kitu atveju naudojamas platformos testinis numeris |
mode yra tik skaitomas ir nustatomas pagal target_type: agent sukuria
mode="bot", o phone_number sukuria mode="sip".
Atsakymas yra simuliacijos vykdymo objektas,
kurio status="queued". Tikrinkite, kol status tampa completed arba
failed; nustačius call_id, įkelkite transkriptą per
GET /v1/calls/{call_id}/transcript.
Paketai: lygiagretūs scenarijai
Vienu metu vykdykite N scenarijų — tai naudinga regresijos rinkiniams, kurie lygiagrečiai apima kiekvieną žinomą kraštinį atvejį:
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
}'
Atsakyme pateikiamas antrinių vykdymų ID sąrašas run_ids. Gaukite paketo
būseną:
curl https://api.thunderphone.com/v1/simulations/batches/{batch_id} \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"
run_count ribojamas iki 20; stagger_seconds paskirsto paleidimus laike,
kad agentas nebūtų pernelyg apkrautas (0–60 s).
Integruokite į CI
Puslapyje Simuliacijos
(/dashboard/simulations) sukurkite leidimo vartų testų rinkinį – pasirinkite agentą, pridėkite scenarijus rankiniu būdu arba
spustelėkite Generuoti scenarijus su DI, kad parengtumėte juos pagal agento
užklausą (pasirinktinai papildomai tikrinant kraštutinius atvejus), ir sugrupuokite juos į rinkinį.
Rinkinys fiksuoja jo scenarijus ir agentą, taip pat minimalų išlaikymo rodiklį ir
pasirinktinę taisyklę, neleidžiančią kritinių nesėkmių. Išlaikyti vykdymai tampa priimtu
etaloniniu rezultatu; vėlesni perėjimai iš išlaikyta į neišlaikyta grąžinami kaip regresijos.
CI naudokite organizacijos API raktą.
Šis scenarijus paleidžia rinkinį, tikrina būseną, kol baigiamas vertinimas ir palyginimas,
ir grąžina ne nulinį kodą, nebent verdiktas yra 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 1
POST /v1/orgs/{org_id}/suites/{suite_id}/run grąžina 202 su
vykdymo ID. GET /v1/orgs/{org_id}/suites/{suite_id}/runs/{run_id} grąžina
status, verdict, pass_rate, critical_failure_count ir
etaloninį regressions sąrašą. Abu galiniai taškai susieja URL organizaciją
su API rakto organizacija.
Modeliai
Regresijų rinkinys kiekvienai užklausai
Palaikykite JSON failą su {name, scenario_prompt, expected_outcome}
trejetais. Po kiekvieno užklausos pakeitimo paleiskite visą rinkinį paketiniu būdu; palyginkite
transkriptus ir įvertinimus su ankstesniu vykdymu.
Dūmų testas kiekvienam leidimui
Vienas paketas iš penkių sėkmingos eigos scenarijų, kurį paleidžiate po kiekvieno
diegimo. Delsa yra svarbi, todėl palikite stagger_seconds: 0.
Delsos našumo vertinimas
Paleiskite identiškus scenarijus su skirtingomis produkto pakopomis (spark,
bolt, storm-base). Palyginkite call.graded balus ir
duration_seconds iš kiekvieno gauto skambučio žurnalo.
Tolesni veiksmai
Visi užklausos parametrai, būsenos kodai ir paketų struktūros.
Automatiškai įvertinkite kiekvieną testų vykdymą, kad stebėtumėte kokybę laikui bėgant.
Pažymėkite konkrečius testus peržiūrėti žmonėms.
Siųskite rezultatus į savo CI / Slack / PagerDuty.