ThunderPhone 2.0 je tu.Začnite sami, že od 2 ¢/min.Preberite obvestilo

Developer cookbook

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:

PoljeVrstaObveznoOpis
target_typenizdaagent ali phone_number
target_idcelo številodaID agenta (ali ID telefonske številke)
directionnizneoutbound (privzeto; testni klicatelj kliče) ali inbound (testni klicatelj odgovori)
scenario_promptnizneDoloča, kaj pove testni bot
language / primary_languagenizneJezik testnega klicatelja; nepodprte kode so zavrnjene
simulator_productniznetesting (privzeto) ali spark za bolj človeškemu podoben simulirani klicatelj, na primer za preizkuse posvetovanja pri toplem preusmerjanju
consent_to_chargelogična vrednostdaMora biti true. Ocena zaračuna tako izbranega agenta kot simuliranega klicatelja ter morebitno telefonsko povezavo
target_numberniznePreglasitev 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 1

POST /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