You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Botframework用户个性化配置LUIS短语列表以对接Cortana?

解决LUIS识别用户自定义房间/设备的问题

针对你遇到的每个用户有自定义房间、设备名称,LUIS无法提前预知的情况,我给你几个实用的解决方案,帮你避免识别错误:

1. 用LUIS动态列表实体(最推荐)

LUIS其实支持在每次请求时动态传入实体列表,刚好能解决按用户维度定制识别范围的问题,而且不需要修改原模型或重新发布:

  • 首先在你的LUIS模型里先定义好对应的实体类型(比如Room、Device);
  • 当Bot收到用户请求时,先调用你的后端获取该用户的所有设备/房间列表;
  • 调用LUIS预测API时,在请求体里加入dynamicLists参数,把用户的设备/房间名称作为该实体的动态候选列表传进去(示例代码如下)。

这样LUIS在识别时,只会从你传入的这个用户专属列表里匹配实体,完全不会识别用户没有的“客厅”这类名称。

{
  "query": "打开浴室的灯",
  "dynamicLists": [
    {
      "listEntityName": "Room",
      "requestLists": [
        {
          "name": "用户房间列表",
          "canonicalForm": "浴室",
          "synonyms": ["洗澡间"]
        },
        {
          "name": "用户房间列表",
          "canonicalForm": "餐厅",
          "synonyms": ["饭厅"]
        }
      ]
    },
    {
      "listEntityName": "Device",
      "requestLists": [
        {
          "name": "用户设备列表",
          "canonicalForm": "灯",
          "synonyms": ["电灯"]
        }
      ]
    }
  ]
}

2. 在Bot层做二次验证与模糊匹配

如果暂时没法用动态列表实体,也可以在Bot拿到LUIS的识别结果后,自己做一层过滤:

  • 当LUIS识别出实体(比如“客厅”),Bot立刻去查当前用户的设备/房间列表;
  • 用精确匹配或模糊匹配算法(比如Levenshtein字符串相似度、拼音匹配)找最接近的候选;
  • 如果找到匹配项,就询问用户确认(比如“你是想打开餐厅的灯吗?”);如果完全没匹配到,直接提示用户“我没找到你说的设备,请确认名称是否正确”。

这个方案不需要修改LUIS模型,完全在Bot端实现,灵活度很高,适合各种场景。

3. 模仿Connected Home的设备发现逻辑

Connected Home的核心逻辑其实就是先获取用户的设备列表,再用这个列表约束识别范围,你可以自己实现这个流程:

  • 用户完成OAuth授权后,Bot主动调用你的后端接口,获取该用户的所有设备/房间信息,存入用户的会话上下文或持久化存储;
  • 之后每次用户发起请求,都从存储中取出这些信息,要么传给LUIS做动态列表,要么在Bot端做二次验证。

这个逻辑和前两个方案是相通的,本质都是把用户的专属设备列表作为识别的“白名单”。


内容的提问来源于stack exchange,提问作者Lukas Volf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:29:11