ಏಜೆಂಟ್ ಅನ್ನು ಎಂಡ್-ಟು-ಎಂಡ್ ಪರೀಕ್ಷಿಸಿ (API)
AI ಏಜೆಂಟ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸುವುದು ಎಂದರೆ ಅದರ prompt, ಅದರ ಉಪಕರಣಗಳು, ಮತ್ತು ಅದು ಅಂಚಿನ ಪ್ರಕರಣಗಳನ್ನು ನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಪುನರಾವರ್ತಿಸುವುದಾಗಿದೆ. ಸಿಮ್ಯುಲೇಷನ್ಗಳ 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 | ಹೌದು | ಏಜೆಂಟ್ ಐಡಿ (ಅಥವಾ ಫೋನ್ ಸಂಖ್ಯೆ ಐಡಿ) |
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
}'
ಪ್ರತಿಕ್ರಿಯೆಯು ಉಪ-ರನ್ ಐಡಿಗಳ 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 ಅನ್ನು ಹೋಲಿಸಿ.
ಮುಂದಿನ ಹಂತಗಳು
ಪ್ರತಿಯೊಂದು ಕ್ವೆರಿ ಪ್ಯಾರಾಮೀಟರ್, ಸ್ಥಿತಿ ಕೋಡ್ ಮತ್ತು ಬ್ಯಾಚ್ ವಿನ್ಯಾಸ.
ಕಾಲಕ್ರಮೇಣ ಗುಣಮಟ್ಟವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಪ್ರತಿಯೊಂದು ಪರೀಕ್ಷಾ ರನ್ಗೆ ಸ್ವಯಂ-ಸ್ಕೋರ್ ನೀಡಿ.
ಮಾನವ ಪರಿಶೀಲನೆಗಾಗಿ ನಿರ್ದಿಷ್ಟ ಪರೀಕ್ಷೆಗಳನ್ನು ಗುರುತಿಸಿ.
ಫಲಿತಾಂಶಗಳನ್ನು ನಿಮ್ಮ CI / Slack / PagerDuty ಗೆ ಸ್ಟ್ರೀಮ್ ಮಾಡಿ.