Open in
Bir ajanı uçtan uca test edin (API)
Ajan gerilemelerini müşteriler duymadan önce yakalamak için ThunderPhone API üzerinden tek seferlik simülasyonlar, paralel senaryo toplu işlemleri ve sürüm geçişi test paketleri çalıştırın.
Bir yapay zeka ajanını yinelemek, istemini, araçlarını ve uç durumları ele alma biçimini yinelemek anlamına gelir. simülasyonlar API'si, sağladığınız bir senaryo istemiyle bir ajana karşı gerçek aramalar gerçekleştirir. Bir ajanı hedeflemek botlar arası bir çalıştırma oluşturur; bir telefon numarasını hedeflemek ise bir SIP geri döngü çalıştırması oluşturur. Her çalıştırma, döküm, puanlama ve ücretlendirme içeren gerçek bir arama günlüğü üretir; böylece ajanın tam olarak nasıl davrandığını ve maliyetini görürsünüz.
Şunlar için kullanın:
- Her istem düzenlemesinden sonra yayına alma öncesi hızlı doğrulama testleri
- CI'a bağlanan regresyon paketleri (
test-call.completedwebhook'unu bağlayın → puan düşerse derlemeyi başarısız yapın) - Eşzamanlılık sınırlarını stres testine tabi tutma
Tek seferlik: tek çalıştırma
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
}'Alanlar:
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
target_type | dize | evet | agent veya phone_number |
target_id | tam sayı | evet | Ajan kimliği (veya telefon numarası kimliği) |
direction | dize | hayır | outbound (varsayılan; test arayanı aramayı başlatır) veya inbound (test arayanı aramayı yanıtlar) |
scenario_prompt | dize | hayır | Test botunun ne söyleyeceğini belirler |
language / primary_language | dize | hayır | Test arayanının dili; desteklenmeyen kodlar reddedilir |
simulator_product | dize | hayır | testing (varsayılan) veya sıcak aktarma danışma testleri gibi daha insan benzeri simüle edilmiş bir arayan için spark |
consent_to_charge | boolean | evet | true olmalıdır. Tahmin, seçilen ajanı ve simüle edilmiş arayanı sabit dakika başı ücret üzerinden, ayrıca varsa telefon bağlantısı ücretiyle birlikte faturalandırır |
target_number | dize | hayır | Uzak taraf için E.164 geçersiz kılma değeri; aksi takdirde platform test numarası kullanılır |
mode salt okunurdur ve target_type değerinden türetilir: agent,
mode="bot" üretirken phone_number, mode="sip" üretir.
Yanıt, status="queued" durumunda bir simülasyon çalıştırma nesnesidir.
status, completed veya
failed olana kadar yoklayın; call_id ayarlandıktan sonra dökümü
GET /v1/calls/{call_id}/transcript üzerinden yükleyin.
Toplu çalıştırmalar: paralel senaryolar
N senaryoyu eşzamanlı çalıştırın — bilinen her uç duruma paralel olarak ulaşan regresyon paketleri için kullanışlıdır:
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
}'Yanıt, alt çalıştırma kimliklerinden oluşan bir run_ids listesi içerir. Toplu çalıştırma
durumunu alın:
curl https://api.thunderphone.com/v1/simulations/batches/{batch_id} \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"run_count en fazla 20 olabilir; stagger_seconds, ajanı aşırı yüklememek için
başlatmaları aralıklı yapar (0–60 sn).
Bunu CI'a bağlayın
Simülasyonlar sayfasında (/dashboard/simulations) bir yayın geçidi paketi
oluşturun — yapay zeka ajanını seçin, senaryoları elle ekleyin veya ajanın
isteminden taslak oluşturmaları için Yapay Zeka ile senaryo oluştur seçeneğine
tıklayın (isteğe bağlı bir uç durum kontrolüyle) ve bunları bir pakette
gruplandırın. Bir paket, senaryolarını ve yapay zeka ajanını; ayrıca minimum
başarı oranını ve isteğe bağlı sıfır kritik hata kuralını sabitler. Başarılı
çalıştırmalar kabul edilen temel çizgi olur; daha sonraki başarılı→başarısız
geçişler regresyon olarak döndürülür.
CI'da bir kuruluş API anahtarı kullanın.
Bu betik paketi tetikler, notlandırma ve karşılaştırma tamamlanana kadar sorgular
ve karar pass olmadıkça sıfır olmayan bir kodla çıkar:
#!/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 1POST /v1/orgs/{org_id}/suites/{suite_id}/run, çalıştırma kimliğiyle birlikte
202 döndürür. GET /v1/orgs/{org_id}/suites/{suite_id}/runs/{run_id},
status, verdict, pass_rate, critical_failure_count ve temel çizgi
regressions listesini döndürür. Her iki uç nokta da URL'deki kuruluşu API
anahtarının kuruluşuna bağlar.
Bir paketi zamanlamaya göre çalıştırın
Ajanın Simüle Et sekmesini açın, Yayın geçidi paketleri seçeneğini belirleyin ve bir paket oluşturun veya düzenleyin. Zamanlamaya göre çalıştır seçeneğini açın, Sıklık ve Saat dilimi seçin; ardından gösterildiği şekilde Saatten sonraki dakika, Yerel saat veya Gün ayarlayın. Paketi kaydet seçeneğini belirleyin. Zamanlamaya göre çalıştır seçeneğinin işaretini kaldırmak, pano zamanlamasını kaldırır.
API ile
Zamanlamasını eklemek veya değiştirmek için pakete PATCH isteği gönderin. Paket nesnesinin ve uç noktaların tamamı için Paketler (yayın geçitleri) bölümüne bakın.
curl -X PATCH https://api.thunderphone.com/v1/suites/{suite_id} \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schedule": {
"enabled": true,
"frequency": "daily",
"timezone": "America/Chicago",
"hour": 6,
"minute": 30
}
}'frequency, hourly, daily veya weekly olabilir. IANA saat dilimi
kullanın. Saatlik zamanlamalarda minute; günlük zamanlamalarda hour ve
minute; haftalık zamanlamalarda ise ayrıca pazartesinin 0, pazarın 6
olduğu weekday kullanılır. Paket yanıtı next_run_at ve last_run_at
alanlarını içerir.
Saatler, seçilen saat diliminin yaz saati uygulaması değişikliklerine göre
belirlenir. Zamanlanmış çalıştırmalar paketin çalıştırma geçmişinde görünür ve
paketin mevcut yapay zeka ajanını, senaryolarını, ölçütlerini ve kabul edilen
temel çizgisini kullanır. Oluşturulan her test çağrısı test-call.completed
olayını yayımlar; paket düzeyinde tamamlanma webhook'u yoktur. Zamanlanmış
çağrılar, manuel paket çalıştırmalarıyla aynı simülasyon ücreti üzerinden
faturalandırılır ve paket çalıştırmasında trigger: "schedule" kaydedilir.
Zamanlamayı zamanlamasını değiştirmeden duraklatmak için, mevcut zamanlama
nesnesinin tamamına "enabled": false ile PATCH isteği gönderin. frequency
zorunludur; belirtilmeyen saat dilimi ve saat alanları varsayılan değerlerine
sıfırlanır, bu nedenle mevcut değerleri ekleyin. Zamanlamayı kaldırmak için
"schedule": null gönderin.
Kalıplar
İstem başına regresyon veri kümesi
{name, scenario_prompt, expected_outcome} demetlerinden oluşan bir JSON dosyası tutun.
Her istem değişikliğinde, tüm kümeyi toplu olarak çalıştırın; transkriptleri ve
değerlendirme puanlarını önceki çalıştırmayla karşılaştırın.
Sürüm başına hızlı test
Her yayına alma işleminden sonra çalıştırdığınız, başarılı akıştaki beş senaryodan oluşan
tek bir toplu işlem. Gecikmeye duyarlı olduğundan stagger_seconds: 0 değerini koruyun.
Gecikme kıyaslaması
Aynı senaryoları farklı ürün katmanlarında (spark,
bolt, storm-base) çalıştırın. call.graded puanlarını ve
oluşan her çağrı günlüğündeki duration_seconds değerini karşılaştırın.
Sonraki adımlar
Her sorgu parametresi, durum kodu ve toplu işlem biçimi.
Zaman içinde kaliteyi takip etmek için her test çalıştırmasını otomatik olarak puanlayın.
Belirli testleri insan incelemesi için işaretleyin.
Sonuçları CI / Slack / PagerDuty sisteminize aktarın.