PolyAI 中文文档 下载 App

Flow 卡住:多步对话在某个步骤走不下去的排查

问题现象

Flow 启动了,但:

排查步骤

第一步:在 Conversations 里看完整的 Flow 轨迹

Conversations 面板里每通走了 Flow 的对话,会显示完整的 Flow 执行轨迹:

[启动 Flow: Reservation]
  Step 1 (Collect people): 用户说 "4 个人" → 实体提取: people_count = 4 → 成功
  Step 2 (Collect date): 用户说 "明天" → 实体提取: date = 2026-10-14 → 成功
  Step 3 (Collect time): 用户说 "晚上" → 实体提取: time = ??? → 失败
  系统重试 Step 3...
  用户说 "8 点" → 实体提取: time = 20:00 → 成功
  Step 4 (Route availability): 调用 API → 返回 "available=false" → 走 Edge: !available
  Step 5 (推荐替代): 用户说 "算了" → 退出 Flow

把卡住的那段轨迹找出来,定位是哪一步出的问题。

第二步:针对三类典型故障修复

故障 A:实体提取失败(Collect Step 反复重试)

现象原因修复
数字 / 时间 / 日期提取失败ASR 把发音相近的词识别错(比如"3 点"→"3 店")给 Collect Step 配 ASR Biasing("3 点"、"三点"、"下午三点"优先匹配成 Time 实体)
英文 / 多语言 Flow 提取失败实体类型只配了一种语言在多语言项目里给实体配多语言变体
用户用自然语言描述复杂信息比如"下周六晚上 8 点,我想订一个 4 人桌"在 Collect Step 的 Prompt 里明确告诉 LLM 可以从一句话里提取多个实体,或用 Multi-step 方式逐步收集

故障 B:Route Step 走错分支

现象原因修复
Edge 条件太宽泛比如 Edge 条件是 response contains "yes",但用户说"嗯"、"对"也能触发用更精确的 Edge 条件,或者加一个"不确定"的兜底 Edge
Python 转场函数返回值不对函数里 API 调用出错但没有正确处理,返回了错误值看 Conversations 里的 function call 日志,检查返回值
Edge 标签和实际逻辑不匹配Edge 标签写的是"available=true"但连接的是"没空推荐替代"Flow 编辑器里检查 Edge 连接

故障 C:用户问了杂项问题,Flow 跑偏

现象原因修复
Flow 里没有嵌入 RAG用户问了 Flow 没预料到的问题,LLM 不知所措开启 Flow 内的 RAG 辅助(Flow Settings 里选 "Allow knowledge retrieval within flow")
Step Prompt 太死板LLM 被限制死了只能做 Step 里的事,不能灵活回应改 Step Prompt,加"如果用户问其他问题,先回答再回到当前步骤"
Flow 里没有 Exit Step用户想退出但没有路径加一个 Exit Step 或 Handoff Step 作为兜底

第三步:验证修复

在 Sandbox 里用完全相同的对话内容重新测试(最好复制那通失败对话里用户说的每句话),看 Flow 能不能顺利走完。修改 Flow 后实时生效,不需要 Publish 就能在 Sandbox 里测试。