智能体意图识别的开发笔记

前言

如何能用最快,最简单的方法实现用户意图的精准识别、智能体任务的高效匹配与路由,并提供实时仲裁与权限控制能力?

设计系统通过 MySQL + Elasticsearch + 业务层管理服务 + 大模型推理,形成动态 prompt 构建、意图识别与响应统一管理体系。这个意图识别的架构目的是迎合业务层需要响应快,业务多变和未定的需求,实际有很多不完善的地方。


一、业务需求

  1. 意图精准识别:结合规则与大模型推理,理解用户指令,提取核心任务。
  2. 智能体匹配与路由:根据任务类型与智能体能力,实现自动路由。
  3. 实时仲裁与监督:保障多智能体并发任务执行中的一致性与稳定性。
  4. 可配置意图与路由:支持新增智能体、意图样例和权限的配置化管理。
  5. 动态 Prompt 构建:根据用户权限动态生成多智能体 Prompt,支持多样化调用。
  6. 高性能与可扩展性:支持缓存、异步队列、配置热更新,保证系统高并发性能。

二、技术方案

系统采用模块化设计,核心依赖如下:


三、架构设计

1. 系统总体架构

flowchart TD
    User[用户] -->|发起请求| BMS[业务层管理服务]
    BMS -->|权限过滤| IR[Intention Recognition Service]
    IR -->|查询智能体配置| MySQLDB[MySQL]
    IR -->|检索样例| ESDB[Elasticsearch]
    IR -->|构建Prompt并调用| LLM[大模型服务]
    LLM -->|意图编号| IR
    IR -->|映射意图名称| BMS
    BMS -->|路由任务| AgentPool[智能体池]

2. 核心功能模块

模块 功能描述
意图管理模块(MySQL) 管理智能体配置、意图信息,为 Prompt 构建提供数据源
意图库(ES) 存储用户 query、推理链条(CoT)及意图编号,支持样例推荐与检索
权限管理模块(业务层管理服务) 控制用户可访问智能体范围,传递权限信息给识别服务
意图识别服务 构建动态 Prompt、检索示例、调用大模型、映射意图编号并返回结果

3. 时序设计

sequenceDiagram
    participant User as 用户
    participant BMS as 业务层管理服务
    participant IR as 意图识别服务
    participant MySQL as MySQL
    participant ES as Elasticsearch
    participant LLM as 大模型服务

    User->>BMS: 发起意图识别请求
    BMS->>IR: 提交用户Query + 权限智能体列表
    IR->>MySQL: 查询智能体配置
    IR->>ES: 检索历史问答样例
    IR->>LLM: 构建Prompt并调用
    LLM-->>IR: 返回意图编号
    IR-->>BMS: 映射意图名称
    BMS->>User: 返回识别结果

4. Prompt 构建示例

目标:选择智能体的目标
智能体编号:1
智能体名称:智能体1
智能体描述:智能体1擅长文本分析
智能体编号:2
智能体名称:智能体2
智能体描述:智能体2擅长数据处理
用户指令:生成本周报告

四、意图识别流程

  1. 智能体配置

    • 管理员通过业务层管理服务配置智能体信息(存储 MySQL)
    • 提供相关问答样例(存储 ES)
  2. 用户请求

    • 系统检查用户权限
    • 生成可访问智能体列表,并提交给意图识别服务
  3. 识别执行

    • 查询 MySQL 构建 Prompt
    • 检索 ES 样例数据
    • 调用大模型完成意图推理
  4. 返回结果

    • 映射意图编号为意图名称
    • 返回给业务层管理服务进行任务路由

五、安全与治理


六、部署与监控


七、遇到的问题:

  1. 历史对话过多会让模型更容易产生幻觉
  2. 存在意图重叠的智能体
  3. 存在智能体不能回答所属意图的问题
  4. 高并发下大模型返回速度慢
  5. 相同的问题在0温度时还是会生成不同的意图
  6. 存在方言识别问题,例如,倒装句,反问句易识别错误
  7. 对需要上下文结合理解的问题,意图识别正确率低
  8. 业务层存在特殊问题的意图,不在大模型的理解能力范围内
  9. 无效的输入会被理解到意图
  10. 业务层原因,没能实现收到其他智能体的结果后修正意图的功能