AI Model Hub:一个高效的大模型应用开发集成框架(1)

AI Model Hub 是Java开发一个大模型应用集成框架,它通过对接各大模型厂商的 OPEN API,将数据转换成统一格式,适配前端各种场景展示,同时实现模型的匹配切换、上下文构建、知识库调用、三方插件调用、Prompt 构建、数据存储等功能,加速模型应用的落地开发。在本文中,我们将详细介绍 AI Model Hub 的整体框架功能和结构,后续会使用该框架,开发一款包含个人知识库、三方插件、聊天历史的本地AI助手。

快速开始

github

https://github.com/flower-trees/ai-model-hub

环境要求

在开始使用 AI Model Hub 之前,我们需要确保开发和运行此项目所需的环境和依赖项都已安装。

JDK

AI Model Hub 需要 OpenJDK 17 或更高版本。

构建工具

项目使用 Maven 3.6.3 或更高版本作为构建工具。

依赖项

项目中使用的主要库和框架包括:

  • Spring Boot 3.2.6
  • MySQL Connector 8.0.33
依赖系统

本地启动如下服务:

  • MySQL 8.0.27+
  • Redis 6.2.6+
环境变量

在运行项目之前,需要设置使用模型访问秘钥到环境变量:

export CHATGPT_KEY=your_chatgpt_key
export DOUBAO_KEY=your_doubao_key
请求实例

以下是一个使用 agent 区分不同模型调用的请求示例:

curl --location 'http://127.0.0.1:8080/ai-model-hub/ai/stream/chat' \
--header 'Content-Type: application/json' \
--data '{
    "agent": "1",
    "content": "介绍一下军博,使用20个汉字以内"
}'

架构图

在这里插入图片描述

模块概述

AI Model Hub 的架构设计包含多个模块,每个模块负责不同的功能。以下是各模块的详细介绍:

Controller

Controller 模块负责对接前端协议,实现流式打字机效果,如:stream、sse、websocket。

此模块可以根据落地的实际情况扩展。

Service

Service 模块处理通用功能,包括:ID 生成、Process匹配和调用、Model的匹配和调用

此模块可以实现配置化,后续扩展数据库配置,实现配置化扩展

Process

Process 模型调用前后处理流程,主要是Prompt构建流程和模型处理后流程,模块分为 Up 和 Down 两个子模块:

  • Up 模块处理调用模型前的操作,如:模型厂商和模型名称匹配、对话上下文构建、知识库查询、三方插件调用等,最终构建 Prompt。
  • Down 模块处理调用模型后的操作,如保模型答案。

此模块可以通过扩展接口,实现不同的处理流程,后续引入流程编排扩展形式。

Model

Model 对接具体的模型厂商,主要是数据结构的适配,模块包含两个子模块:

  • Actuator:将通用参数化转化为具体模型厂商参数化,并调用模型。
  • Listener:将模型的返回数据转换为通用响应数据,并回写前端。

此模块会后续逐步集成更多大模型厂商。

Client

Client 模块负责对接具体模型厂商的接口,主要是网络协议的适配,如 stream、sse、websocket 等。

此模块后续根据对接的大模型厂商协议扩展。

数据层

MySQL和Redis,主要存储Agent配置和用户聊天记录等,为模型及厂商匹配、对话上下文构建提供支持。

Structs

提供统一的前端对接数据集结构,支持markdown打字机效果、图片、音视频、选择卡片等各类回复形式。

项目结构

以下是 AI Model Hub 的项目结构:

ai-model-hub/
│
├── src/
│   └── main/
│       ├── java/
│       │   └── org/
│       │       └── salt/
│       │           └── ai/
│       │               └── hub/
│       │                   ├── models.ai/
│       │                   │   ├── aliyun/
│       │                   │   ├── chatgpt/
│       │                   │   │   ├── dto/
│       │                   │   │   │   ├── ChatGPTRequest.java
│       │                   │   │   │   └── ChatGPTResponse.java
│       │                   │   │   ├── ChatGPTActuator.java
│       │                   │   │   └── ChatGPTListener.java
│       │                   │   ├── doubao/
│       │                   │   ├── moonshot/
│       │                   │   └── enums/
│       │                   │       └── VendorType.java
│       │                   ├── chat/
│       │                   │   ├── controller/
│       │                   │   │   ├── ChatSseController.java
│       │                   │   │   └── ChatStreamController.java
│       │                   │   ├── process/
│       │                   │   │   └── SimpleContextProcess.java
│       │                   │   └── service/
│       │                   │       └── ChatService.java
│       │                   ├── data/
│       │                   └── frame/
│       │                       ├── chat/
│       │                       │   ├── client/
│       │                       │   │   └── stream/
│       │                       │   │       └── HttpStreamClient.java
│       │                       │   ├── front/
│       │                       │   │   ├── sse/
│       │                       │   │   │   └── SseResponse.java
│       │                       │   │   └── stream/
│       │                       │   │       └── StreamResponse.java
│       │                       │   ├── model/
│       │                       │   │   ├── AiChatActuator.java
│       │                       │   │   ├── ListenerStrategy.java
│       │                       │   │   └── DoListener.java
│       │                       │   ├── process/
│       │                       │   │   ├── ChatProcess.java
│       │                       │   └── structs/
│       │                       ├── config/
│       │                       └── utils/
│       └── resources/
│           └── application.yml
│           └── application-dev.yml
│           └── logback.xml
│
├── pom.xml
├── README.md
├── README_CN.md
├── LICENSE
└── .gitignore

功能列表

AI Model Hub 支持对接多个模型厂商,当前支持的模型包括:

  • ChatGPT
  • DouBao
  • QWen(阿里云)
  • Moonshot
  • Ollama

通过上述功能和架构设计,AI Model Hub 提供了一个高效、灵活的开发平台,帮助开发者快速集成和应用各大模型厂商的服务,加速人工智能应用的落地。

系列文章:
AI Model Hub:一个高效的大模型应用开发集成框架(2)- 对接本地llama3
AI Model Hub:一个高效的大模型应用开发集成框架(3)- 存储设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值