ഒരു ഏജന്റിനെ അറ്റംമുതൽ അറ്റംവരെ പരിശോധിക്കുക (API)
ഒരു AI ഏജന്റിനെ മെച്ചപ്പെടുത്തുക എന്നത് അതിന്റെ prompt, ടൂളുകൾ, എഡ്ജ് കേസുകൾ കൈകാര്യം ചെയ്യുന്ന രീതി എന്നിവ മെച്ചപ്പെടുത്തുക എന്നതാണ്. simulations API നിങ്ങൾ നൽകുന്ന സിനാരിയോ prompt ഉപയോഗിച്ച് ഒരു ഏജന്റിനെതിരെ യഥാർഥ കോളുകൾ പ്രവർത്തിപ്പിക്കുന്നു. ഒരു ഏജന്റിനെ ടാർഗറ്റ് ചെയ്യുന്നത് ബോട്ട്-ടു-ബോട്ട് റൺ സൃഷ്ടിക്കുന്നു; ഒരു ഫോൺ നമ്പറിനെ ടാർഗറ്റ് ചെയ്യുന്നത് SIP ലൂപ്പ്ബാക്ക് റൺ സൃഷ്ടിക്കുന്നു. ഓരോ റണ്ണും ട്രാൻസ്ക്രിപ്റ്റ്, ഗ്രേഡിംഗ്, ബില്ലിംഗ് എന്നിവയുള്ള ഒരു യഥാർഥ കോൾ ലോഗ് സൃഷ്ടിക്കുന്നു; അതിനാൽ ഏജന്റ് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്നും അതിന് എത്ര ചെലവാകുന്നുവെന്നും നിങ്ങൾക്ക് കൃത്യമായി കാണാം.
ഇവയ്ക്കായി ഉപയോഗിക്കുക:
- ഓരോ prompt എഡിറ്റിനും ശേഷമുള്ള പ്രീ-ഡിപ്ലോയ് സ്മോക്ക് ടെസ്റ്റുകൾ
- CI-യുമായി ബന്ധിപ്പിച്ച റെഗ്രഷൻ സ്യൂട്ടുകൾ (
test-call.completedവെബ്ഹുക്ക് ബന്ധിപ്പിക്കുക → സ്കോർ കുറഞ്ഞാൽ ബിൽഡ് പരാജയപ്പെടുത്തുക) - കൺകറൻസി പരിധികളുടെ സ്ട്രെസ് പരിശോധന
ഒറ്റത്തവണ: ഒരൊറ്റ റൺ
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 | string | അതെ | agent അല്ലെങ്കിൽ phone_number |
target_id | integer | അതെ | ഏജന്റ് id (അല്ലെങ്കിൽ ഫോൺ നമ്പർ id) |
direction | string | ഇല്ല | outbound (സ്ഥിരസ്ഥിതി; ടെസ്റ്റ് കോളർ കോൾ ചെയ്യുന്നു) അല്ലെങ്കിൽ inbound (ടെസ്റ്റ് കോളർ ഉത്തരം നൽകുന്നു) |
scenario_prompt | string | ഇല്ല | ടെസ്റ്റ് ബോട്ട് എന്ത് പറയണമെന്ന് നിർണയിക്കുന്നു |
language / primary_language | string | ഇല്ല | ടെസ്റ്റ് കോളറുടെ ഭാഷ; പിന്തുണയില്ലാത്ത കോഡുകൾ നിരസിക്കപ്പെടും |
simulator_product | string | ഇല്ല | testing (സ്ഥിരസ്ഥിതി) അല്ലെങ്കിൽ വാം-ട്രാൻസ്ഫർ കൺസൾട്ട് ടെസ്റ്റുകൾ പോലുള്ള കൂടുതൽ മനുഷ്യസദൃശമായ സിമുലേറ്റഡ് കോളറിനായി spark |
consent_to_charge | boolean | അതെ | true ആയിരിക്കണം. എസ്റ്റിമേറ്റ് തിരഞ്ഞെടുത്ത ഏജന്റിനും സിമുലേറ്റഡ് കോളറിനും, കൂടാതെ ഏതെങ്കിലും ടെലിഫോണി ലെഗിനും ബിൽ ചെയ്യും |
target_number | string | ഇല്ല | റിമോട്ട് വശത്തിനുള്ള 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 s).
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 ഉം താരതമ്യം ചെയ്യുക.
അടുത്ത ഘട്ടങ്ങൾ
ഓരോ ക്വറി പാരാമീറ്ററും സ്റ്റാറ്റസ് കോഡും ബാച്ച് ഘടനയും.
കാലക്രമേണ ഗുണനിലവാരം ട്രാക്ക് ചെയ്യാൻ ഓരോ ടെസ്റ്റ് റണ്ണിനും ഓട്ടോ-സ്കോർ നൽകുക.
മനുഷ്യ അവലോകനത്തിനായി നിർദിഷ്ട ടെസ്റ്റുകൾ ഫ്ലാഗ് ചെയ്യുക.
ഫലങ്ങൾ നിങ്ങളുടെ CI / Slack / PagerDuty-യിലേക്ക് സ്ട്രീം ചെയ്യുക.