當前位置: 妍妍網 > 碼農

基於AI大模型api實作的ChatGPT服務

2024-03-20碼農

計畫簡介

該計畫基於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

  • 演示

    已實作功能

    1. 多模型對話,支持ChatGPT(3.5、4.0)、文心一言(支持Stable-Diffusion-XL作圖)、通義千問、訊飛星火、智譜清言(ChatGLM)

    2. 支持後台配置及使用assistant模版,按指定prompt輸出

    3. 儲存歷史對話及聊天內容,可開啟/關閉根據上下文輸出

    4. 支持按使用次數或者開通會員使用,也可全域判斷不校驗使用次數及會員,電量贈送次數或者不校驗電量可在chat-master-admin中進行配置

    5. 支持分享功能(基礎上開發)

    6. 支持個人資訊修改

    待實作功能

    1. vip及svip開通功能

    2. 分享贈送次數功能

    3. 知識庫功能

    4. websocket響應(對接移動端)

    5. 繪畫

    6. 使用者上傳自己金鑰使用

    模型功能對比

    版本記錄請檢視這裏版本記錄

    模型 是否支持System 天氣查詢 繪畫
    ChatGPT 支持 不支持 支持
    文心一言 不支持(傳遞會報錯) 可以回復(不準) 使用Stable-Diffusion-XL
    通義千問 支持 支持(效果沒訊飛好) 未接入
    訊飛星火 支持 支持(準) 不支持
    智譜清言 支持 不支持 支持(API待接入目前有點貴)

    內建功能

    1. 工作台:整合多個套用和功能的系統頁面,該頁面主要為使用者提供快速存取、資訊聚會、個人化等功能。

    2. 數據中心:用於管理和分析系統數據的功能,向使用者提供直觀和易懂的資訊,方便使用者快速了解系統數據。

    3. 聊天管理:可以後台檢視所有模型回復內容。

    4. 訂單管理:可以接入充值贈送模型使用次數功能。

    5. 會員中心:檢視所有使用者資訊,及開通模型次數功能。

    6. 助手中心:配置Assistant分類及prompt資訊。

    7. 配置中心:配置系統可使用模型及移動端資訊配置。

    8. 系統管理:對系統中基礎業務進行管理維護。

    9. 系統監控:針對系統執行狀態進行檢視及定時任務配置管理

    環境搭建/執行&提示

    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

    框架特點

    1. 使用@RepeatSubmit(interval = 1000)註解對介面進行重復送出限制,interval預設值為5s內,可以自訂時間範圍。

    2. 使用@RateLimiter註解對介面進行限流。

    3. 使用@DataScope(deptAlias = "t1", userAlias = "t2")進行數據過濾。

    4. 使用@PreAuthorize("hasAuthority('system:config:remove')")註解可以對介面進行許可權校驗。

    5. 使用@Log(value = "重新整理系統設定緩存", type = SysLogTypeConstant.CONFIG, businessType = BusinessTypeEnum.CLEAN) 註解進行系統日誌儲存。

    6. 使用@DS("master")切換資料來源,優先方法高於類

    7. 引入阿裏巴巴easy-excel框架,輕松編寫匯出、匯入介面。

    8. 使用Lombok簡化java程式碼,省略getter、setter方法。(@Accessors(chain = true)支持鏈式操作)

    9. 完善的自動生成程式碼功能,增加DTO、Command、VO類。

    10. 獨立的定時任務列表管理功能。

    11. 支持多端登入或只能當前帳號登入功能,需要後台配置。

    12. 使用阿裏雲、騰訊雲物件儲存及簡訊功能,支持本地儲存。

    檢視原始碼地址,請關註微信公眾號,回復數位1001