Flow 里的实体类型与输入校验
实体是什么
实体(Entity)是 Flow 里用来收集和存储用户输入信息的结构化变量。当一个 Collect Step 配置了实体类型后,PolyAI 的 NLU(自然语言理解)模块会自动从用户的语音或文字输入中提取对应的值,存入实体供后续步骤使用。
举个例子:Collect Step 实体类型 = Time → 用户说"晚上七点半" → 实体值被解析为 {hour: 19, minute: 30} → 后续步骤可以用这个值做时间可用性查询。
标准实体类型
PolyAI 支持的主要实体类型:
| 类型 | 提取示例 | 典型用途 |
|---|---|---|
| Number | "4 个人" → 4;"一千二" → 1200 | 人数、订单数量、金额 |
| Alphanumeric | "A12345" → "A12345" | 账号号、订单号、确认码 |
| Date | "下周一" → 具体日期;"10月15号" → {year, month, day} | 预订日期、账单日期 |
| Time | "晚上七点半" → {hour: 19, minute: 30} | 预订时间、通话时间 |
| Phone number | "138****1234" → 标准化格式 | 联系方式、身份验证 |
| Name | "张三" → "张三" | 预订姓名、账户名 |
| Address | "上海市浦东新区 XX 路" → 结构化地址 | 配送、安装地址 |
| Choice | "选 A" / "第一个" → 对应选项 | 多选一的场景 |
| Multiple choice | "A 和 C" → 选项列表 | 多选场景 |
| Free text | 任意文字 | 备注、说明 |
实体值跨步骤传递
实体值在整个 Flow 生命周期内保持有效。你可以在 Flow 的任何后续步骤里引用之前某个 Collect Step 收集的实体值——比如在 Confirm Step 里说"我确认一下:4 个人,周六晚上 7:30,张三的名字,对吗?",其中"4"、"周六"、"晚上 7:30"、"张三"这些值就是从前面的实体里拉出来的。
输入校验
PolyAI 对实体值有内置校验规则,常见包括:
- 格式校验:电话号码是否有效、日期是否在合理范围内(不接受 1900 年的日期)
- 必填校验:某些实体必须被正确提取才算这个 Collect Step 完成
- 范围校验:人数是否在 1-20 之间(根据业务配置)
校验失败时,Collect Step 会自动进入重试逻辑——智能体说"抱歉我没听清,请再说一遍"或"请确认一下,这个日期看起来不太对",不会盲目进入下一步。
自定义实体类型
如果标准实体类型覆盖不了你的需求(比如"会员等级"、"产品型号"),PolyAI 支持自定义实体类型。在 Agent Studio 的 Entities 配置区域里定义实体的值域和同义词,然后在 Flow 里引用。
自定义实体类型的价值在于减少 LLM 的自由发挥——你预先告诉系统"会员等级只有白金、黄金、银卡三个值",LLM 就不会把"VIP"或"金牌"这类不在值域里的词当成有效输入处理。