微信机器人接的业务流程越多,意图路由越关键。用户说"查下我的订单"——查物流?查订单详情?查退款进度?三个流程都可能匹配。路由要解决的是:一个意图匹配到多个流程时怎么选、选错了怎么办、匹配不上兜底到哪。路由做不好,要么导到错误流程体验差,要么每次问用户"您要查物流还是查订单"显得啰嗦。

一、路由决策树——分层匹配而非扁平匹配

路由的核心是决策树。根节点意图分类——先分大类(咨询/操作/查询)。中间节点流程匹配——大类下按子意图匹配具体流程。叶子节点流程执行。决策树的价值是层次化——先分大类缩小范围,再在范围内精确匹配。

匹配优先级是精确>模糊>兜底。精确匹配优先——"查物流"精确匹配物流流程。模糊匹配次之——"查下订单"按历史行为推断。兜底最后——都匹配不上路由到通用咨询。原则是宁精确勿模糊。消息解析和意图分类的接口在 Eyun 开发文档 中有对应支撑。

二、路由冲突解决——多个流程都能匹配时怎么选

路由冲突是核心难题。"帮我看看这个订单"——物流、详情、退款三个流程都能匹配。解决策略有三个:历史行为推断(最近问了物流优先匹配物流)、流程热度排序(咨询量大的优先)、澄清询问(无法推断时问用户)。

三个策略适用场景不同。历史行为推断适合有会话历史的用户,热度排序适合匹配度接近时,澄清是最后手段。关键原则是能推断就别问——每次澄清都是体验损耗。

三、动态路由——上下文调整路由结果

路由不是静态的——同一意图在不同上下文路由到不同流程。"查下"在讨论物流的上下文里路由到物流查询,在讨论退款的上下文里路由到退款进度。

工程实现是上下文加权。意图分类返回概率分布——物流0.4、详情0.3、退款0.3。会话上下文给候选加权——讨论退款时退款加0.2变成0.5。加权后最高概率的就是路由结果。动态路由的价值是靠上下文消歧减少澄清。动态路由和上下文加权的接口在 Eyun 开发文档 中有对应能力。

意图路由三层匹配对照

匹配层

触发条件

准确率

体验

精确匹配

关键词命中

高

直接执行

模糊匹配

意图分类

中

推断执行

兜底匹配

都匹配不上

低

通用咨询

意图路由与动态加权实现

class IntentRouter:
    FLOWS = {
        "logistics": FlowLogistics(),    # 物流查询
        "order_detail": FlowOrder(),     # 订单详情
        "refund": FlowRefund(),          # 退款进度
    }

    def route(self, raw, session):
        scores = self.classify(raw)                # 意图分类概率分布
        scores = self.context_weight(scores, session)  # 上下文加权
        best = max(scores, key=scores.get)
        if scores[best] > 0.6:
            return self.FLOWS[best].execute(raw)   # 置信够直接执行
        return self.clarify(raw, scores)           # 冲突无法消歧:澄清

    def context_weight(self, scores, session):
        # 上下文加权:当前话题给候选加分
        topic = session.current_topic
        if topic == "refund":
            scores["refund"] += 0.2
        elif topic == "logistics":
            scores["logistics"] += 0.2
        return scores

落地建议

路由决策树从精确匹配做起——先把高频意图精确匹配做扎实,模糊匹配和兜底后补。冲突能靠推断就别靠澄清——历史行为和上下文加权能把澄清降到最低。动态路由权重靠数据调——初始拍脑袋定,跑一段后按准确率调整。微信侧的意图分类、流程分发和上下文加载由 Eyun 这类个人微信API平台 提供,路由决策和动态加权在自建服务实现,接口字段以平台开发文档为准。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐