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ą:

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:

LaukasTipasPrivalomasAprašas
target_typeeilutėtaipagent arba phone_number
target_idsveikasis skaičiustaipAgento ID (arba telefono numerio ID)
directioneilutėneoutbound (numatytoji reikšmė; testinis skambintojas skambina) arba inbound (testinis skambintojas atsiliepia)
scenario_prompteilutėneNurodo, ką sako testinis robotas
language / primary_languageeilutėneTestinio skambintojo kalba; nepalaikomi kodai atmetami
simulator_producteilutėnetesting (numatytoji reikšmė) arba spark, skirtas labiau į žmogų panašiam imituojamam skambintojui, pavyzdžiui, šiltojo perjungimo konsultacijos testams
consent_to_chargeloginė reikšmėtaipTuri būti true. Sąmata apmokestina ir pasirinktą agentą, ir imituojamą skambintoją, taip pat bet kurią telefonijos liniją
target_numbereilutėneE.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