一個測試用文字模擬一通電話:模擬來電者照 scenario 扮演,Agent 用草稿(指令、開場白和知識庫)回答,再由評審依 success_criteria 判斷這通是否合格。為重要的通話情境寫測試,每次修改後執行,全部通過再發布。
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 執行 Agent 的全部測試(或 test_ids 裡的幾個),每個測試回傳一次執行(status: "running")。輪詢 GET /test-runs/{id},直到 status 變成 passed、failed 或 error,這時執行裡有 transcript 和評審的 reason(預設英文,reason_language: "zh" 為中文)。每次執行都會扣點數,金額顯示在主控台的測試頁;餘額不夠時從付不起的那個開始不再執行,not_started 列出沒執行的測試。沒跑完的執行會退回點數。測試檢查的是 Agent 說了什麼,不檢查聲音和延遲,也不會真的呼叫函式:函式請用 POST /tools/{id}/test 預覽。每個 Agent 最多 30 個測試,PATCH、DELETE /agents/{id}/tests/{test_id} 修改或刪除。
除了完整通話(type: "simulation",預設),測試也可以只檢查一句回覆。type: "next_reply" 需要 chat_history,也就是這句回覆之前、以來電者結尾的對話([{role, text}],role 為 caller 或 agent),以及判斷 Agent 下一句回覆的 success_criteria。type: "tool_call" 需要 chat_history 和 expected_tool {name, arguments, match}:Agent 應該呼叫 name(它的某個函式,或 end_call、transfer_call、handoff_to_agent),並傳入 arguments;參數依精確值比較(去掉首尾空白、不分大小寫),設為 match: "judge" 時依意思比較;Agent 多傳的參數不檢查。執行的 transcript 裡,tool_calls 記錄 Agent 呼叫了哪些函式。
POST /agents/{id}/tests/generate 根據 Agent 的草稿(指令、知識庫和函式)產生測試草稿。參數有 count(1–10,預設 5)、types、focus(要涵蓋的情況)和 language(en 或 zh,用於名稱和標準),依一次執行扣點數,回傳的草稿可以檢查後提交給 POST /agents/{id}/tests;帶 save: true 時直接儲存。