AI 产品与动态AI 应用

Gemini ADK语音工具等待时怎么回应?进度、打断与取消的完整案例

语音助手查资料时长时间安静,用户容易以为任务失败;但为了让它一直说话而编造进度,同样会误导。Google10月19日的ADK教程提供了非阻塞工具思路。这里把它落到一份小型报表请求:什么时候确认收到、什么时候给数字、用户换话题后又该怎样处理。

戴耳机的男子面对麦克风,用于说明语音任务交互
配图:Terrillo Walls · Unsplash License

先明确任务与结果

把后台任务状态与播报时机分开设计:进度只描述已发生的阶段,完成必须有可验证结果;说话被打断不等于任务取消。先用有固定答案的模拟事件验证状态规则,再接入真实Live会话。

先确认官方教程的适用边界

Google官方完整教程讨论ADK中的流式工具、后台执行和结果播报调度,示例要求google-adk≥2.10.0、Gemini Enterprise上的gemini-3.8-live及双向run_live会话。它不是把普通文字提示词换成“边做边说”就能获得的能力。

官方还区分了用户插话与停止后台工具。本文以下事件、数据和参考答案均为编辑设计,没有运行Gemini账户或复现厂商延迟数字;用途是让开发者在接入前明确可验收行为。

先准备一份答案完全已知的材料

任务是“汇总试验批次Q7的已完成记录”。原始四行如下:R1数量8、已完成;R2数量12、已完成;R3数量5、待处理;R4数量9、已取消。成功条件是数量20、记录数2,并明确排除待处理与已取消。这里的数量只是合成计数,不是销售额。

给任务分配稳定编号Q7-A1。用户追问“好了没有”时应查询同一任务状态,不另起一份相同汇总。换一批输入则新建编号,不能把上一份报表的晚到结果当作新任务结果。

自编任务说明

汇总批次Q7。输入:R1=8/已完成;R2=12/已完成;R3=5/待处理;R4=9/已取消。仅统计已完成记录。任务ID=Q7-A1。给出数量、纳入ID、排除ID及原因;收到完成事件之前不要宣布最终数字。重复询问只报告同一任务状态。
这是供读者改写的设计材料,不是本网站已连接的语音工具。

用事件表验收,而不是看它是否一直说话

下表是预期状态序列。时间顺序是模拟流程,不是性能测试。进度事件没有最终数字;用户的另一问题也不改变报表的筛选条件。把“正在聚合”直接播成“已完成20”属于提前宣告,即使最后恰好算对也失败。

Q7-A1的预期状态与发言
事件内部状态可接受行为
请求到达pending确认已收到,不报最终值
数据读取完成running只描述读取阶段完成
用户询问另一概念running回答新问题,保留原任务身份
最终结果到达done:R1、R2,数量20按合适时机交付结果与排除项
旧任务结果晚到ID不匹配当前任务不覆盖当前报表

“先别说”和“取消查询”需要两个分支

编辑设计的第一分支:用户说“等一下,我先问另一个问题”。停止当前语音输出,并保留后台任务;之后仍可交付Q7-A1结果。第二分支:用户明确说“取消这次汇总”。发出真实取消请求,等待可确认的任务状态,不只是口头说取消。

取消事件与完成事件可能竞争。若后台已完成,不能声称它从未执行;若取消已确认,之后到达的旧完成包不应自动播报为新的任务成功。把状态、任务ID和结果ID共同保存,能帮助复现这个边界错误。

在ADK的具体取消机制上,按官方教程配置stop_streaming并处理资源清理。界面上的静音按钮不能自动承担数据库查询、文件操作或连接清理;若工具本身不可取消,应准确报告实际状态。

把打断当取消的错误

失败设计

用户插话后,界面显示“已取消”,但后台仍继续且稍后播出结果

修复方向

分别记录speech_interrupted与task_cancelled;只有真实任务状态才能改变取消标记

二者处理对象不同:一个是音频回合,一个是后台工作。不能用前者证明后者。

选择播报时机,并检查交付内容

在不紧急的报表场景,编辑建议让最终结果在自然停顿时交付;确实需要中断的任务应另行定义,不把每条进度都当紧急通知。官方的调度选项解决的是结果何时进入对话,不会让耗时后端本身变快。

验收时比较输入ID、筛选状态与数量20,并确认重复追问没有制造第二个请求。可沿用多仓库任务边界中的范围意识;若任务是口头练习而非后台操作,则参考Gemini Live演练选择更合适的流程。

接入真实服务后,还要单独检查账户访问、权限、网络失败和实际取消反馈。本文的合成事件只能验证设计规则,不能证明模型在真实通话中一定遵守,也不能证明某个延迟目标已经达到。

模拟通过后再接真实服务

  • R1与R2合计20,其余排除
  • 重复追问保持一个任务ID
  • 插话不会伪造已取消
  • 取消后的晚到结果不会覆盖新任务
  • 数字只在可信最终事件后交付

常见问题

提示词能解决阻塞等待吗?

不能替代执行架构。提示词描述行为,后台工具与会话配置决定是否能在等待中继续对话。

没有真实进度时该说什么?

确认请求已收到,并准确说明仍在等待结果;不要按定时器编造完成比例或步骤。

模拟案例通过能宣传低延迟吗?

不能。需要真实环境、配置和测量证据;本文没有运行模型或给出亲测性能。

参考资料与延伸阅读

继续阅读