Una prueba simula una llamada en texto: un llamante simulado representa scenario, el agente responde desde su borrador (instrucciones, primer mensaje y conocimiento) y un evaluador revisa la conversación según success_criteria. Escriba pruebas para las llamadas que importan, ejecútelas tras cada cambio y publique cuando pasen.
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 ejecuta todas las pruebas del agente, o las de test_ids, y responde con una ejecución por prueba (status: "running"). Consulte GET /test-runs/{id} hasta que status sea passed, failed o error; entonces la ejecución tiene el transcript y el reason del evaluador (en inglés, o en chino con reason_language: "zh"). Cada ejecución cuesta Credits, que se muestran junto a las pruebas en el panel; las ejecuciones se detienen en la primera que el saldo no puede pagar, y not_started lista el resto. Una ejecución que no llega a completarse se reembolsa. Las pruebas comprueban lo que dice el agente, no su voz ni sus tiempos, y no llaman a sus funciones: pruébelas antes con POST /tools/{id}/test. Un agente tiene hasta 30 pruebas; PATCH y DELETE /agents/{id}/tests/{test_id} cambian o eliminan una.
Además de llamadas completas (type: "simulation", por defecto), una prueba puede comprobar una sola respuesta. type: "next_reply" recibe chat_history, la conversación anterior que termina con el llamante ([{role, text}], con role igual a caller o agent), y success_criteria para la siguiente respuesta del agente. type: "tool_call" recibe chat_history y expected_tool {name, arguments, match}: el agente debe llamar a name (una de sus funciones, o end_call, transfer_call, handoff_to_agent) con arguments, comparados exactamente (texto recortado, sin distinguir mayúsculas) o, con match: "judge", por significado; los demás argumentos que pase se ignoran. El transcript de una ejecución muestra en tool_calls las funciones que llamó el agente.
POST /agents/{id}/tests/generate propone pruebas a partir del borrador del agente: sus instrucciones, conocimiento y funciones. Recibe count (1–10, por defecto 5), types, focus (qué cubrir) y language (en o zh, para nombres y criterios), cuesta Credits como una ejecución y responde con borradores para revisar y enviar a POST /agents/{id}/tests; con save: true los guarda.