Professional Documents
Culture Documents
基于多模态多AI模型的有限状态机框架
基于多模态多AI模型的有限状态机框架
Framework)
前言
随着目前大模型的进化,在各个领域,各个模态都有着各个模型在涌现,同时超级大语言
模型,如 ChatGPT 等在各领域文本生成领域产生了惊人的生产力。然而当前缺乏对多个 AI
模型进行整合、串联以松耦合的方式调用的框架。仅仅有个别框架以串行链的方式进行调
用,在系统开发的复杂度、可维护性、可扩展性上都有极大的缺陷。
总体架构图如下所示:
该架构由以下几个部分组成:
1. Client,即服务调用方,通过 Gateway 像服务发送请求,和接收响应。
2. Gateway,提供对外服务的接口,接收外部请求,发布到系统内部请求队列。Gateway
和 Client 通信协议是匹配的。最简单的就是 HTTP 轮询,支持多种灵活协议。对于
3. Request Dispatcher,请求调度器。从请求队列里面拿到消息,根据 FST Configuration 的
配置,决定将消息继续转发到下一个消息队列中。 Request Dispatcher 可以是静态的,
也可以通过扩展,以条件概率的形式进行跳转。(后面有其他文档进行说明)
4. FST Configuration,保存每一个业务的消息流转配置。可以是确定性的流程,也可以是
概率跳转。修改一个业务的 FST 跳转配置,会直接改变请求在各个服务中流转的流程。
5. Cache,用于保存每个请求当前的上下文信息。通过 requestID 来存取,用于在服务流
程中各个环节进行数据传递。这里我们选择 Redis 作为缓存。
6. Service,每个 Service 仅负责单一业务。Service 实例启动的时候,订阅该 Service 生命
的的 Topic,从该 Topic 获得请求之后,从 Cache 里面拿到该请求当前上下文数据,业
务完成之后,将请求完成消息发布到 Request Topic 里面,由 Request Dispatcher 继续调
度。Service 对所用的编程语言不敏感,业务方可以根据自己的需求选择开发语言,只
要可以与消息队列和缓存交互即可。
7. 消息队列用于保存消息,只需要支持多订阅即可。这里我们用 RabbitMQ 作为消息队列。
消息体结构设计
消息体结构决定了框架具备的功能和框架的能力。消息体结构分为两个部分:
1. Cache 中的结构
Cache 用于在会话过程中,做数据传递。也可被 Dispatcher 获取,用于决定转发策略的
输入参数。
下面分以下几个部分,详细讲述请求流转的流程。
1, Client-Gateway 交互