Egy teszt szövegben játszik le egy hívást: egy szimulált hívó eljátssza a scenario leírását, az ügynök a piszkozatából (utasítások, első üzenet és tudás) válaszol, egy értékelő pedig a success_criteria alapján ellenőrzi a beszélgetést. Írjon teszteket a fontos hívásokra, futtassa őket minden módosítás után, és akkor tegye közzé, ha átmennek.
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
}'
A POST /agents/{id}/test-runs lefuttatja az ügynök összes tesztjét, vagy a test_ids listában szereplőket, és tesztenként egy futással válaszol (status: "running"). Kérdezze le a GET /test-runs/{id} végpontot, amíg a status értéke passed, failed vagy error nem lesz; ekkor a futásban ott a transcript és az értékelő reason mezője (angolul, vagy kínaiul ezzel: reason_language: "zh"). Minden futás Credits-be kerül, amely a teszteknél látható az irányítópulton; a futások az első olyannál megállnak, amelyet az egyenleg nem fedez, a not_started pedig felsorolja a többit. A le nem futó futás díját visszatérítjük. A tesztek azt ellenőrzik, mit mond az ügynök, nem a hangját vagy időzítését, és nem hívják meg a függvényeit: ezeket a POST /tools/{id}/test hívással nézheti meg előre. Egy ügynöknek legfeljebb 30 tesztje lehet; a PATCH és a DELETE /agents/{id}/tests/{test_id} módosít vagy töröl egyet.
A teljes hívások (type: "simulation", alapértelmezés) mellett egy teszt egyetlen választ is ellenőrizhet. A type: "next_reply" a chat_history mezőt kapja, vagyis a válasz előtti, a hívóval végződő beszélgetést ([{role, text}], ahol a role caller vagy agent), valamint a success_criteria mezőt az ügynök következő válaszához. A type: "tool_call" a chat_history és az expected_tool {name, arguments, match} mezőt kapja: az ügynöknek a name függvényt kell meghívnia (egy saját függvényét vagy az end_call, transfer_call, handoff_to_agent valamelyikét) az arguments értékekkel, pontos összevetéssel (szóközök levágva, kis- és nagybetű mindegy) vagy match: "judge" esetén jelentés szerint; a további átadott argumentumokat nem nézzük. Egy futás transcript mezőjében a tool_calls mutatja a meghívott függvényeket.
A POST /agents/{id}/tests/generate az ügynök piszkozatából (utasítások, tudás és függvények) javasol teszteket. Paraméterei: count (1–10, alapértelmezés 5), types, focus (mit fedjenek le) és language (en vagy zh, a nevekhez és kritériumokhoz); egy futásnyi Credits-be kerül, és piszkozatokat ad vissza, amelyeket átnézve a POST /agents/{id}/tests hívásnak küldhet; save: true esetén el is menti őket.