7 Star 48 Fork 41

Angus / chat-plus

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

作者最近忙其他项目,本项目暂时不更新,大概6月份会恢复更新,有新需求或者问题请加群讨论

项目介绍

本项目是重构 chatgpt-plus 的后端Java重构版

体验地址

体验地址:https://ai.anshangba.com 体验账号:18888888888/12345678

文档地址:https://doc.anshangba.com/ 文档没那么全,等待后续补充

镜像仓库地址:docker.io/chj9/chat-plus-java:latest

本项目前端地址 https://gitee.com/hongjie95/chatgpt-plus 请使用 chat-plus-java 分支打包编译前端包,main分支保持和主仓库代码一致

执行以下命令打包前端项目

npm run build

并结合nginx把dist的文件目录放到前端服务器上即可

项目讨论

如有问题加群讨论

或者加作者微信: tulingai88 请备注:chat-plus

img.png

项目技术

  • Springboot 3
  • JDK 21
  • Mybatis
  • MySQL
  • Redis
  • Websocket
  • ElasticSearch(已接入,默认关闭,未实际使用,后续看功能使用)

项目结构

接口文档地址: http://127.0.0.1:8080/swagger-ui/index.html

├─application-api # 业务数据模型模块
├─application-app # 业务接口Controller模块
├─application-dao # 业务DAO模块
├─application-openai-sdk # 各家的机器人SDK对接模块,统一入参出参
├─application-service # 业务服务层模块
│    └─aiprocessor # 核心模块,对接open ai sdk 的方式,以及发消息的处理
├─core # 核心模块
│  ├─common # 公共模块
│  ├─datasource # 数据源模块
│  ├─elasticsearch # es配置模块
│  ├─job # 定时任务模块
│  ├─file # 文件模块
│  ├─json # json序列化配置模块
│  └─web # web配置,和拦截器过滤器相关模块
└─tools # 代码生成工具模块
    └─code-generator

已完成功能

用户首页

  • 用户登录、注册、修改密码
  • 用户信息修改、用户邀请码功能
  • 图形码人机验证、短信验证码
  • ChatGPT机器人聊天 && 函数调用
  • 文心一言机器人聊天 && 函数调用
  • 讯飞星火机器人聊天 && 函数调用
  • ChatGLM机器人聊天
  • 阿里通义千问机器人聊天
  • Stable Diffusion绘画、Midjourney绘画
  • 邀请码注册
  • 新增敏感词库,对用户输入敏感词检测过滤
  • 接口审计日志
  • 支付宝微信支付原生支付
  • 订单下单
  • 用户扣费逻辑
  • 函数模块:函数DEMO,另外新增了:今日早报,微博热搜,dalle3画图
  • 系统配置中心: 短信、邮件、微信支付宝支付配置、百度翻译配置、微信公众号配置、审计日志配置、告警配置

管理员后台

  • 仪表盘
  • 用户管理
  • 角色管理
  • API-KEY
  • 语言模型
  • 充值产品
  • 充值订单
  • 函数管理
  • 系统设置
  • 用户登录日志

OPEN AI SDK 架构

img.png

详细介绍 https://bugstack.cn/md/zsxq/project/openai-sdk-java.html 我这边代码复制过来,做了大量的修改和兼容,可能和原项目有所不同

注意事项

  1. 本项目使用的是Java 21,如果你的Java版本不是21,请自行兼容修改
  2. 本项目使用的是Gradle 8构建,如果你不会使用Gradle,请自行学习
  3. 本项目修改和新增了原项目的数据库表名,和部分字段名和类型,如果你想使用原项目的数据库,请自行修改

本地开发

  1. 克隆本项目到本地
    git clone https://gitee.com/hongjie95/chat-plus.git
  2. 使用IDEA打开本项目
  3. 执行SQL文件/doc/chat-plus.sql,创建数据库和表,初始化数据,管理员账户:18888888888/12345678
  4. 修改application.yml中的spring.profiles
    spring:
      profiles: 
        group:
          default:
            - dev
          local:
            - local
          prod:
            - prod
          production:
            - production
        active: default
    根据选择的环境,修改spring.profiles.active的值,如devlocalprodproduction
  5. 修改application-dev.yml中的数据库配置,Redis配置

部署方式

相关文件都在doc文件夹下面了 fonts包主要是中文字体,生成图片验证码的时候用到

  1. 打包jar包

    如果本地没有环境,推荐切个release分支,然后开通Gitee的ci流水线,ci脚本在.workflow/release-pipeline.yml目录下, 代码提交了会自动编译打jar包,下载制品即可

    本地打包命令

    ./gradlew --build-cache clean -Dorg.gradle.console=plain :application-app:bootJar -PbootJarArchiveId=app

    jar包打包完成后,会在application-app/build/libs目录下生成app.jar文件

  2. 创建Dockerfile文件,这里我打包的配置文件后缀为prod,所以线上我的配置文件为application-prod.yml

  3. 构建Docker镜像

    docker build -t chj9/chat-plus-java:latest .
  4. 创建docker-compose.yml文件

  5. 执行数据库脚本,数据库脚本在doc文件夹下,默认数据库名为chat-plus,如果你的数据库名不是chat-plus,请自行修改 默认管理员账号:15302789406/123456,由表t_user的字段admin控制,1为管理员,0为普通用户

  6. 部署XXL-JOB 以下是我的部署方法,如果你已经部署有了请忽略此步骤

    version: "3"
    services:
      xxl_job:
        image: xuxueli/xxl-job-admin:2.4.0
        container_name: xxl-job
        restart: on-failure:3
        volumes:
          - /etc/localtime:/etc/localtime:ro
        ports:
          - "8099:8080"
        environment:
          - PARAMS=--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=xxxx --xxl.job.accessToken=xxxx
          - JAVA_TOOL_OPTIONS=-XX:InitialRAMPercentage=40.0 -XX:MinRAMPercentage=20.0 -XX:MaxRAMPercentage=80.0
        deploy:
         resources:
            limits:
               memory: 1024m
            reservations:
               memory: 512m

    注意修改数据库地址和--xxl.job.accessToken的值

  7. 配置XXL-JOB定时任务

    1. 登录XXL-JOB后台
    2. 配置执行器img_1.png img_1.png
    3. 配置任务执行器img_1.png
    4. 配置任务调度(目前暂时只有三个定时任务)
    任务描述: 用户订阅定时任务	
    调度周期: 0 0/2 * * * ?
    运行模式:UserSubsTaskJob#subsJob
    任务描述: 支付结果定时任务		
    调度周期: 0 0/1 * * * ?
    运行模式:PayTaskJob#payResultJob
    任务描述: 订单结果定时任务		
    调度周期: 0 0/1 * * * ?
    运行模式:OrderTaskJob#orderResultJob
    1. 分别每个点击执行一次,应用日志正常会打印以下日志img_1.png

使用须知

本项目基于 MIT 协议,免费开放全部源代码,可以作为个人学习使用或者商用。 如需商用必须保留版权信息,请自觉遵守。确保合法合规使用,在运营过程中产生的一切任何后果自负,与作者无关。

MIT License Copyright (c) 2023 Angus Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

AI 大语言模型 API 实现的 AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 OpenAI, Azure, ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。集成了 MidJourney 和 Stable Diffusion AI绘画功能 展开 收起
Java 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/hongjie95/chat-plus.git
git@gitee.com:hongjie95/chat-plus.git
hongjie95
chat-plus
chat-plus
master

搜索帮助