Skip to content

悠然大模型工具链(UranMatrix)

大模型工具链主要基于大模型的能力开发出一套统一的框架。并基于该框架搭建整个工具链服务体系。对外(北向)提供

简单高效响应的接口,易于开发基于大模型的应用。对内(南向)屏蔽模型调用的细节,整体包括缓存管理,意图识别+插件调度,模型

调用链(记忆管理, 提示词管理,模型输出解析)。形成一整套完成的,结构清晰,易于管理维护,易于扩展的工具链体系结构。

体系结构

system_structure

工作流程

Step1: 缓存管理

缓存系统主要用于减少模型调用的频次,降低系统的负担,提升响应速度。主要流程如下:

  1. 当用户请求到达时先对用户问题进行Embedding,然后到缓存组件(Redis/Milvus)中进行检索
  2. 讲检索后的结果进行相似度计算,然后排序筛选Ranking,如果命中,将答案返回,如果没有命中 调用UranMatrix执行整个推理调度流程
  3. 待UranMatrix返回后,为了能够提升命中率,将新问题进行Embedding,然后将embedding后的结果 连同问题答案一起存入缓存组件。
  4. 将最终结果返回到出去

Step2: UranMatrix推理调度

  1. 首先经过意图识别,意图识别对插件进行管理和调度, 意图识别决定流程走向,如NL2SQL的任务就直接提交到NL2SQL插件
  2. 对于一般的VQA问题,会直接提交到一个UranMMChain进行问题流程的调度
  3. UranMMChain首先会处理输入PrepareInputs将对话的历史从记忆体(Memory)中抽取出来
  4. 将会话历史数据提交提示词系统(PromptManager)进行提示词整合,形成可以提交给大模型 的问题输入
  5. 问题整合好后送入大模型推理,大模型推理的结果进行后向处理,缓存入记忆体中。
  6. 返回前依据实际应用调用OutputParser对相关信息进行处理后返回出去。

组件

  • UranMMCacheController: 缓存控制器,缓存调度控制,决定是否命中与缓存的读写。
  • Intent Recognition: 意图识别模块,对意图进行分类,然后选择对应的插件进行调用完成相关任务
  • UranMMChain/UranAgent:推理流程调度模块,涉及历史数据组装,提示词组装,调用推理,结果解析
  • PromptManager: 提示词管理,对于特定任务提示词的增删改查,加载。
  • UranLargeModel: 对接大模型服务的统一接口封装,便于可以轻松的扩展第三方模型服务对接
  • Plugins: 由意图或者大模型调用的插件组

技术细节补充

  • 问答回复模块加上一些敏感词过滤
  • Cache Layer改造成服务按需调用,目前主要方向为需要唯一答案而非创造性的使用,如数据库查询,同时可以快速标记正确答案。
  • 知识库库插件除直接问答外,也可以提供其他插件使用。

Agent专项流程

对于更为复杂的任务,需要用到Agent的时候增对不同的Agent会有详细的调用流程,下面列出一些通用过程

  1. 对于Agent来说,最核心的需要加载特定的提示词,提示词里给出了模型必须返回的格式
  2. 对于模型返回的结果,Agent内部需要调用特定的OutputParser进行结果解析,然后决定 下一步的动作。
  3. Agent往往需要调用工具或插件(Plugins)完成任务,在调用工具以后要观察结果,加以合并再 继续任务。