એજન્ટનું શરૂઆતથી અંત સુધી પરીક્ષણ કરો (API)

AI એજન્ટ પર પુનરાવર્તન કરવાનો અર્થ તેના prompt, તેના ટૂલ્સ, અને તે એજ કેસને કેવી રીતે હેન્ડલ કરે છે તેના પર પુનરાવર્તન કરવું. સિમ્યુલેશન્સ API તમે આપેલા દૃશ્ય promptનો ઉપયોગ કરીને એજન્ટ સામે વાસ્તવિક કૉલ ચલાવે છે. એજન્ટને લક્ષ્ય બનાવવાથી બોટ-થી-બોટ રન બને છે; ફોન નંબરને લક્ષ્ય બનાવવાથી SIP લૂપબૅક રન બને છે. દરેક રન ટ્રાન્સક્રિપ્ટ, ગ્રેડિંગ અને બિલિંગ સાથેનો વાસ્તવિક કૉલ લૉગ બનાવે છે, જેથી એજન્ટ કેવી રીતે વર્તે છે અને તેની કિંમત કેટલી છે તે તમે ચોક્કસ જોઈ શકો છો.

તેનો ઉપયોગ આ માટે કરો:

એક-વખત: એકલ રન

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
  }'

ફીલ્ડ્સ:

ફીલ્ડપ્રકારજરૂરીવર્ણન
target_typeસ્ટ્રિંગહાagent અથવા phone_number
target_idઇન્ટિજરહાએજન્ટ ID (અથવા ફોન નંબર ID)
directionસ્ટ્રિંગનાoutbound (ડિફૉલ્ટ; પરીક્ષણ કોલર કૉલ કરે છે) અથવા inbound (પરીક્ષણ કોલર જવાબ આપે છે)
scenario_promptસ્ટ્રિંગનાપરીક્ષણ બોટ શું કહે છે તે નિર્ધારિત કરે છે
language / primary_languageસ્ટ્રિંગનાપરીક્ષણ કોલરની ભાષા; અસપોર્ટેડ કોડ નકારવામાં આવે છે
simulator_productસ્ટ્રિંગનાવધુ માનવસમાન સિમ્યુલેટેડ કોલર માટે testing (ડિફૉલ્ટ) અથવા spark, જેમ કે વૉર્મ-ટ્રાન્સફર કન્સલ્ટ ટેસ્ટ
consent_to_chargeબૂલિયનહાtrue હોવું આવશ્યક છે. અંદાજ પસંદ કરેલા એજન્ટ અને સિમ્યુલેટેડ કોલર બંને માટે તેમજ કોઈપણ ટેલિફોની લેગ માટે બિલ કરે છે
target_numberસ્ટ્રિંગનારિમોટ બાજુ માટે E.164 ઓવરરાઇડ; અન્યથા પ્લેટફોર્મ પરીક્ષણ નંબર વપરાય છે

mode ફક્ત-વાંચવા માટે છે અને target_type પરથી મેળવવામાં આવે છે: agent mode="bot" બનાવે છે, જ્યારે phone_number mode="sip" બનાવે છે.

પ્રતિસાદમાં સિમ્યુલેશન રન ઑબ્જેક્ટ હોય છે જેમાં status="queued" હોય છે. status completed અથવા failed બને ત્યાં સુધી પોલ કરો; call_id સેટ થયા પછી, GET /v1/calls/{call_id}/transcript દ્વારા ટ્રાન્સક્રિપ્ટ લોડ કરો.

બૅચેસ: સમાંતર દૃશ્યો

N દૃશ્યો એકસાથે ચલાવો — સમાંતરમાં દરેક જાણીતા એજ કેસને હિટ કરતા રિગ્રેશન સ્યુટ્સ માટે ઉપયોગી:

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
  }'

પ્રતિસાદમાં ચાઇલ્ડ રન IDની run_ids સૂચિ હોય છે. બૅચ સ્ટેટસ મેળવો:

curl https://api.thunderphone.com/v1/simulations/batches/{batch_id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

run_countની મહત્તમ મર્યાદા 20 છે; એજન્ટ પર વધુ ભાર ન પડે તે માટે stagger_seconds સ્પૉનને અંતર આપે છે (0–60 સેકન્ડ).

તેને CI સાથે જોડો

સિમ્યુલેશન્સ પેજ (/dashboard/simulations) પર રિલીઝ ગેટ સ્યુટ બનાવો — એજન્ટ પસંદ કરો, હાથેથી સિનારિયો ઉમેરો અથવા એજન્ટના prompt પરથી તેનો ડ્રાફ્ટ બનાવવા માટે AI સાથે સિનારિયો જનરેટ કરો ક્લિક કરો (વૈકલ્પિક એજ-કેસ પાસ સાથે), અને તેમને સ્યુટમાં જૂથબદ્ધ કરો. સ્યુટ તેના સિનારિયો અને એજન્ટને સ્થિર રાખે છે, સાથે ન્યૂનતમ પાસ દર અને વૈકલ્પિક શૂન્ય-ક્રિટિકલ-ફેલ્યોર નિયમ પણ રાખે છે. પાસ થતા રન સ્વીકૃત બેઝલાઇન બને છે; પછીના પાસ→ફેલ પરિવર્તનો રિગ્રેશન તરીકે પરત મળે છે.

CI માં સંસ્થાની API કી નો ઉપયોગ કરો. આ સ્ક્રિપ્ટ સ્યુટ ટ્રિગર કરે છે, ગ્રેડિંગ અને સરખામણી પૂર્ણ થાય ત્યાં સુધી પોલ કરે છે, અને નિર્ણય 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 રન આઈડી સાથે 202 પરત કરે છે. GET /v1/orgs/{org_id}/suites/{suite_id}/runs/{run_id} status, verdict, pass_rate, critical_failure_count, અને બેઝલાઇન regressions સૂચિ પરત કરે છે. બંને એન્ડપોઇન્ટ URL માંની સંસ્થાને API કીની સંસ્થા સાથે બાંધે છે.

પેટર્ન

પ્રતિ-prompt રિગ્રેશન કોર્પસ

{name, scenario_prompt, expected_outcome} ટપલ ધરાવતી JSON ફાઇલ જાળવો. દરેક prompt ફેરફાર પર, સંપૂર્ણ સેટને બેચ તરીકે ચલાવો; ટ્રાન્સક્રિપ્ટ અને ગ્રેડને અગાઉના રન સામે સરખાવો.

પ્રતિ-રિલીઝ સ્મોક ટેસ્ટ

પાંચ હેપી-પાથ સિનારિયોનો એક બેચ, જે તમે દરેક ડિપ્લોય પછી ચલાવો. લેટન્સી-સંવેદનશીલ હોવાથી, stagger_seconds: 0 રાખો.

લેટન્સી બેન્ચમાર્કિંગ

સમાન સિનારિયો અલગ પ્રોડક્ટ ટિયર (spark, bolt, storm-base) સામે ચલાવો. દરેક પરિણામી કૉલ લૉગમાંથી call.graded સ્કોર અને duration_seconds સરખાવો.


આગળના પગલાં