Een test speelt één gesprek in tekst: een gesimuleerde beller speelt scenario, de agent antwoordt vanuit zijn concept (instructies, eerste bericht en kennis), en een beoordelaar toetst het gesprek aan success_criteria. Schrijf tests voor de gesprekken die ertoe doen, voer ze na elke wijziging uit en publiceer als ze slagen.
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 voert alle tests van de agent uit, of die in test_ids, en antwoordt met één run per test (status: "running"). Vraag GET /test-runs/{id} op tot status passed, failed of error is; de run bevat dan het transcript en de reason van de beoordelaar (in het Engels, of in het Chinees met reason_language: "zh"). Elke run kost Credits, getoond bij de tests in het dashboard; runs stoppen bij de eerste die het saldo niet kan betalen, en not_started toont de rest. Een run die niet kan worden uitgespeeld, wordt terugbetaald. Tests controleren wat de agent zegt, niet zijn stem of timing, en roepen zijn functies niet aan: test die vooraf met POST /tools/{id}/test. Een agent heeft maximaal 30 tests; PATCH en DELETE /agents/{id}/tests/{test_id} wijzigen of verwijderen er een.
Naast hele gesprekken (type: "simulation", standaard) kan een test één antwoord controleren. type: "next_reply" neemt chat_history, het gesprek ervoor dat eindigt met de beller ([{role, text}], met role als caller of agent), en success_criteria voor het volgende antwoord van de agent. type: "tool_call" neemt chat_history en expected_tool {name, arguments, match}: de agent moet name aanroepen (een van zijn functies, of end_call, transfer_call, handoff_to_agent) met arguments, exact vergeleken (tekst getrimd, hoofdletters genegeerd) of met match: "judge" op betekenis; andere argumenten die hij meegeeft worden genegeerd. Het transcript van een run toont in tool_calls de functies die de agent aanriep.
POST /agents/{id}/tests/generate stelt tests voor op basis van het concept van de agent: zijn instructies, kennis en functies. Het neemt count (1–10, standaard 5), types, focus (wat gedekt moet worden) en language (en of zh, voor namen en criteria), kost Credits zoals één run en antwoordt met concepten om na te kijken en naar POST /agents/{id}/tests te sturen; met save: true worden ze opgeslagen.