Agent意图识别分层架构从规则到大模型的完整设计与落地引言在构建智能Agent的过程中意图识别是一个核心模块。面对用户的自然语言输入系统需要快速、准确地判断用户的意图并将其路由到相应的处理逻辑。然而在实际生产环境中意图识别面临着多重挑战既要保证高频请求的低延迟和低成本又要处理模糊表达和长尾需求还要确保高风险操作的零容错。许多开发者容易陷入非此即彼的思维定式要么依赖规则引擎要么押注机器学习模型。事实上成熟的工业级方案往往是分层架构——让规则、小模型、大模型各司其职协同工作。本文将详细介绍这套分层架构的设计思路、实现要点以及关键指标的度量方法。一、分层架构概览一个完整的意图识别系统应包含三层请求依次流过越靠前越快、越便宜、越确定。------------------ | 规则引擎 | - 确定性、高风险、边界清晰 ------------------ | (未命中) ------------------ | 小模型分类器 | - 固定意图、高并发、有标注数据 ------------------ | (低置信度) ------------------ | 大模型兜底 | - 模糊表达、复杂语义、长尾请求 ------------------层级核心职责适用场景优势规则引擎处理确定性、高风险、边界清晰的请求命中后直接返回敏感词拦截、黑名单校验、查余额等固定指令极低时延、可审计、安全边界小模型分类器处理固定意图集合中有标注数据且高并发的请求高频同义表达如余额多少“还剩几个钱”性价比高、速度快大模型兜底处理模糊表达、复杂语义及低置信度的长尾请求用户表达含糊、全新意图、多条件复合查询灵活性最高二、各层详细设计2.1 规则引擎 —— 系统的安全底线很多人认为规则是笨办法但在生产系统中规则恰恰是确定性的保障。核心作用极低时延通常 10ms无需等待模型推理命中原因清晰可审计、可追溯高风险操作前置拦截避免模型误判造成事故典型场景敏感词过滤把钱全部转走直接拒绝身份校验未认证用户不允许执行转账固定指令查余额直接路由到余额查询接口工程化要点规则必须版本化管理支持热加载和回滚每条规则应有唯一ID便于监控和日志审计设置规则命中率告警防止规则过宽或过窄# 伪代码规则引擎classRuleEngine:def__init__(self):self.rulesload_rules_from_config()# 版本化配置defmatch(self,user_input:str)-Optional[Intent]:forruleinself.rules:ifrule.pattern.search(user_input):log_rule_hit(rule.id,user_input)# 可审计returnrule.intentreturnNone2.2 小模型分类器 —— 主流请求的性价比核心小模型如BERT-small、DistilBERT、FastText擅长处理同一意图的不同表达。例如“卡里还剩多少钱”“余额多少”“查一下账户余额”这些表达各不相同但意图都是查余额。如果用规则穷举写一百条也写不完而小模型可以泛化学习。适用前提意图集合稳定不能频繁新增或删除意图高质量标注数据每类意图至少几百条样本高并发、低延迟P99延迟需控制在100ms以内持续监控漂移线上数据分布变化会导致效果下降需定期重训或增量学习部署方式模型转换为ONNX格式利用CPU/GPU推理使用缓存减少重复计算相同输入可直接命中缓存# 伪代码小模型分类器classSmallModelClassifier:def__init__(self,model_path:str):self.sessionort.InferenceSession(model_path)defpredict(self,user_input:str)-Dict[str,float]:input_idstokenize(user_input)outputsself.session.run(None,{input_ids:input_ids})probssoftmax(outputs[0])return{intent:probforintent,probinzip(INTENT_LIST,probs)}2.3 大模型兜底 —— 最后的防线当规则和小模型都无法确定意图时如低置信度、模糊表达、全新场景交由大模型处理。大模型的优势强大的语义理解能力能处理复杂的上下文可主动向用户发起意图澄清能够处理未见过的长尾意图常见做法调用LLM API如GPT-4、Claude、混元等进行意图理解和生成回复设计Prompt模板引导模型输出结构化意图结合few-shot示例提高准确率注意事项大模型延迟较高通常 1s不适合做主路径成本远高于规则和小模型因此流量占比应控制在10%以内需要设置超时熔断机制防止模型挂起导致系统阻塞三、低置信度处理策略低置信度场景是整个系统的关键风险点。核心原则是意图识别的终点不是猜中标签而是避免错误的工具调用。3.1 置信度校准模型输出的概率值如90%并不等于真实准确率。需要通过校准方法如Platt Scaling、Isotonic Regression将模型输出映射到真实概率空间。3.2 意图澄清当Top1和Top2置信度接近时差值 0.2不应硬选而应向用户发起澄清用户帮我把那个转过去 Agent请问您是想【转账】还是【转交文件】3.3 超时降级每层都需要设置超时时间和熔断阈值。例如小模型推理超过200ms则直接跳过本层交给大模型处理大模型超过5秒则返回暂时无法理解请稍后再试。3.4 安全默认行为对于任何低置信度的工具调用请求系统应默认拒绝执行并向用户解释原因。宁可让Agent说我不确定也绝不能静默执行可能错误的操作。# 伪代码路由决策defroute_intent(user_input:str,timeout500ms):# 1. 规则层rule_resultrule_engine.match(user_input)ifrule_result:returnexecute_with_safety_check(rule_result)# 2. 小模型层带超时try:sm_probssmall_model.predict_with_timeout(user_input,timeout)top1,top2get_top_two(sm_probs)iftop1.confidence0.9and(top1.confidence-top2.confidence)0.2:returnexecute(top1.intent)eliftop1.confidence0.6:# 低置信度走大模型passelse:returnclarify_with_user(top1,top2)exceptTimeoutError:# 超时降级returnfallback_to_llm(user_input)# 3. 大模型兜底llm_resultllm_complex_understanding(user_input)returnllm_result四、效果评估指标衡量分层架构的价值需要关注以下三个核心指标4.1 分意图准确率不要只看总体准确率。总体95%可能隐藏着某个关键意图只有70%的事实。应统计每个意图的精确率、召回率和F1值。4.2 误执行率最关键的指标。指错误调用工具的比例。分层架构的目标是将误执行率降到最低规则层理论上为0严格匹配小模型层 1%大模型层 5%但可通过澄清降低实际影响4.3 延迟与成本分层架构的经济价值体现在层级P99延迟单次成本预期流量占比规则层 10ms几乎为030%小模型层 100ms低60%大模型层 2s高10%相比全量使用大模型分层架构可将整体成本降低80%以上同时显著提升响应速度。五、总结规则守住底线确保安全性和可审计性小模型覆盖主流高效处理高频请求控制成本大模型兜住长尾处理模糊和复杂场景三者通过路由逻辑串联形成一套兼顾准确率、延迟、成本和风险的系统。在设计时务必重视低置信度处理策略避免因错误执行导致严重事故。