Ein Test spielt einen Anruf als Text durch: Ein simulierter Anrufer spielt scenario, der Agent antwortet aus seinem Entwurf (Anweisungen, erste Nachricht und Wissen), und ein Prüfer bewertet das Gespräch anhand von success_criteria. Schreiben Sie Tests für die wichtigen Anrufe, führen Sie sie nach jeder Änderung aus und veröffentlichen Sie, wenn sie bestehen.
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 führt alle Tests des Agents aus, oder die in test_ids, und antwortet mit je einem Lauf (status: "running"). Fragen Sie GET /test-runs/{id} ab, bis status passed, failed oder error ist; dann enthält der Lauf das transcript und den reason des Prüfers (auf Englisch, oder auf Chinesisch mit reason_language: "zh"). Jeder Lauf kostet Credits, die bei den Tests im Dashboard angezeigt werden; die Läufe stoppen beim ersten, den das Guthaben nicht bezahlen kann, und not_started listet die übrigen. Ein Lauf, der nicht durchläuft, wird erstattet. Tests prüfen, was der Agent sagt, nicht seine Stimme oder sein Timing, und rufen seine Funktionen nicht auf: Diese prüfen Sie vorab mit POST /tools/{id}/test. Ein Agent hat bis zu 30 Tests; PATCH und DELETE /agents/{id}/tests/{test_id} ändern oder entfernen einen.
Neben ganzen Anrufen (type: "simulation", Standard) kann ein Test eine einzelne Antwort prüfen. type: "next_reply" nimmt chat_history, das Gespräch davor, das mit dem Anrufer endet ([{role, text}], role ist caller oder agent), und success_criteria für die nächste Antwort des Agents. type: "tool_call" nimmt chat_history und expected_tool {name, arguments, match}: Der Agent soll name aufrufen (eine seiner Funktionen oder end_call, transfer_call, handoff_to_agent), mit arguments, genau verglichen (Text getrimmt, ohne Groß-/Kleinschreibung) oder mit match: "judge" nach Bedeutung; weitere übergebene Argumente werden ignoriert. Das transcript eines Laufs zeigt die aufgerufenen Funktionen in tool_calls.
POST /agents/{id}/tests/generate entwirft Tests aus dem Entwurf des Agents: seinen Anweisungen, seinem Wissen und seinen Funktionen. Es nimmt count (1–10, Standard 5), types, focus (was abgedeckt werden soll) und language (en oder zh, für Namen und Kriterien), kostet Credits wie ein Lauf und antwortet mit Entwürfen, die Sie prüfen und an POST /agents/{id}/tests senden; mit save: true werden sie gespeichert.