Μια δοκιμή παίζει μία κλήση σε κείμενο: ένας προσομοιωμένος καλών υποδύεται το scenario, ο agent απαντά από το πρόχειρό του (οδηγίες, πρώτο μήνυμα και γνώση) και ένας κριτής ελέγχει τη συνομιλία με βάση το success_criteria. Γράψτε δοκιμές για τις κλήσεις που μετράνε, εκτελέστε τις μετά από κάθε αλλαγή και δημοσιεύστε όταν περνούν.
curl https://evasay.com/api/v1/voice/agents/AGENT_ID/tests \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"name": "Move a booking",
"scenario": "A regular customer wants to move Friday 3 pm to Saturday morning.",
"success_criteria": "Offers Saturday times and confirms the new time and the customer'"'"'s name.",
"max_turns": 8
}'
Το POST /agents/{id}/test-runs εκτελεί όλες τις δοκιμές του agent, ή όσες είναι στο test_ids, και απαντά με μία εκτέλεση ανά δοκιμή (status: "running"). Ρωτάτε το GET /test-runs/{id} μέχρι το status να γίνει passed, failed ή error· τότε η εκτέλεση έχει το transcript και το reason του κριτή (στα αγγλικά, ή στα κινεζικά με reason_language: "zh"). Κάθε εκτέλεση κοστίζει Credits, που εμφανίζονται μαζί με τις δοκιμές στον πίνακα ελέγχου· οι εκτελέσεις σταματούν στην πρώτη που δεν καλύπτει το υπόλοιπο, και το not_started παραθέτει τις υπόλοιπες. Μια εκτέλεση που δεν ολοκληρώνεται επιστρέφεται. Οι δοκιμές ελέγχουν τι λέει ο agent, όχι τη φωνή ή τον χρονισμό του, και δεν καλούν τις συναρτήσεις του: δοκιμάστε τις πρώτα με POST /tools/{id}/test. Ένας agent έχει έως 30 δοκιμές· τα PATCH και DELETE /agents/{id}/tests/{test_id} αλλάζουν ή αφαιρούν μία.
Εκτός από ολόκληρες κλήσεις (type: "simulation", προεπιλογή), μια δοκιμή μπορεί να ελέγξει μία μόνο απάντηση. Το type: "next_reply" παίρνει chat_history, τη συνομιλία πριν από αυτήν που τελειώνει με τον καλούντα ([{role, text}], με role ίσο με caller ή agent), και success_criteria για την επόμενη απάντηση του agent. Το type: "tool_call" παίρνει chat_history και expected_tool {name, arguments, match}: ο agent πρέπει να καλέσει το name (μία από τις συναρτήσεις του ή end_call, transfer_call, handoff_to_agent) με arguments, που συγκρίνονται ακριβώς (κείμενο χωρίς κενά στα άκρα, χωρίς διάκριση πεζών-κεφαλαίων) ή, με match: "judge", κατά νόημα· τα υπόλοιπα ορίσματα αγνοούνται. Το transcript μιας εκτέλεσης δείχνει στο tool_calls τις συναρτήσεις που κάλεσε ο agent.
Το POST /agents/{id}/tests/generate προτείνει δοκιμές από το πρόχειρο του agent: οδηγίες, γνώση και συναρτήσεις. Παίρνει count (1–10, προεπιλογή 5), types, focus (τι να καλύπτουν) και language (en ή zh, για ονόματα και κριτήρια), κοστίζει Credits όσο μία εκτέλεση και επιστρέφει πρόχειρα για έλεγχο και αποστολή στο POST /agents/{id}/tests· με save: true τα αποθηκεύει.