Vapi:让 AI 接电话之前,先把难处理的来电试一遍
Vapi把语音识别、模型回答、语音输出和业务工具连接成语音助手。模拟来电测试帮助团队在修改后检查预约、客服等任务,并从对话与录音定位问题。
先尝试拆解问题、设计和实现,再展开思路,检查状态、边界与取舍,并设计验证用例。思路提供分析路径,不给出完整实现。
01
代码思考进阶
重复、旧版本与未知结果,怎样计算发布资格?
练习场景
设计一个纯内存“发布检查汇总器”。它接收测试计划和某个候选版本的结果,回答每个测试组合是否证据齐全,以及是否允许继续人工发布确认。它不运行模型、不调用发布接口;判定规则由本题定义,不是Vapi内置算法。
输入合同与判定
- plan含targetVersion(非空字符串)和cases(非空数组,至多10,000项)。每项caseId唯一非空,minRuns为1到100的整数。一个case代表固定场景、性格与模式的组合。计划预先校验,只读。
- results最多200,000项。每项为非null对象,含非空字符串resultId、caseId、version、iterationId,以及outcome为pass/fail/unknown之一。结果对象不可信;字段缺失或类型错误整批报错。忽略其他字段。所有已列字符串总长度为L。
- 同resultId已列字段完全相同视为重复投递,只计一次;字段不同整批报错并定位双方。不同resultId但(version,caseId,iterationId)相同也算冲突,即使outcome相同。冲突在全部结果范围检查,包括旧版本和计划外case,不能用过滤掩盖坏数据。
- 校验后只统计version严格等于targetVersion且caseId属于计划的结果,其他结果计入ignored但不改变资格。每case分别统计pass、fail、unknown。若fail>0,该case为blocked;否则若unknown>0或pass<minRuns,为incomplete;否则为ready。unknown不是pass,也不是fail,不允许用额外pass抵消unknown。
- 总体有任一blocked则blocked,否则任一incomplete则incomplete,否则ready。输出按计划原顺序列出每case统计与状态、ignored唯一结果数及总体状态。没收到结果的case仍输出零和incomplete。成功与失败都不修改输入,失败不返回部分汇总。
推演例子
计划目标V2:normal至少2次、tool-error至少1次。结果:normal/V2/i1 pass;normal/V2/i2 pass;tool-error/V2/i1 unknown;tool-error/V1/i1 pass;再加第一条的同resultId完全重复。为每条取不同resultId,重复条沿用第一条ID。写出各case、ignored与总体状态。
再独立尝试:(a)新增tool-error/V2/i2 pass;(b)把unknown那条改为fail;(c)新增不同resultId但normal/V2/i1相同的pass;(d)把目标V2改成V3而保留原结果。分别说明哪些是有效但未通过,哪些是输入冲突。
交付物
提出校验、两级去重/冲突检测、版本过滤、三态归并与一次性交付的思路。解释为什么不能简单平均通过率,列至少四个不变量,并用n项结果、p个计划项和L分析时间/空间。可以讨论JS Map或Rust集合,不写完整实现或逐行伪代码。
查看思路
- 先验证全部数据,再谈资格。 检查字段和outcome,保存原下标。用resultId索引识别重复与矛盾;未知字段不参与比较。不要先过滤旧版本,因为旧数据内部矛盾也应被发现。
- 另外保护一次迭代的身份。 按version、caseId、iterationId建立嵌套索引或结构化键,避免简单拼接分隔符的碰撞。相同resultId的完全重复先去掉,再检查不同resultId是否占用同一迭代。
- 只为当前计划计数。 先初始化所有case为零;通过校验的唯一结果按版本和case筛选,未入计划的累计ignored。保留unknown数量,让“没测清楚”区别于明确失败。
- 按明确优先级得出状态。 原例normal=2/0/0 ready,tool-error=0/0/1 incomplete,ignored=1,总体incomplete。a增加pass但unknown仍在,所以incomplete;b出现fail所以blocked;c是冲突,整批无汇总;d所有四条唯一结果被忽略,两case零结果,总体incomplete。
- 验证稳定性与成本。 任意重排和增加完全重复不改变结果;旧版本不能提高当前资格;关键fail不会被更多pass抵消;未验证不会悄悄变通过;错误输入无部分结果。平均常数哈希下有O(n+p)次集合操作,字符串哈希与相等比较另计L等字符成本;索引空间O(n+p+L)上界,按计划顺序输出无需额外排序。