Um teste encena uma chamada em texto: um chamador simulado representa scenario, o agente responde a partir do rascunho (instruções, primeira mensagem e conhecimento) e um avaliador verifica a conversa segundo success_criteria. Escreva testes para as chamadas que importam, execute-os após cada mudança e publique quando passarem.
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 executa todos os testes do agente, ou os de test_ids, e responde com uma execução por teste (status: "running"). Consulte GET /test-runs/{id} até que status seja passed, failed ou error; então a execução traz o transcript e o reason do avaliador (em inglês, ou em chinês com reason_language: "zh"). Cada execução custa Credits, mostrados junto aos testes no painel; as execuções param na primeira que o saldo não consegue pagar, e not_started lista as demais. Uma execução que não consegue rodar é reembolsada. Os testes verificam o que o agente diz, não a voz nem o tempo, e não chamam suas funções: visualize-as antes com POST /tools/{id}/test. Um agente tem até 30 testes; PATCH e DELETE /agents/{id}/tests/{test_id} alteram ou removem um.
Além de chamadas completas (type: "simulation", o padrão), um teste pode verificar uma única resposta. type: "next_reply" recebe chat_history, a conversa anterior terminando com o chamador ([{role, text}], com role sendo caller ou agent), e success_criteria para a próxima resposta do agente. type: "tool_call" recebe chat_history e expected_tool {name, arguments, match}: o agente deve chamar name (uma de suas funções, ou end_call, transfer_call, handoff_to_agent) com arguments, comparados exatamente (texto aparado, sem diferenciar maiúsculas) ou, com match: "judge", pelo sentido; outros argumentos passados são ignorados. O transcript de uma execução mostra em tool_calls as funções que o agente chamou.
POST /agents/{id}/tests/generate sugere testes a partir do rascunho do agente: instruções, conhecimento e funções. Recebe count (1–10, padrão 5), types, focus (o que cobrir) e language (en ou zh, para nomes e critérios), custa Credits como uma execução e responde com rascunhos para revisar e enviar a POST /agents/{id}/tests; com save: true ele os salva.