計畫簡介
該計畫基於AI大模型api實作的自建後端Chat服務,支出同步響應及流式響應,完美呈現印表機效果。支持一鍵切換ChatGPT(3.5、4.0)模型、文心一言(支持Stable-Diffusion-XL作圖)、通義千問、訊飛星火、智譜清言(ChatGLM)等主流模型,後續模型持續對接中。計畫包含java伺服端、網頁端、移動端及管理後台配置。
基於AI大模型api實作的ChatGPT服務,支持一鍵切換ChatGPT(3.5、4.0)模型,文心一言(支持Stable-Diffusion-XL作圖)、通義千問、訊飛星火、智譜清言(ChatGLM)等主流模型,支出同步響應及流式響應,完美呈現印表機效果。
具體介紹:
支持文心一言Stable-Diffusion-XL作圖功能
內建了各種assistant模版,按指定prompt輸出,也可後台建立assistant模版
支持切換模型對話聊天,保存對話記錄及根據上下文輸出
管理端端采用Vue2、Element UI,Chat網頁端使用Vue3、TypeScript、NaiveUI進行開發
伺服端采用Spring Boot、Spring Security + JWT、Mybatis-Plus、Lombok、 Mysql & Redis,程式碼通俗易懂,上手即用
完善的許可權控制,許可權認證使用Jwt,支持多終端認證系統
管理端計畫,chat-master-admin
網頁端計畫,chat-master-web
移動端計畫,chat-master-uniapp
演示
已實作功能
多模型對話,支持ChatGPT(3.5、4.0)、文心一言(支持Stable-Diffusion-XL作圖)、通義千問、訊飛星火、智譜清言(ChatGLM)
支持後台配置及使用assistant模版,按指定prompt輸出
儲存歷史對話及聊天內容,可開啟/關閉根據上下文輸出
支持按使用次數或者開通會員使用,也可全域判斷不校驗使用次數及會員,電量贈送次數或者不校驗電量可在chat-master-admin中進行配置
支持分享功能(基礎上開發)
支持個人資訊修改
待實作功能
vip及svip開通功能
分享贈送次數功能
知識庫功能
websocket響應(對接移動端)
繪畫
使用者上傳自己金鑰使用
模型功能對比
版本記錄請檢視這裏版本記錄
模型 | 是否支持System | 天氣查詢 | 繪畫 |
---|---|---|---|
ChatGPT | 支持 | 不支持 | 支持 |
文心一言 | 不支持(傳遞會報錯) | 可以回復(不準) | 使用Stable-Diffusion-XL |
通義千問 | 支持 | 支持(效果沒訊飛好) | 未接入 |
訊飛星火 | 支持 | 支持(準) | 不支持 |
智譜清言 | 支持 | 不支持 | 支持(API待接入目前有點貴) |
內建功能
工作台:整合多個套用和功能的系統頁面,該頁面主要為使用者提供快速存取、資訊聚會、個人化等功能。
數據中心:用於管理和分析系統數據的功能,向使用者提供直觀和易懂的資訊,方便使用者快速了解系統數據。
聊天管理:可以後台檢視所有模型回復內容。
訂單管理:可以接入充值贈送模型使用次數功能。
會員中心:檢視所有使用者資訊,及開通模型次數功能。
助手中心:配置Assistant分類及prompt資訊。
配置中心:配置系統可使用模型及移動端資訊配置。
系統管理:對系統中基礎業務進行管理維護。
系統監控:針對系統執行狀態進行檢視及定時任務配置管理
環境搭建/執行&提示
ChatGPT需要在後台配置管理中進行站點配置或添加微信交流
1、idea匯入chat-master計畫,請更換spring.profiles.active為dev
2、執行doc資料夾下面chat_gpt全量sql檔,在gpt_model配置可執行模型資訊,在gpt_openkey配置模型金鑰資訊
3、版本更新時候需執行doc/update.sql
4、更改application-dev中redis連線和mysql連線配置
5、啟動ChatApplication中main方法
com.master.chat.api.base.config.InitBean 初始化模型
com.master.chat.gpt.service.IGptService 介面呼叫
com.master.chat.gpt.service.SseService sse呼叫
開發環境
工具 | 版本號 | 下載 |
---|---|---|
JDK | 1.8 | https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html |
Mysql | 5.7 | https://www.mysql.com/ |
Maven | 3.6.3 | https://maven.apache.org/ |
nginx | 1.10 | http://nginx.org/en/download.html | |
開發技術
技術 | 說明 | 官網 |
---|---|---|
Spring Boot | 容器+MVC框架 | https://spring.io/projects/spring-boot |
Spring Security Oauth2 | 認證和授權框架 | https://spring.io/projects/spring-security-oauth |
Lombok | 簡化Java開發 | https://github.com/JourWon/test-lombok |
Netty | 網路通訊框架 | https://github.com/JourWon/test-lombok |
JWT | JWT登入支持 | https://github.com/jwtk/jjwt |
MyBatis-plus | 程式碼生成、物理分頁 | https://baomidou.com/ |
dynamic-datasource | 多資料來源 | https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611 |
Redis | 分布式緩存 | https://redis.io/ |
Druid | 資料庫連線池 | https://github.com/alibaba/druid |
OSS | 物件儲存 | https://github.com/aliyun/aliyun-oss-java-sdk |
quartz | 定時任務 | https://github.com/quartz-scheduler/quartz |
框架特點
使用@RepeatSubmit(interval = 1000)註解對介面進行重復送出限制,interval預設值為5s內,可以自訂時間範圍。
使用@RateLimiter註解對介面進行限流。
使用@DataScope(deptAlias = "t1", userAlias = "t2")進行數據過濾。
使用@PreAuthorize("hasAuthority('system:config:remove')")註解可以對介面進行許可權校驗。
使用@Log(value = "重新整理系統設定緩存", type = SysLogTypeConstant.CONFIG, businessType = BusinessTypeEnum.CLEAN) 註解進行系統日誌儲存。
使用@DS("master")切換資料來源,優先方法高於類
引入阿裏巴巴easy-excel框架,輕松編寫匯出、匯入介面。
使用Lombok簡化java程式碼,省略getter、setter方法。(@Accessors(chain = true)支持鏈式操作)
完善的自動生成程式碼功能,增加DTO、Command、VO類。
獨立的定時任務列表管理功能。
支持多端登入或只能當前帳號登入功能,需要後台配置。
使用阿裏雲、騰訊雲物件儲存及簡訊功能,支持本地儲存。
檢視原始碼地址,請關註微信公眾號,回復數位1001