ఏజెంట్‌ను ఎండ్-టు-ఎండ్‌గా పరీక్షించండి (API)

AI ఏజెంట్‌పై పునరావృత మెరుగుదల అంటే దాని prompt, దాని టూల్స్, మరియు ఎడ్జ్ కేస్‌లను నిర్వహించే విధానంపై పునరావృత మెరుగుదల చేయడం. మీరు అందించే దృశ్య prompt ఉపయోగించి సిమ్యులేషన్ల API ఏజెంట్‌పై నిజమైన కాల్‌లను నిర్వహిస్తుంది. ఏజెంట్‌ను లక్ష్యంగా చేస్తే బాట్-టు-బాట్ రన్ సృష్టించబడుతుంది; ఫోన్ నంబర్‌ను లక్ష్యంగా చేస్తే 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 రన్ idతో 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ను పోల్చండి.


తదుపరి దశలు