3.9 KiB
3.9 KiB
AI意图识别系统
概述
系统现在使用AI大模型来理解用户的自然语言输入,而不是依赖固定的正则表达式匹配。这使得用户可以用更自然、更灵活的方式与系统交互。
工作流程
- 用户输入 → 用户在AI对话框中输入自然语言指令
- AI意图识别 → 系统调用大模型(DeepSeek/通义千问)理解用户意图
- 结构化输出 → AI返回JSON格式的指令和参数
- 执行指令 → 系统根据识别结果执行相应操作
- 回退机制 → 如果AI识别失败,自动回退到原有的正则匹配
支持的指令类型
1. 导航类指令
goWarning- 打开预警中心goProfile- 打开个体画像goComprehensive- 打开综合报告goInterventionTask- 打开干预任务goReport- 打开报告列表/详情goMessage- 打开消息/收件箱goNotice- 打开通知公告goDashboard- 打开监区看板goTagFilter- 打开标签筛选goVoice- 打开语音助手
2. 分析类指令
analyzeReport- 分析报告analyzeProfile- 分析个体画像analyzeData- 分析平台数据
3. 控制类指令
clearChat- 清空对话记录toggleChat- 展开/收起对话框goBack- 返回上一页goHome- 返回首页
使用示例
原来的方式(正则匹配)
用户输入:"打开张三的报告"
系统:使用正则 /打开\s*([^\s的]{1,32})\s*的?报告/ 匹配
结果:✅ 能识别
用户输入:"帮我看看张三的报告"
系统:正则无法匹配
结果:❌ 无法识别
现在的方式(AI理解)
用户输入:"打开张三的报告"
AI理解:用户想查看张三的报告
返回:{"action":"goReport","params":{"keyword":"张三"},"confidence":0.95}
结果:✅ 能识别
用户输入:"帮我看看张三的报告"
AI理解:用户想查看张三的报告
返回:{"action":"goReport","params":{"keyword":"张三"},"confidence":0.9}
结果:✅ 能识别
用户输入:"我想了解一下李四的情况"
AI理解:用户想查看李四的个体画像
返回:{"action":"goProfile","params":{"keyword":"李四"},"confidence":0.85}
结果:✅ 能识别
用户输入:"有没有严重的预警需要处理"
AI理解:用户想查看严重级别的预警
返回:{"action":"goWarning","params":{"warningLevel":"严重"},"confidence":0.9}
结果:✅ 能识别
优势
- 更自然的交互 - 用户可以用日常语言表达需求
- 更强的容错性 - 不需要记住精确的指令格式
- 更好的扩展性 - 添加新指令只需更新配置,无需写正则
- 智能参数提取 - AI自动从语句中提取关键信息
- 回退保障 - AI识别失败时自动使用原有的正则匹配
技术实现
核心方法
-
parseUserIntentWithAI(userInput) - AI意图识别
- 输入:用户的自然语言
- 输出:结构化的指令JSON
- 使用:DeepSeek API / 通义千问 API
-
executeAIIntent(intent) - 执行识别出的指令
- 输入:AI返回的指令JSON
- 输出:是否成功执行
- 功能:根据action和params执行相应操作
-
sendAiChat() - 修改后的消息发送方法
- 先尝试AI意图识别
- 识别成功则执行指令
- 识别失败则回退到正则匹配
AI Prompt设计
系统使用精心设计的prompt来引导AI:
- 明确定义所有可用指令
- 要求返回标准JSON格式
- 包含置信度评分
- 提供示例来提高准确性
置信度阈值
- 置信度 >= 0.6:执行指令
- 置信度 < 0.6:忽略结果,回退到正则匹配
配置
AI意图识别使用与AI对话相同的配置:
- DeepSeek API(默认)
- 通义千问 API(可选)
无需额外配置,开箱即用。
未来扩展
- 支持多轮对话上下文
- 支持复合指令(一次执行多个操作)
- 支持模糊查询和智能推荐
- 支持自定义指令学习