Тест розігрує один дзвінок у вигляді тексту: імітований абонент грає scenario, агент відповідає за своєю чернеткою (інструкції, перше повідомлення та знання), а оцінювач перевіряє розмову за 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 запускає всі тести агента або ті, що в test_ids, і відповідає одним прогоном на тест (status: "running"). Опитуйте GET /test-runs/{id}, доки status не стане passed, failed або error; тоді прогон містить transcript і reason оцінювача (англійською або китайською з reason_language: "zh"). Кожен прогон коштує Credits — сума показана біля тестів у панелі; прогони зупиняються на першому, який не покриває баланс, а not_started перелічує решту. Прогон, який не вдалося провести, повертається. Тести перевіряють, що каже агент, а не голос чи темп, і не викликають його функцій: їх перевірте заздалегідь через POST /tools/{id}/test. Агент має до 30 тестів; PATCH і DELETE /agents/{id}/tests/{test_id} змінюють або видаляють тест.
Окрім цілих дзвінків (type: "simulation", типово), тест може перевіряти одну відповідь. type: "next_reply" приймає chat_history — попередню розмову, що закінчується словами абонента ([{role, text}], де role — caller або agent), і success_criteria для наступної відповіді агента. type: "tool_call" приймає chat_history і expected_tool {name, arguments, match}: агент має викликати name (одну зі своїх функцій або end_call, transfer_call, handoff_to_agent) з arguments, що порівнюються точно (без пробілів по краях і без урахування регістру) або, з match: "judge", за змістом; інші передані аргументи не перевіряються. transcript прогону показує в tool_calls функції, які викликав агент.
POST /agents/{id}/tests/generate пропонує тести за чернеткою агента: його інструкціями, знаннями та функціями. Приймає count (1–10, типово 5), types, focus (що охопити) і language (en або zh, для назв і критеріїв), коштує Credits як один прогін і повертає чернетки, які треба переглянути й надіслати в POST /agents/{id}/tests; з save: true вони зберігаються.