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)- 存储设计