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

Bot Framework中LUIS与QnA Maker意图映射冲突问题咨询

解决LUIS与QnA Maker在酒店搜索场景下的功能冲突问题

我看到你在Bot Framework里遇到了LUIS和QnA Maker关于酒店搜索功能的冲突问题——LUIS有search hotels in Newyark这类触发专属API的意图,QnA里又存了how do i search for a hotel的问答对,结合你现有的处理逻辑(非NONE意图走LUIS响应,否则走QnA),给你几个实用的解决方案:

方案1:基于置信度的分层触发逻辑

你当前的规则是“只要LUIS识别到非NONE意图就直接走对应响应”,可以改成结合意图置信度做判断:只有当LUIS返回的意图置信度高于设定阈值(比如0.8,你可以根据实际测试调整)时,才触发专属的酒店搜索API;如果置信度不够,再调用QnA Maker兜底。

举个C#的代码示例:

var luisResult = await _luisRecognizer.RecognizeAsync(context, cancellationToken);
var topIntent = luisResult.TopIntent();

// 设定置信度阈值,过滤低置信度的意图识别结果
if (topIntent.intent != "NONE" && topIntent.score >= 0.8)
{
    // 触发LUIS对应的酒店搜索专属逻辑
    await HandleHotelSearchIntent(context, luisResult);
}
else
{
    // 调用QnA Maker获取回答
    var qnaResult = await _qnaMaker.GetAnswersAsync(context);
    if (qnaResult.Any())
    {
        await context.SendActivityAsync(qnaResult.First().Answer);
    }
    else
    {
        await context.SendActivityAsync("抱歉,我暂时无法回答这个问题。");
    }
}

这样既保证了高置信度的LUIS意图能正确触发专属API,又能让那些LUIS拿不准、但更匹配QnA问答对的提问(比如how do i search for a hotel)走QnA的回答。

方案2:统一同类问题的处理入口

既然两个服务都在处理酒店搜索相关的问题,你可以二选一统一逻辑:

  • 把QnA的问答迁移到LUIS:将QnA里的how do i search for a hotel这类问题添加到LUIS酒店搜索意图的训练语料中,补充更多变体(比如how to find a hotel、search hotels nearby),提升LUIS的覆盖范围,然后删除QnA中对应的条目,避免重复。
  • 让LUIS意图复用QnA的回答:如果LUIS的专属API只是返回搜索操作说明,和QnA的回答内容一致,那可以在触发LUIS的酒店搜索意图时,直接调用QnA Maker获取对应的回答,这样既利用LUIS的意图识别能力,又复用QnA维护好的问答内容。

方案3:双服务置信度对比触发

如果需要同时兼顾两个服务的优势,可以先同时调用LUIS和QnA Maker,对比两者的置信度后再决定走哪个逻辑:

  1. 同时调用LUIS获取意图及置信度,调用QnA Maker获取匹配结果及置信度
  2. 对比两者的置信度:
    • 若LUIS意图置信度更高:走LUIS的专属API
    • 若QnA匹配置信度更高:返回QnA的回答
    • 两者置信度都偏低:返回默认兜底提示

这种方式能更精准地匹配用户需求,但会多一次API调用,需要根据你的性能需求权衡。

额外小建议

给LUIS的酒店搜索意图补充更多训练语料,把QnA里的相关问题都加进去,再添加一些用户可能会问的变体,能从根源上减少LUIS识别不准导致的冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:58:24