ਏਜੰਟ ਦੀ ਐਂਡ-ਟੂ-ਐਂਡ ਜਾਂਚ ਕਰੋ (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 key ਵਰਤੋ। ਇਹ ਸਕ੍ਰਿਪਟ ਸੂਟ ਨੂੰ ਟ੍ਰਿਗਰ ਕਰਦੀ ਹੈ, ਗ੍ਰੇਡਿੰਗ ਅਤੇ ਤੁਲਨਾ ਪੂਰੀ ਹੋਣ ਤੱਕ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰਦੀ ਹੈ, ਅਤੇ ਫੈਸਲਾ 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 key ਦੇ ਸੰਗਠਨ ਨਾਲ ਬੰਨ੍ਹਦੇ ਹਨ।

ਪੈਟਰਨ

ਹਰ-prompt ਲਈ ਰਿਗ੍ਰੈਸ਼ਨ ਕੋਰਪਸ

{name, scenario_prompt, expected_outcome} ਟਿਊਪਲਾਂ ਦੀ ਇੱਕ JSON ਫਾਈਲ ਸੰਭਾਲੋ। ਹਰ prompt ਤਬਦੀਲੀ ਉੱਤੇ, ਪੂਰੇ ਸੈੱਟ ਨੂੰ ਬੈਚ ਵਜੋਂ ਚਲਾਓ; ਟ੍ਰਾਂਸਕ੍ਰਿਪਟਾਂ ਅਤੇ ਗ੍ਰੇਡਾਂ ਦੀ ਪਿਛਲੀ ਰਨ ਨਾਲ ਤੁਲਨਾ ਕਰੋ।

ਹਰ ਰਿਲੀਜ਼ ਲਈ ਸਮੋਕ ਟੈਸਟ

ਪੰਜ ਹੈਪੀ-ਪਾਥ ਦ੍ਰਿਸ਼ਾਂ ਦਾ ਇੱਕੋ ਬੈਚ, ਜੋ ਤੁਸੀਂ ਹਰ ਡਿਪਲੌਇ ਤੋਂ ਬਾਅਦ ਚਲਾਉਂਦੇ ਹੋ। ਲੇਟੈਂਸੀ-ਸੰਵੇਦਨਸ਼ੀਲ ਹੈ, ਇਸ ਲਈ stagger_seconds: 0 ਰੱਖੋ।

ਲੇਟੈਂਸੀ ਬੈਂਚਮਾਰਕਿੰਗ

ਵੱਖ-ਵੱਖ ਉਤਪਾਦ ਟੀਅਰਾਂ (spark, bolt, storm-base) ਦੇ ਵਿਰੁੱਧ ਇੱਕੋ ਜਿਹੇ ਦ੍ਰਿਸ਼ ਚਲਾਓ। ਹਰ ਨਤੀਜਾ ਕਾਲ ਲੌਗ ਤੋਂ call.graded ਸਕੋਰਾਂ ਅਤੇ duration_seconds ਦੀ ਤੁਲਨਾ ਕਰੋ।


ਅਗਲੇ ਕਦਮ