diff --git a/README.md b/README.md index dc7d09dd..4113b504 100644 --- a/README.md +++ b/README.md @@ -1,160 +1,62 @@ -# ChatGPT-Plus +# GeekAI-PLUS +基于 GeekAI 项目开发的高级版,增加了很多高级功能,比如思维导图,Dalle 绘画等。**高级版源码不会一次性开放,只提供镜像给大家免费使用**,源码会逐步逐步按照版同步迁移到[社区版(GeekAI)](https://github.com/yangjian102621/geekai)。所以如果大家想要二次开发,请移步去社区版。 -**ChatGPT-PLUS** 基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 OpenAI, Azure, -ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。集成了 MidJourney 和 Stable Diffusion AI绘画功能。 +## 演示站点 +[Geek-AI 创作系统](https://www.geekai.me) -主要特性: +## 文档地址 +[Geek-AI 文档](https://www.geekai.me/docs/) -- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。 -- 基于 Websocket 实现,完美的打字机体验。 -- 内置了各种预训练好的角色应用,比如小红书写手,英语翻译大师,苏格拉底,孔子,乔布斯,周报助手等。轻松满足你的各种聊天和应用需求。 -- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。 -- 支持 Suno 文生音乐 -- 支持 MidJourney / Stable Diffusion AI 绘画集成,文生图,图生图,换脸,融图。开箱即用。 -- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。 -- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。 -- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件,已内置实现了微博热搜,今日头条,今日早报和 AI - 绘画函数插件。 - -### 🚀 更多功能请查看 [Geek-AI](https://github.com/yangjian102621/geek-ai) - -- [x] 更友好的 UI 界面 -- [x] 支持 Dall-E 文生图功能 -- [x] 支持文生思维导图 -- [x] 支持为模型绑定指定的 API KEY,支持为角色绑定指定的模型等功能 -- [x] 支持网站 Logo 版权等信息的修改 +## 部署 +1. 安装 docker 和 docker-compose 程序,这个自行解决。 +2. 直接在项目根目录运行启动命令: + ```shell + docker-compose up -d + ``` ## 功能截图 - -### PC 端聊天界面 - -![ChatGPT Chat Page](/docs/imgs/gpt.gif) - -### AI 对话界面 - -![ChatGPT new Chat Page](/docs/imgs/chat-new.png) - +**!!!多图预警!!!** +### 首页 +![首页](imgs/home.png) +### 注册 +![注册](imgs/register.png) +### AI 对话 +![AI对话](imgs/chat.png) ### MidJourney 专业绘画界面 +![MJ绘画](imgs/mj-image.png) +![MJ绘画](imgs/mj-list.png) +### Stable-Diffusion 专业绘画 +![SD绘画](imgs/sd.png) +### DALLE 绘画 +![Dalle](imgs/dalle.png) -![mid-journey](/docs/imgs/mj_image.jpg) +### 画廊 +![画廊](imgs/img-wall.png) -### Stable-Diffusion 专业绘画页面 - -![Stable-Diffusion](/docs/imgs/sd_image.jpg) -![Stable-Diffusion](/docs/imgs/sd_image_detail.jpg) - -### 绘图作品展 - -![ChatGPT image_list](/docs/imgs/image-list.png) - -### AI应用列表 - -![ChatGPT-app-list](/docs/imgs/app-list.jpg) +### 思维导图 +![思维导图](imgs/markmap.png) ### 会员充值 - -![会员充值](/docs/imgs/member.png) - -### 自动调用函数插件 - -![ChatGPT function plugin](/docs/imgs/plugin.png) -![ChatGPT function plugin](/docs/imgs/mj.jpg) +![会员充值](imgs/member.png) ### 管理后台 +![管理后台](imgs/admin.png) +### 管理后台暗黑主题 +![深色主题](imgs/admin-dark.png) -![ChatGPT admin](/docs/imgs/admin_dashboard.png) -![ChatGPT admin](/docs/imgs/admin_config.jpg) -![ChatGPT admin](/docs/imgs/admin_models.jpg) -![ChatGPT admin](/docs/imgs/admin_user.png) +### H5 首页 +![H5首页](imgs/mobile-home.png) -### 移动端 Web 页面 +### H5 对话 +![对话列表](imgs/mobile-chat-list.png) +![对话列表](imgs/mobile-chat.png) -![Mobile chat list](/docs/imgs/mobile_chat_list.png) -![Mobile chat session](/docs/imgs/mobile_chat_session.png) -![Mobile chat setting](/docs/imgs/mobile_user_profile.png) -![Mobile chat setting](/docs/imgs/mobile_pay.png) +### H5 MidJourney 绘画 +![H5 MidJourney](imgs/mobile-mj.png) -### 体验地址 +### H5 Stable-Diffusion 绘画 +![H5 SD](imgs/mobile-sd.png) -> 免费体验地址:[https://ai.r9it.com/chat](https://ai.r9it.com/chat)
-> **注意:请合法使用,禁止输出任何敏感、不友好或违规的内容!!!** +### H5 会员充值 +![H5 Member](imgs/mobile-member.png) -## 快速部署 - -**演示站不提供任何充值点卡售卖或者VIP充值服务。** 如果您体验过后觉得还不错的话,可以花两分钟用下面的一键部署脚本自己部署一套。 - -```shell -bash -c "$(curl -fsSL https://img.r9it.com/tmp/install-v4.0.4-36d397add2.sh)" -``` - -最新版本的一键部署脚本请参考 [**ChatGPT-Plus 文档**](https://ai.r9it.com/docs/install/)。 - -目前仅支持 Ubuntu 和 Centos 系统。 部署成功之后可以访问下面地址 - -* 前端访问地址:http://localhost:8080/chat 使用移动设备访问会自动跳转到移动端页面。 -* 后台管理地址:http://localhost:8080/admin -* 移动端地址:http://localhost:8080/mobile -* 初始后台管理账号:admin/admin123 -* 初始前端体验账号:18575670125/12345678 - -服务启动成功之后不能立刻使用,需要先登录管理后台 -> API-KEY 去添加一个 OpenAI 或者文心一言,科大讯飞等至少一个平台的 API -KEY。 - -![](https://ai.r9it.com/docs/images/env/admin_api_keys.png) - -另外,如果您目前还没有 OpenAI 的 API KEY的,推荐您去 https://api.chat-plus.net 购买,**无需魔法,高速稳定,且价格还远低于 OpenAI -官方**。 - -## 使用须知 - -1. 本项目基于 Apache2.0 协议,免费开放全部源代码,可以作为个人学习使用或者商用。 -2. 如需商用必须保留版权信息,请自觉遵守。确保合法合规使用,在运营过程中产生的一切任何后果自负,与作者无关。 - -## 项目地址 - -* Github 地址:https://github.com/yangjian102621/chatgpt-plus -* 码云地址:https://gitee.com/blackfox/chatgpt-plus - -## 客户端下载 - -目前已经支持 Win/Linux/Mac/Android 客户端,下载地址为:https://github.com/yangjian102621/chatgpt-plus/releases/tag/v3.1.2 - -## TODOLIST - -* [ ] 支持基于知识库的 AI 问答 -* [ ] 会员邀请注册推广功能 -* [ ] 微信支付功能 - -## 项目文档 - -最新的部署视频教程:[https://www.bilibili.com/video/BV1Cc411t7CX/](https://www.bilibili.com/video/BV1Cc411t7CX/) - -详细的部署和开发文档请参考 [**ChatGPT-Plus 文档**](https://ai.r9it.com/docs/)。 - -加微信进入微信讨论群可获取 **一键部署脚本(添加好友时请注明来自Github!!!)。** - -![微信名片](docs/imgs/wx.png) - -## 参与贡献 - -个人的力量始终有限,任何形式的贡献都是欢迎的,包括但不限于贡献代码,优化文档,提交 issue 和 PR 等。 - -#### 特此声明:由于个人时间有限,不接受在微信或者微信群给开发者提 Bug,有问题或者优化建议请提交 Issue 和 PR。非常感谢您的配合! - -### Commit 类型 - -* feat: 新特性或功能 -* fix: 缺陷修复 -* docs: 文档更新 -* style: 代码风格或者组件样式更新 -* refactor: 代码重构,不引入新功能和缺陷修复 -* opt: 性能优化 -* chore: 一些不涉及到功能变动的小提交,比如修改文字表述,修改注释等 - -## 打赏 - -如果你觉得这个项目对你有帮助,并且情况允许的话,可以请作者喝杯咖啡,非常感谢你的支持~ - -![打赏](docs/imgs/donate.png) - -![Star History Chart](https://api.star-history.com/svg?repos=yangjian102621/chatgpt-plus&type=Date) diff --git a/deploy/conf/config.toml b/deploy/conf/config.toml index c47046ee..b76bc26f 100644 --- a/deploy/conf/config.toml +++ b/deploy/conf/config.toml @@ -1,106 +1,110 @@ Listen = "0.0.0.0:5678" -ProxyURL = "" # 如 http://127.0.0.1:7777 -MysqlDns = "root:12345678@tcp(chatgpt-plus-mysql:3306)/chatgpt_plus?charset=utf8mb4&collation=utf8mb4_unicode_ci&parseTime=True&loc=Local" -StaticDir = "./static" # 静态资源的目录 -StaticUrl = "/static" # 静态资源访问 URL +ProxyURL = "" +MysqlDns = "root:12345678@tcp(geekai-mysql:3306)/chatgpt_plus?charset=utf8mb4&collation=utf8mb4_unicode_ci&parseTime=True&loc=Local" +StaticDir = "./static" +StaticUrl = "/static" WeChatBot = false [Session] - SecretKey = "azyehq3ivunjhbntz78isj00i4hz2mt9xtddysfucxakadq4qbfrt0b7q3lnvg80" # 注意:这个是 JWT Token 授权密钥,生产环境请务必更换 + SecretKey = "azyehq3ivunjhbntz78isj00i4hz2mt9xtddysfucxakadq4qbfrt0b7q3lnvg80" MaxAge = 86400 [AdminSession] SecretKey = "wr1uzwz2meai4z9j0e0tsyf6x523ui6zpnyaim4x2x37meakv13349llqpipyk40" MaxAge = 8640000 -[Redis] # redis 配置信息 - Host = "chatgpt-plus-redis" +[Redis] + Host = "geekai-redis" Port = 6379 Password = "12345678" DB = 0 -[ApiConfig] # 微博热搜,今日头条等函数服务 API 配置,此为第三方插件服务,如需使用请联系作者开通 +[ApiConfig] ApiURL = "http://service.r9it.com:9001" AppId = "" Token = "" +[SMS] + Active = "Ali" + [SMS.Ali] + AccessKey = "" + AccessSecret = "" + Product = "Dysmsapi" + Domain = "dysmsapi.aliyuncs.com" + Sign = "" + CodeTempId = "" + [SMS.Bao] + Username = "" + Password = "" + Domain = "api.smsbao.com" + Sign = "【极客学长】" + CodeTemplate = "您的验证码是{code}。5分钟有效,若非本人操作,请忽略本短信。" -[SMS] # Sms 配置,用于发送短信 - Active = "Ali" # 当前启用的短信服务,默认使用阿里云 - [SMS.Bao] - Username = "" - Password = "" - Domain = "api.smsbao.com" - Sign = "【极客学长】" - CodeTemplate = "您的验证码是{code}。5分钟有效,若非本人操作,请忽略本短信。" - [SMS.Ali] - AccessKey = "" - AccessSecret = "" - Product = "Dysmsapi" - Domain = "dysmsapi.aliyuncs.com" - Sign = "" - CodeTempId = "" - -[OSS] # OSS 配置,用于存储 MJ 绘画图片 - Active = "Local" # 默认使用本地文件存储引擎 - [OSS.Local] - BasePath = "./static/upload" # 本地文件上传根路径 - BaseURL = "/static/upload" # 本地上传文件根 URL 如果是线上,则直接设置为 /static/upload 即可 - [OSS.Minio] - Endpoint = "" # 如 172.22.11.200:9000 - AccessKey = "" # 自己去 Minio 控制台去创建一个 Access Key - AccessSecret = "" - Bucket = "chatgpt-plus" # 替换为你自己创建的 Bucket,注意要给 Bucket 设置公开的读权限,否则会出现图片无法显示。 - UseSSL = false - Domain = "" # 地址必须是能够通过公网访问的,否则会出现图片无法显示。 - [OSS.QiNiu] # 七牛云 OSS 配置 - Zone = "z2" # 区域,z0:华东,z1: 华北,na0:北美,as0:新加坡 - AccessKey = "" - AccessSecret = "" - Bucket = "" - Domain = "" # OSS Bucket 所绑定的域名,如 https://img.r9it.com - [OSS.AliYun] - Endpoint = "oss-cn-hangzhou.aliyuncs.com" - AccessKey = "" - AccessSecret = "" - Bucket = "chatgpt-plus" - SubDir = "" - Domain = "" +[OSS] + Active = "Local" + [OSS.Local] + BasePath = "./static/upload" + BaseURL = "/static/upload" + [OSS.Minio] + Endpoint = "" + AccessKey = "" + AccessSecret = "" + Bucket = "geekai" + SubDir = "" + UseSSL = false + Domain = "" + [OSS.QiNiu] + Zone = "z2" + AccessKey = "" + AccessSecret = "" + Bucket = "" + SubDir = "" + Domain = "" + [OSS.AliYun] + Endpoint = "oss-cn-hangzhou.aliyuncs.com" + AccessKey = "" + AccessSecret = "" + Bucket = "geekai" + SubDir = "" + Domain = "" [[MjProxyConfigs]] - Enabled = true + Enabled = false ApiURL = "http://midjourney-proxy:8082" + Mode = "" ApiKey = "sk-geekmaster" [[MjPlusConfigs]] - Enabled = false - ApiURL = "https://api.chat-plus.net" - Mode = "fast" - ApiKey = "sk-xxx" + Enabled = false + ApiURL = "https://api.chat-plus.net" + Mode = "fast" + ApiKey = "sk-xxx" [[SdConfigs]] Enabled = false + Model = "" ApiURL = "" ApiKey = "" -[XXLConfig] # xxl-job 配置,需要你部署 XXL-JOB 定时任务工具,用来定期清理未支付订单和清理过期 VIP,如果你没有启用支付服务,则该服务也无需启动 - Enabled = true # 是否启用 XXL JOB 服务 - ServerAddr = "http://xxl-job-admin:8080/xxl-job-admin" # xxl-job-admin 管理地址 - ExecutorIp = "chatgpt-plus-api" # 执行器 IP 地址 +[XXLConfig] # xxl-job 配置,需要你部署 XXL-JOB 定时任务工具,用来定期清理未支付订单和清理过期 VIP,如果你没有启用支付服务,则该服务也无需启动 + Enabled = true # 是否启用 XXL JOB 服务 + ServerAddr = "http://xxl-job-admin:8080/xxl-job-admin" # xxl-job-admin 管理地址 + ExecutorIp = "geekai-api" # 执行器 IP 地址 ExecutorPort = "9999" # 执行器服务端口 - AccessToken = "GeekMaster" # 执行器 API 通信 token - RegistryKey = "chatgpt-plus" # 任务注册 key + AccessToken = "GeekMaster" # 执行器 API 通信 token + RegistryKey = "chatgpt-plus" # 任务注册 key,需要与 xxl-job 管理后台配置一致,请不要随意改动 [AlipayConfig] - Enabled = false # 启用支付宝支付通道 - SandBox = false # 是否启用沙盒模式 - UserId = "2088721020750581" # 商户ID - AppId = "9021000131658023" # App Id - PrivateKey = "certs/alipay/privateKey.txt" # 应用私钥 - PublicKey = "certs/alipay/appPublicCert.crt" # 应用公钥证书 - AlipayPublicKey = "certs/alipay/alipayPublicCert.crt" # 支付宝公钥证书 - RootCert = "certs/alipay/alipayRootCert.crt" # 支付宝根证书 - NotifyURL = "https://ai.r9it.com/api/payment/alipay/notify" # 支付异步回调地址 + Enabled = false + SandBox = false + AppId = "9021000131658023" + UserId = "2088721020750581" + PrivateKey = "certs/alipay/privateKey.txt" + PublicKey = "certs/alipay/appPublicCert.crt" + AlipayPublicKey = "certs/alipay/alipayPublicCert.crt" + RootCert = "certs/alipay/alipayRootCert.crt" + NotifyURL = "https://ai.r9it.com/api/payment/alipay/notify" + ReturnURL = "" [HuPiPayConfig] Enabled = false @@ -109,19 +113,21 @@ WeChatBot = false AppSecret = "" ApiURL = "https://api.xunhupay.com" NotifyURL = "https://ai.r9it.com/api/payment/hupipay/notify" + ReturnURL = "" -[SmtpConfig] # 注意,阿里云服务器禁用了25号端口,请使用 465 端口,并开启 TLS 连接 +[SmtpConfig] # 注意,阿里云服务器禁用了25号端口,请使用 465 端口,并开启 TLS 连接 UseTls = false Host = "smtp.163.com" Port = 25 AppName = "极客学长" - From = "test@163.com" # 发件邮箱人地址 - Password = "" #邮箱 stmp 服务授权码 + From = "test@163.com" # 发件邮箱人地址 + Password = "" #邮箱 stmp 服务授权码 -[JPayConfig] # PayJs 支付配置 +[JPayConfig] Enabled = false - Name = "wechat" # 请不要改动 - AppId = "" # 商户 ID + Name = "wechat" # 请不要改动 + AppId = "" # 商户 ID PrivateKey = "" # 秘钥 ApiURL = "https://payjs.cn" - NotifyURL = "https://ai.r9it.com/api/payment/payjs/notify" # 异步回调地址,域名改成你自己的 \ No newline at end of file + NotifyURL = "https://ai.r9it.com/api/payment/payjs/notify" + ReturnURL = "" diff --git a/deploy/conf/nginx/conf.d/chatgpt-plus.conf b/deploy/conf/nginx/conf.d/geekai.conf similarity index 92% rename from deploy/conf/nginx/conf.d/chatgpt-plus.conf rename to deploy/conf/nginx/conf.d/geekai.conf index e4d85e3a..1b8e5aba 100644 --- a/deploy/conf/nginx/conf.d/chatgpt-plus.conf +++ b/deploy/conf/nginx/conf.d/geekai.conf @@ -35,12 +35,12 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; - proxy_pass http://chatgpt-plus-api:5678; + proxy_pass http://geekai-api:5678; } # 静态资源转发 location /static/ { - proxy_pass http://chatgpt-plus-api:5678; + proxy_pass http://geekai-api:5678; } } } diff --git a/deploy/conf/xxl-job/application.properties b/deploy/conf/xxl-job/application.properties index b25e3fe1..ff4126e3 100644 --- a/deploy/conf/xxl-job/application.properties +++ b/deploy/conf/xxl-job/application.properties @@ -23,7 +23,7 @@ mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml #mybatis.type-aliases-package=com.xxl.job.admin.core.model ### xxl-job, datasource -spring.datasource.url=jdbc:mysql://chatgpt-plus-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai +spring.datasource.url=jdbc:mysql://geekai-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=12345678 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver diff --git a/deploy/docker-compose.yaml b/deploy/docker-compose.yaml index 7b9a204b..860baffe 100644 --- a/deploy/docker-compose.yaml +++ b/deploy/docker-compose.yaml @@ -1,9 +1,9 @@ version: '3' services: # mysql - chatgpt-plus-mysql: + geekai-mysql: image: mysql:8.0.33 - container_name: chatgpt-plus-mysql + container_name: geekai-mysql command: --default-authentication-plugin=mysql_native_password restart: always environment: @@ -15,12 +15,12 @@ services: - ./data/mysql/data:/var/lib/mysql - ./logs/mysql:/var/log/mysql - ./data/mysql/init.d:/docker-entrypoint-initdb.d/ - - # redis - chatgpt-plus-redis: + + # redis + geekai-redis: image: redis:6.0.16 - restart: always - container_name: chatgpt-plus-redis + restart: always + container_name: geekai-redis command: redis-server --requirepass 12345678 volumes : - ./data/redis:/data @@ -52,14 +52,13 @@ services: # 后端 API 程序 - chatgpt-plus-api: - image: registry.cn-shenzhen.aliyuncs.com/geekmaster/chatgpt-plus-api:v4.0.4-amd64 - container_name: chatgpt-plus-api + geekai-api: + image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:v4.0.7-amd64 + container_name: geekai-api restart: always depends_on: - - chatgpt-plus-mysql - - chatgpt-plus-redis - - xxl-job-admin + - geekai-mysql + - geekai-redis environment: - DEBUG=false - LOG_LEVEL=info @@ -75,12 +74,12 @@ services: - ./data/leveldb:/var/www/app/data # 前端应用 - chatgpt-plus-web: - image: registry.cn-shenzhen.aliyuncs.com/geekmaster/chatgpt-plus-web:v4.0.4-amd64 - container_name: chatgpt-plus-web + geekai-web: + image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:v4.0.7-amd64 + container_name: geekai-web restart: always depends_on: - - chatgpt-plus-api + - geekai-api ports: - "8080:8080" volumes: diff --git a/web/package.json b/web/package.json index dcd7ab6a..a38dc236 100644 --- a/web/package.json +++ b/web/package.json @@ -1,5 +1,5 @@ { - "name": "chatgpt-plus-web", + "name": "geekai-web", "version": "0.1.0", "private": true, "scripts": {