悠然大模型工具链(UranMatrix)
大模型工具链主要基于大模型的能力开发出一套统一的框架。并基于该框架搭建整个工具链服务体系。对外(北向)提供
简单高效响应的接口,易于开发基于大模型的应用。对内(南向)屏蔽模型调用的细节,整体包括缓存管理,意图识别+插件调度,模型
调用链(记忆管理, 提示词管理,模型输出解析)。形成一整套完成的,结构清晰,易于管理维护,易于扩展的工具链体系结构。
体系结构
工作流程
Step1: 缓存管理
缓存系统主要用于减少模型调用的频次,降低系统的负担,提升响应速度。主要流程如下:
- 当用户请求到达时先对用户问题进行Embedding,然后到缓存组件(Redis/Milvus)中进行检索
- 讲检索后的结果进行相似度计算,然后排序筛选Ranking,如果命中,将答案返回,如果没有命中 调用UranMatrix执行整个推理调度流程
- 待UranMatrix返回后,为了能够提升命中率,将新问题进行Embedding,然后将embedding后的结果 连同问题答案一起存入缓存组件。
- 将最终结果返回到出去
Step2: UranMatrix推理调度
- 首先经过意图识别,意图识别对插件进行管理和调度, 意图识别决定流程走向,如NL2SQL的任务就直接提交到NL2SQL插件
- 对于一般的VQA问题,会直接提交到一个UranMMChain进行问题流程的调度
- UranMMChain首先会处理输入PrepareInputs将对话的历史从记忆体(Memory)中抽取出来
- 将会话历史数据提交提示词系统(PromptManager)进行提示词整合,形成可以提交给大模型 的问题输入
- 问题整合好后送入大模型推理,大模型推理的结果进行后向处理,缓存入记忆体中。
- 返回前依据实际应用调用OutputParser对相关信息进行处理后返回出去。
组件
- UranMMCacheController: 缓存控制器,缓存调度控制,决定是否命中与缓存的读写。
- Intent Recognition: 意图识别模块,对意图进行分类,然后选择对应的插件进行调用完成相关任务
- UranMMChain/UranAgent:推理流程调度模块,涉及历史数据组装,提示词组装,调用推理,结果解析
- PromptManager: 提示词管理,对于特定任务提示词的增删改查,加载。
- UranLargeModel: 对接大模型服务的统一接口封装,便于可以轻松的扩展第三方模型服务对接
- Plugins: 由意图或者大模型调用的插件组
技术细节补充
- 问答回复模块加上一些敏感词过滤
- Cache Layer改造成服务按需调用,目前主要方向为需要唯一答案而非创造性的使用,如数据库查询,同时可以快速标记正确答案。
- 知识库库插件除直接问答外,也可以提供其他插件使用。
Agent专项流程
对于更为复杂的任务,需要用到Agent的时候增对不同的Agent会有详细的调用流程,下面列出一些通用过程
- 对于Agent来说,最核心的需要加载特定的提示词,提示词里给出了模型必须返回的格式
- 对于模型返回的结果,Agent内部需要调用特定的OutputParser进行结果解析,然后决定 下一步的动作。
- Agent往往需要调用工具或插件(Plugins)完成任务,在调用工具以后要观察结果,加以合并再 继续任务。