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

Bot Framework Composer(LUIS)如何实现歧义意图供用户选择功能

Bot Framework Composer 实现歧义意图候选选择功能方案

方案一:原生配置实现(无自定义代码)

  • 调整识别阈值:打开项目设置页的识别器配置项,修改意图触发的最低置信度阈值(默认值通常为0.7,建议根据自身模型表现调整到0.75-0.85区间),得分低于该阈值的意图不会直接触发。
  • 新增歧义处理触发器:在全局对话层新建触发器,触发条件设置为turn.recognized.score < [你设置的阈值] && count(turn.recognized.intents) >= 2,该条件会在最高置信度意图得分不足、且存在至少2个有效识别结果时触发。
  • 构造选择交互:在该触发器内添加选择提示动作,从turn.recognized.intents中取得分排名前3、且得分不低于0.3的意图作为选项,选项文本配置为各意图对应的友好展示名称,选项值绑定意图的唯一标识。
  • 配置后续流转:用户选择对应选项后,直接通过「启动对话框」动作跳转到该意图对应的业务对话框即可,无需重复执行识别流程。

方案二:自定义代码扩展(适配复杂场景)

如果需要实现更灵活的筛选规则(如结合实体匹配度、业务权重判断是否歧义),可以通过自定义中间件实现:

  • 新建自定义识别中间件,重写轮次处理逻辑,核心代码参考如下:
public class DisambiguationMiddleware : IMiddleware
{
    // 直接触发意图的最低得分
    private const double MinTriggerScore = 0.8;
    // 可作为候选的最低得分
    private const double MinCandidateScore = 0.3;
    // 最多展示的候选数量
    private const int MaxCandidateCount = 3;

    public async Task OnTurnAsync(ITurnContext turnContext, NextDelegate next, CancellationToken ct)
    {
        var recognizeResult = turnContext.TurnState.Get<RecognizerResult>();
        if (recognizeResult?.Intents == null || !recognizeResult.Intents.Any())
        {
            await next(ct);
            return;
        }

        // 按得分降序排序所有意图
        var sortedIntents = recognizeResult.Intents
            .Where(kv => kv.Value.Score >= MinCandidateScore)
            .OrderByDescending(kv => kv.Value.Score)
            .ToList();

        // 满足歧义条件:最高得分低于触发阈值、且候选数≥2
        if (sortedIntents.First().Value.Score < MinTriggerScore && sortedIntents.Count >= 2)
        {
            var candidates = sortedIntents.Take(MaxCandidateCount).ToList();
            // 存入轮次状态供后续流程调用
            turnContext.TurnState.Set("disambiguateCandidates", candidates);
            // 发送带选项的提示消息
            var options = candidates.Select(kv => kv.Key).ToList();
            await turnContext.SendActivityAsync(MessageFactory.SuggestedActions(options, "请选择你想咨询的内容:"), ct);
            return;
        }

        await next(ct);
    }
}
  • 注册中间件:在项目启动配置文件的服务注册方法中,添加该中间件的单例注册,同时将中间件加入Bot适配器的执行管道即可生效。
  • 可根据业务需求扩展规则:例如当排名前两位的意图得分差小于0.1时,即使最高得分超过触发阈值,也弹出候选选择,降低误识别概率。

注意:所有阈值参数不要直接照搬示例值,需要根据自己训练的LUIS模型实际测试效果调整,阈值过高会频繁弹出选择打断用户操作,阈值过低容易触发错误意图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:24:11