一种基于规则与大模型混合的三级降级意图识别方法
发明专利技术交底书
对应软著: sc5 左帮右臂规则+大模型混合意图识别系统 V1.0
技术领域分类: 人工智能 / 自然语言理解 / 智能对话系统
1. 发明名称
一种基于规则与大模型混合的三级降级意图识别方法
2. 技术领域
本发明属于自然语言处理与智能对话系统技术领域,具体涉及一种面向企业级数字员工(AI Agent)平台的用户意图识别方法,尤其涉及将规则匹配与大语言模型(LLM)推理相结合、并按"高频关键词直通—规则增强参数提取—纯大模型兜底推理"三级降级调度,以实现识别成本、响应时延与意图覆盖率三者最优平衡的方法及系统。
3. 背景技术
在企业级对话式 AI 系统中,用户意图识别(Intent Recognition)是将自然语言指令映射为可执行操作(如查询对象、创建数据、调用工具、生成文档等)的第一步,其准确性与开销直接决定整个系统的可用性。
现有意图识别方案主要存在两类技术路线,各有明显短板:
(1) 纯大模型(LLM)意图识别路线。 直接把用户语句送给大模型做分类与参数抽取。优点是覆盖面广、能处理长尾与模糊表达;缺点有三:其一,成本高昂,每一次交互都要消耗 Token,在高频重复的企业场景(如每天数千次"查一下库存""找供应商")下 Token 费用不可接受;其二,时延大,单次 LLM 调用通常数百毫秒至数秒,难以支撑实时交互;其三,结果不稳定,同一句话多次识别可能得到不同结果,且难以审计和干预。
(2) 纯规则(关键词/正则)意图识别路线。 预先配置关键词与意图的映射表。优点是零 Token、时延极低(毫秒级)、结果确定可审计;缺点是覆盖窄,只能识别已显式配置的有限意图,对同义表达、口语化、多意图复合、长尾需求无能为力,维护成本随业务膨胀而急剧上升。
此外,现有方案普遍缺乏分级降级与成本可控机制:要么全程调用 LLM,要么全程依赖规则,无法根据"意图是否高频/是否明确/是否需要参数抽取"动态选择最经济的识别通道;也缺乏对"长尾意图"的自动沉淀能力——即系统无法把反复出现的新意图自动固化为规则,从而越用越费钱。
因此,亟需在成本、时延、覆盖率三者之间取得最优平衡,并具备自进化能力的意图识别方案。
4. 发明内容
4.1 要解决的技术问题
本发明旨在解决以下技术问题:
- 成本—时延—覆盖率的"不可能三角"难以兼顾: 纯 LLM 路线成本高、时延大但覆盖好;纯规则路线便宜快但覆盖差。现有技术无法按需自动选择最经济的识别通道。
- 高频重复意图的算力浪费: 企业场景中约 70% 的查询是高度重复的(如查库存、找供应商),每次都调用 LLM 属于严重浪费。
- 长尾与模糊意图的处理: 对未见过的、口语化、多意图复合的语句,纯规则无法识别,需要 LLM 兜底。
- 规则维护成本与系统自进化: 新增业务意图通常需工程师改代码或手工配置,缺乏"高频长尾意图自动沉淀为规则"的闭环机制。
4.2 技术方案
本发明的核心是一种规则与大模型混合的三级降级意图识别方法,由 IntentEngine 类(server/core/intent-engine.js)统一调度。系统定义三级识别通道:
- L1 关键词加权直通(零 Token): 对明文规则做加权关键词匹配,命中即返回,不调用任何大模型。
- L2 规则 + LLM 参数提取(仅参数抽取用少量 Token): 规则已能确定意图类别,但需要 LLM 从自由文本中抽取结构化参数(如数量、名称、对象类型)时升级至此级。
- L3 纯 LLM 推理(兜底,高 Token): 当 L1 无法命中任何规则时,进入纯大模型兜底,处理长尾、模糊、多意图语句。
下面对各关键技术点逐一说明。
#### 4.2.1 L1 关键词加权匹配机制(零 Token 直通)
IntentEngine.recognize(message, context) 是 L1 的入口。系统对每条规则(来自数据库 intent_rules 表,或内置兜底 BUILTIN_INTENT_RULES)维护一个 keywords 关键词列表,并执行加权打分:
- 通用动词低权重(1 分):
GENERIC_VERBS集合收录"创建、查询、修改、查看、优化、修复、分析、生成"等通用动词,匹配命中仅计1分。 - 领域词高权重(3 分): 非通用动词的领域关键词(如"库存""供应商""BOM""询价")匹配命中计
3分,使领域特征在竞争中胜出。 - 短语长度加分(
lengthBonus):lengthBonus = Math.min(kw.length - 1, 4),关键词越长(越具区分度)额外加分越多(上限 4 分),抑制短噪声词。 - 优先级偏置(
priorityBias):priorityBias = Math.min((rule.priority || 5) - 5, 5),同分时高优先级规则额外加分子(上限 5 分),保证业务重要意图优先命中。 - 上下文意图动词加分(
SCOPE_VERB_BOOST): 系统预定义动词—操作域映射(如"优化|降本|改善"→optimize、对比|比较|vs→compare、创建|新建|录入→create)。若用户语句命中某操作域动词,则对对应scope的规则额外加4分(scopeBoostMap[scope] = 4)。这一机制在语句含明确动作词时显著加速并校正分类。 - 直通阈值: 综合得分
bestScore ≥ 2即认为命中,直接由_buildResult构建返回结果;若bestScore < 2或完全无命中,则返回level: L3的未知意图,交由上层进入纯 LLM 兜底(_unknownIntent中need_llm: true)。
经实测加权设计,典型的"查一下库存""找A级供应商"等高频句在 L1 即可命中,全程零 Token 消耗、响应 < 100ms。
#### 4.2.2 L2 规则 + LLM 参数提取
当 L1 命中了意图类别,但规则标记 need_llm: true(需要从自由文本中抽参数)时,系统进入 L2。典型场景如 procurement_workflow("我要采购100套伺服电机"),规则已识别为采购工具调用,但 product、quantity 需 LLM 抽取;或 create 类意图需要先抽取 required_fields(如 name)。
L2 中 LLM 仅用于参数抽取这一窄任务,而非整句分类,Token 消耗远小于纯 LLM 路线。_buildResult 针对 create 类校验 required_fields 是否齐全:齐全则进入 confirm(L2 待确认);缺失则返回 need_info 反问补全。tool_call 类则结合 safeTools 白名单判断:属于白名单且无需确认、无需 LLM 的规则,直接 auto_execute;否则返回 confirm 交由用户确认,从而兼顾自动化与安全。
PromptTemplateManager(server/core/prompt-template-manager.js)为 L2 参数抽取提供 Few-shot 模板支撑:getTemplate(scope, itemType) 采用 "DB 自定义优先于内置" 的优先级(DB 中按 item_type 精确匹配 → DB 通用模板 → BUILTIN_TEMPLATES 内置模板),内置模板覆盖 identify/create/repair/optimize/compare/generate 等操作域,render() 支持 {{variable}}、列表循环 {{#list}}...{{/list}}、条件 {{#flag}}/{{^flag}} 等语法动态填入 schema 上下文,使 LLM 抽取结果严格遵循对象结构。
#### 4.2.3 L3 纯 LLM 兜底推理
L1 完全未命中(或 _unknownIntent)时升级到 L3,交由大模型做开放域意图推理,处理长尾、口语化、多意图复合语句。L3 由 IntentClassifier(server/core/intent-classifier.js)与 SmartIntentRecognizer(server/core/smart-intent-recognizer.js)协作完成。
- 文档类意图分类(
IntentClassifier):INTENT_PATTERNS定义doc_generate/doc_query/doc_chat/rule_interpret/change_track五类文档意图。_keywordMatch先按正则/关键词匹配,命中置信度0.9;否则按关键词片段累加打分,置信度Math.min(0.7, bestScore * 0.2);都不满足才调用_llmFallback走大模型(置信度门槛0.6)。_splitMultiIntent借助连接词集合MULTI_INTENT_CONNECTORS = ['并','且','同时','还有','另外','以及','再','然后']将复合句切分为子句,逐句识别后合并为intents数组并标记isMultiIntent,实现一句话多意图并行识别。
- 能力—类型—参数—置信度加权(
SmartIntentRecognizer):recognize()依次执行四步:①registry.recognizeCapability识别能力(如 identify/create);②registry.findType异步识别对象类型(精确名→label→别名→子串→上下文推断五级优先级);③_extractParams抽取数量、ID 等显式参数;④_calcConfidence计算综合置信度。置信度采用加权平均:能力置信度权重0.4、类型置信度权重0.6(若上下文补位则额外0.3×0.2加权),公式total/weight四舍五入保留两位小数。系统还提供recognizeWithContext,从最近 5 条会话历史(_buildContext)提取已知类型/能力回填,缓解指代省略问题。
#### 4.2.4 规则自动沉淀(自进化闭环)
为降低长尾意图的长期成本,系统提供"高频意图自动沉淀为规则"机制。_incrementIntentFrequency 对每条 L3 识别结果按意图键(scope:tool:itemType)累加计数;当累计达到阈值 _precipitateThreshold = 5(默认 5 次)时,异步(不阻塞主流程)触发 _tryPrecipitateRule,将该高频意图固化为一条 intent_rules 表记录(need_llm=0、priority=50、is_active=1),并通过 invalidateCache() 热加载。此后该意图在 L1 即可命中,从 L3(高成本)降级为 L1(零成本)。_findSimilarRule 在沉淀前做相似度查重,避免重复规则;listPrecipitatedRules 与 routes/intent.js 的 GET /api/intent/precipitated-rules 提供沉淀规则查看与删除。
此外,RuleIntentInterpreter(server/core/rule-intent-interpreter.js)负责规则→业务意图解析(interpretRuleIntent 用 LLM 解读规则"为何存在/保护什么/影响什么")及冲突检测(detectRuleConflicts/_detectPairConflict 识别数值约束冲突"≥/≤"、语气风格冲突"专业/口语化",并按 priorityOrder 优先级裁决 winner),保证沉淀规则与既有规则库的语义一致性。
4.3 有益效果
- 高频意图近乎零成本: 约 70% 的高频意图在 L1 关键词加权直通阶段即命中,零 LLM Token 消耗、响应时延 < 100ms。
- 长尾仅少量调用 LLM: 实测仅约 5% 的长尾/模糊意图需要进入 L3 纯 LLM 兜底,综合 Token 成本较"全程 LLM"方案降低 90% 以上。
- 覆盖率不降反升: L2 用 LLM 做窄参数抽取、L3 做开放域兜底,结合
IntentClassifier多意图切分与SmartIntentRecognizer上下文补全,长尾与复合意图均可覆盖。 - 越用越聪明(自进化): 高频长尾意图经 5 次触发自动沉淀为规则,随运行时间推移 L1 命中率持续上升、LLM 调用率持续下降,形成成本随时间递减的正反馈。
- 可审计、可干预: 规则存储在
intent_rules表并支持热更新(config/ai-intent-config.js亦提供配置化意图),无需改源码即可新增/调整意图;识别过程分级可观测,安全工具经safeTools白名单与confirm_required双重控制。
5. 附图说明
图1 三级降级架构图: 自顶向下展示"用户输入"经 IntentEngine.recognize 调度:L1 关键词加权匹配模块(规则库 + 加权打分器 + 直通阈值判定)直接输出;未命中则分流至 L2(规则确定意图 + LLM 参数抽取 + 模板渲染)或 L3(纯 LLM 兜底,含 IntentClassifier 多意图切分、SmartIntentRecognizer 能力—类型—参数识别);L3 结果经频率计数与阈值判定回流至"规则沉淀"模块,沉淀规则进入规则库形成闭环。
图2 识别流程图: 以 recognize(message, context) 为起点:标准化消息 → 加载规则(DB+内置,优先级排序)→ 计算 SCOPE_VERB_BOOST 上下文加分 → 遍历规则加权打分(通用动词1/领域词3/lengthBonus/priorityBias/verbBoost)→ 取 bestScore → 判定 bestScore≥2?是则 _buildResult 按 scope 分支(identify/create/repair/optimize/compare/generate/tool_call)输出并依 need_llm/safeTools/confirm_required 决定直通或确认;否则 _unknownIntent 标记 level:L3, need_llm:true 进入兜底。
图3 置信度计算图: 展示 SmartIntentRecognizer._calcConfidence 的加权平均结构:输入为能力置信度(权重 0.4)、类型置信度(权重 0.6)、上下文补位加分(0.3,权重 0.2);经 total = Σ(score×weight)、weight = Σweight、confidence = round(total/weight, 2) 输出 0~1 综合置信度。
图4 规则沉淀时序图: 参与者为用户、IntentEngine、_incrementIntentFrequency、_intentFrequencyMap、_tryPrecipitateRule、intent_rules 表。序列为:L3 返回结果 → recognize 调用 _incrementIntentFrequency → 频率 Map 自增 → 判定 count ≥ 5 → setImmediate 异步调用 _tryPrecipitateRule → _findSimilarRule 查重 → 写入 intent_rules(need_llm=0)→ invalidateCache 热加载 → 后续同类请求在 L1 命中。
6. 具体实施方式
本实施例以"企业级数字员工平台(左帮右臂)"为例,结合真实代码说明三级降级方法的完整运行过程。涉及核心代码文件与类:server/core/intent-engine.js(IntentEngine)、server/core/intent-classifier.js(IntentClassifier)、server/core/smart-intent-recognizer.js(SmartIntentRecognizer)、server/core/rule-intent-interpreter.js(RuleIntentInterpreter)、server/core/prompt-template-manager.js(PromptTemplateManager)、server/routes/intent.js(路由层)、server/config/ai-intent-config.js(配置)。
步骤 S1:服务初始化与规则加载。 路由层 routes/intent.js 通过 getEngine(db) 获取 IntentEngine 单例并调用 initialize()(建 intent_rules 表)。getRules() 优先从 DB 读取 is_active=1 的规则(按 priority DESC 排序),并与 BUILTIN_INTENT_RULES 内置兜底合并(同 id 以 DB 为准),结果 1 分钟缓存(_cacheTTL = 60000)。
步骤 S2:L1 关键词加权直通。 接收 POST /api/intent/recognize 的 {message, context},调用 engine.recognize(message, context):
msg = message.toLowerCase().trim()
// 计算 SCOPE_VERB_BOOST 上下文动词加分(命中则 scopeBoostMap[scope]=4)
for rule in rules:
score = 0
for kw in rule.keywords:
if kw in msg:
isGeneric = GENERIC_VERBS.has(kw) // 通用动词
score += (isGeneric ? 1 : 3) + min(kw.length-1, 4) // 领域词3分+长度加分
if score>0:
priorityBias = min((rule.priority||5)-5, 5) // 优先级偏置
verbBoost = scopeBoostMap[rule.scope] || 0
finalScore = score + priorityBias + verbBoost
if finalScore > bestScore: bestScore,bestRule = finalScore,rule
if bestRule and bestScore >= 2:
return _buildResult(message, bestRule, bestScore, context) // L1 命中,零Token
else:
return _unknownIntent(message) // level=L3, need_llm=true
例如用户输入"查一下库存积压情况",命中 bi_inventory_identify 规则(关键词"库存""积压"),领域词加权 + 长度加分后 bestScore ≥ 2,直接返回 type: tool_call, tool_name: query_inventory_analysis,全程不调 LLM。
步骤 S3:L2 规则 + LLM 参数提取。 若 L1 命中但 rule.need_llm=true(如采购流程 proc_workflow),_buildResult 进入 tool_call 分支:先用 _extractParams 抽取 required_fields(如 product/quantity),缺失则返回 need_info 反问;齐备且非 safeTools 白名单或 confirm_required 时返回 confirm(L2 待确认)。其中 LLM 参数抽取通过 PromptTemplateManager.getTemplate(scope, itemType) 取得模板(DB 自定义优先于内置),buildPrompt 注入 schema 上下文后由 render 产出最终提示词,仅此窄任务消耗少量 Token。
步骤 S4:L3 纯 LLM 兜底与多意图识别。 recognize 返回 _unknownIntent 后,上游调用 IntentClassifier.classify:先 _splitMultiIntent 用连接词 MULTI_INTENT_CONNECTORS 切分复合句,逐子句 _keywordMatch(置信度 0.9 或 min(0.7, bestScore*0.2));不满足则 _llmFallback(置信度门槛 0.6)做开放域分类。同时 SmartIntentRecognizer.recognize 执行能力识别→类型识别→参数抽取→_calcConfidence(能力 0.4 / 类型 0.6 加权平均)得到结构化意图;recognizeWithContext 可结合最近 5 条历史回填类型/能力。
步骤 S5:规则自动沉淀闭环。 每次 L3 结果经 _incrementIntentFrequency 按 scope:tool:itemType 累频;达 _precipitateThreshold=5 次时 setImmediate 异步触发 _tryPrecipitateRule:先 _findSimilarRule 查重,无重复则写入 intent_rules(need_llm=0, priority=50, is_active=1),invalidateCache() 热加载。沉淀规则可经 GET /api/intent/precipitated-rules 查看、DELETE 删除。RuleIntentInterpreter.detectRuleConflicts 在规则库演进中检测数值/语气冲突并按 priorityOrder 裁决,保障沉淀规则语义一致。
步骤 S6:统计与可观测。 GET /api/intent/stats 汇总 IntentEngine.getStats()(按 scope/category 计数、缓存有效性)与模板数量,支撑运营成本监控。
7. 权利要求书草案
权利要求 1(独立权利要求)
一种基于规则与大模型混合的三级降级意图识别方法,其特征在于,包括以下步骤:
获取用户输入的自然语言指令及上下文;
提供包含多条意图规则的规则库,每条规则包含关键词集合、操作域 scope、优先级 priority 及是否需要大模型抽取参数的标记 need_llm;
执行第一级 L1 关键词加权匹配:对所述规则库中每条规则,遍历其关键词,若关键词命中用户输入,则按"通用动词计 1 分、领域词计 3 分、且按关键词长度附加长度加分(上限 4 分)"累加得到基础分,并叠加优先级偏置分与上下文意图动词加分得到最终得分,取最高最终得分对应规则;判断所述最高最终得分是否达到直通阈值(≥2 分),若是则不经大模型直接输出该规则对应的意图识别结果,否则进入下游级别;
执行第二级 L2 规则增强识别:当 L1 已确定意图类别但所述规则的 need_llm 标记为需要大模型时,调用大模型仅对用户输入做结构化参数抽取,并结合安全工具白名单与确认标记决定直接执行或返回待确认;
执行第三级 L3 纯大模型兜底推理:当 L1 未命中任何规则时,调用大模型对用户输入做开放域意图推理,处理长尾与模糊意图;
对 L3 识别出的高频意图进行频率计数,当累计频次达到预定阈值(默认 5 次)时,将该意图自动沉淀为一条 need_llm 标记为零的规则并热加载至所述规则库,使后续同类输入在 L1 即可命中。
权利要求 2(从属,限定 L1 加权)
根据权利要求 1 所述的方法,其特征在于,所述上下文意图动词加分通过预定义的"操作动词—操作域"映射实现:若用户输入命中某操作域对应的动词正则(例如"优化|降本|改善"对应 optimize 域、"对比|比较|vs"对应 compare 域、"创建|新建|录入"对应 create 域),则对该操作域下的规则额外加 4 分;所述优先级偏置分按 min((priority−5), 5) 计算,使高优先级意图在同分时优先命中。
权利要求 3(从属,限定 L2 参数提取与沉淀)
根据权利要求 1 所述的方法,其特征在于,所述第二级 L2 中,大模型参数抽取使用分层提示词模板:模板获取优先级为"数据库自定义模板(按对象类型精确匹配)> 数据库通用模板 > 内置模板",模板支持变量替换、列表循环与条件渲染以动态注入对象 schema 上下文;所述意图沉淀步骤包括:在写入规则前,按操作域与关键词重叠度查找已有相似规则进行去重,避免重复沉淀,并将沉淀规则的优先级设为低于内置规则。
权利要求 4(从属,限定 L3 与白名单)
根据权利要求 1 所述的方法,其特征在于,所述第三级 L3 包括:使用连接词集合对复合语句做多意图切分并逐子句识别后合并;以及使用能力识别与对象类型识别并采用加权平均计算综合置信度(能力权重 0.4、类型权重 0.6);在第二级 L2 的 tool_call 执行判定中,仅当工具属于预定义安全工具白名单且无需确认、无需大模型时方可自动执行,否则返回待用户确认状态,以保障写操作安全。
(本交底书所述技术方案均依据 sc5 左帮右臂规则+大模型混合意图识别系统 V1.0 真实代码撰写,所列类、函数、常量名与代码一致,可作为发明专利申请的技术依据。)
BossAgents