ایجنٹ کی ابتدا سے انتہا تک جانچ کریں (API)
AI ایجنٹ کو بہتر بنانے کا مطلب اس کے prompt، اس کے ٹولز، اور edge cases کو سنبھالنے کے طریقے کو بہتر بنانا ہے۔ simulations API آپ کے فراہم کردہ منظرنامہ prompt کے ذریعے ایجنٹ کے خلاف حقیقی کالز چلاتا ہے۔ کسی ایجنٹ کو ہدف بنانے سے bot-to-bot رن بنتا ہے؛ فون نمبر کو ہدف بنانے سے SIP loopback رن بنتا ہے۔ ہر رن transcript، grading، اور billing کے ساتھ حقیقی کال لاگ بناتا ہے، تاکہ آپ بالکل دیکھ سکیں کہ ایجنٹ کیسے برتاؤ کرتا ہے اور اس کی قیمت کیا ہے۔
اسے ان کاموں کے لیے استعمال کریں:
- ہر prompt ترمیم کے بعد deploy سے پہلے smoke tests
- CI سے منسلک regression suites (
test-call.completedwebhook جوڑیں → score کم ہونے پر build ناکام کریں) - concurrency limits کا stress testing
ایک بار: واحد رن
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 | نہیں | یہ طے کرتا ہے کہ ٹیسٹ bot کیا کہے گا |
language / primary_language | string | نہیں | ٹیسٹ کالر کی زبان؛ غیر معاون codes مسترد کر دیے جاتے ہیں |
simulator_product | string | نہیں | testing (ڈیفالٹ) یا زیادہ انسانی انداز کے simulated caller کے لیے spark، جیسے warm-transfer consult tests |
consent_to_charge | boolean | ہاں | لازماً true ہونا چاہیے۔ تخمینہ منتخب ایجنٹ اور simulated caller، نیز کسی بھی telephony leg، دونوں کے لیے چارج کرتا ہے |
target_number | string | نہیں | ریموٹ سائیڈ کے لیے E.164 override؛ ورنہ پلیٹ فارم کا ٹیسٹ نمبر استعمال ہوتا ہے |
mode صرف پڑھنے کے لیے ہے اور target_type سے اخذ کیا جاتا ہے: agent سے
mode="bot" بنتا ہے، جبکہ phone_number سے mode="sip" بنتا ہے۔
جواب میں simulation run object
status="queued" کے ساتھ ہوتا ہے۔ اس وقت تک poll کریں جب تک status، completed یا
failed نہ ہو جائے؛ call_id سیٹ ہونے کے بعد transcript کو
GET /v1/calls/{call_id}/transcript کے ذریعے لوڈ کریں۔
بیچز: متوازی منظرنامے
N منظرنامے بیک وقت چلائیں — regression suites کے لیے مفید ہے جو ہر معلوم edge case کو متوازی طور پر آزماتے ہیں:
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
}'
جواب میں child run ids کی run_ids فہرست ہوتی ہے۔ بیچ
status حاصل کریں:
curl https://api.thunderphone.com/v1/simulations/batches/{batch_id} \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"
run_count کی حد 20 ہے؛ stagger_seconds ایجنٹ پر ضرورت سے زیادہ بوجھ ڈالنے سے بچنے کے لیے
spawn کے درمیان وقفہ رکھتا ہے (0 سے 60 سیکنڈ)۔
اسے CI کے ساتھ مربوط کریں
سیمیولیشنز صفحے
(/dashboard/simulations) پر ایک ریلیز گیٹ سوئٹ بنائیں — ایجنٹ منتخب کریں، منظرنامے دستی طور پر شامل کریں یا ایجنٹ کے
prompt سے ان کا مسودہ تیار کرنے کے لیے AI کے ساتھ منظرنامے بنائیں پر کلک کریں
(اختیاری edge-case پاس کے ساتھ)، اور انہیں ایک سوئٹ میں گروپ کریں۔
سوئٹ اپنے منظرناموں اور ایجنٹ کے ساتھ کم از کم پاس شرح اور اختیاری صفر اہم ناکامیوں کا اصول بھی مقرر کرتا ہے۔ کامیاب رنز قابلِ قبول baseline بن جاتے ہیں؛ بعد میں پاس سے ناکام ہونے والی تبدیلیاں regressions کے طور پر واپس کی جاتی ہیں۔
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، اور baseline
regressions فہرست واپس کرتا ہے۔ دونوں endpoints URL کی تنظیم کو API کلید کی تنظیم سے منسلک کرتے ہیں۔
پیٹرنز
ہر prompt کے لیے regression corpus
{name, scenario_prompt, expected_outcome} tuples کی ایک JSON فائل برقرار رکھیں۔
ہر prompt تبدیلی پر مکمل سیٹ کو بیچ کے طور پر چلائیں؛ transcripts اور grades کا
پچھلے رن سے فرق دیکھیں۔
ہر ریلیز کے لیے smoke test
پانچ کامیاب-راستے والے منظرناموں کا ایک بیچ، جسے آپ ہر تعیناتی کے بعد چلاتے ہیں۔
یہ latency کے لحاظ سے حساس ہے، اس لیے stagger_seconds: 0 رکھیں۔
Latency benchmarking
یکساں منظرنامے مختلف پروڈکٹ درجات (spark،
bolt، storm-base) کے خلاف چلائیں۔ call.graded اسکورز اور
ہر نتیجے میں آنے والے کال لاگ سے duration_seconds کا موازنہ کریں۔