mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-12-25 17:45:58 +08:00
Compare commits
83 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79adc871ef | ||
|
|
8144fada25 | ||
|
|
754ba02263 | ||
|
|
7ddf57ae06 | ||
|
|
cc5180a6f7 | ||
|
|
9f44c34d34 | ||
|
|
b793b81768 | ||
|
|
233f6e00f0 | ||
|
|
b7dba68549 | ||
|
|
bdea12c51a | ||
|
|
a27d9ea259 | ||
|
|
7cd824c284 | ||
|
|
e27d95e2b5 | ||
|
|
6839827db0 | ||
|
|
d6a04f96fe | ||
|
|
5f820b9dc1 | ||
|
|
6788edbe9d | ||
|
|
3895305882 | ||
|
|
c2acbaaa94 | ||
|
|
4a99be2f15 | ||
|
|
27c816cf3b | ||
|
|
0d81776212 | ||
|
|
cccab31c0f | ||
|
|
4ddf3bf2bf | ||
|
|
3d37a3d367 | ||
|
|
73d8236697 | ||
|
|
3c34e8e0e7 | ||
|
|
922202734a | ||
|
|
b270960a04 | ||
|
|
5c4899df6e | ||
|
|
2f0215ac87 | ||
|
|
dd5cc206e5 | ||
|
|
657ecccee3 | ||
|
|
2e023cb8dc | ||
|
|
e933f32d9c | ||
|
|
0b2501c1d8 | ||
|
|
c1d892069e | ||
|
|
bda335212d | ||
|
|
06f4cdc649 | ||
|
|
9bf7fa4081 | ||
|
|
4ca9dfd9c0 | ||
|
|
adfee8bf58 | ||
|
|
fbfa2a71a9 | ||
|
|
a7237fe62f | ||
|
|
c3c454b7d7 | ||
|
|
d4d708d44b | ||
|
|
7f0b6a3a46 | ||
|
|
c2a7c089d2 | ||
|
|
df5bd4df60 | ||
|
|
79b6010104 | ||
|
|
97b0a98793 | ||
|
|
d900a3d08e | ||
|
|
cdf5b66729 | ||
|
|
a6c00c42fa | ||
|
|
be8a0ec184 | ||
|
|
b02e3aad95 | ||
|
|
08eca511ad | ||
|
|
c34e911596 | ||
|
|
8a452c3072 | ||
|
|
13bfb14107 | ||
|
|
4188b0969e | ||
|
|
0c27795a10 | ||
|
|
d05693c5c1 | ||
|
|
c0b2063b38 | ||
|
|
4d183747b1 | ||
|
|
08fe1b2f75 | ||
|
|
db3e8a267e | ||
|
|
8fc62682c4 | ||
|
|
75031914a3 | ||
|
|
a4c9fdd95a | ||
|
|
6a9bfeb5aa | ||
|
|
e654766f60 | ||
|
|
0ef6955f96 | ||
|
|
b4501557c9 | ||
|
|
a2ed99e6cb | ||
|
|
6bd6bb3885 | ||
|
|
399cf65fc9 | ||
|
|
24906a6df1 | ||
|
|
d772bbebe6 | ||
|
|
14988853a3 | ||
|
|
7b3f16ac9f | ||
|
|
82b2755c18 | ||
|
|
4e4dc4cb73 |
2
.github/ISSUE_TEMPLATE/1.bug.yml
vendored
2
.github/ISSUE_TEMPLATE/1.bug.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
name: Bug 报告 🐛
|
name: Bug 报告 🐛
|
||||||
description: 为 chatgpt-plus 提交错误报告
|
description: 为 geekai 提交错误报告
|
||||||
labels: ['Bug']
|
labels: ['Bug']
|
||||||
body:
|
body:
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/2.feature.yml
vendored
2
.github/ISSUE_TEMPLATE/2.feature.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
name: 功能优化 🚀
|
name: 功能优化 🚀
|
||||||
description: 为 chatgpt-plus 提交优化建议
|
description: 为 geekai 提交优化建议
|
||||||
labels: ['feature']
|
labels: ['feature']
|
||||||
body:
|
body:
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
## v4.0.7
|
## v4.0.7
|
||||||
|
|
||||||
|
* 功能优化:升级quic-go,支持 Go1.21
|
||||||
* 功能优化:添加导航菜单的时候支持框入外部链接,并支持上传自定义菜单图片
|
* 功能优化:添加导航菜单的时候支持框入外部链接,并支持上传自定义菜单图片
|
||||||
* Bug修复:修复弹窗等于图形验证码一直验证失败的问题
|
* Bug修复:修复弹窗等于图形验证码一直验证失败的问题
|
||||||
* 功能重构:重构前端 UI 页面,增加顶部导航
|
* 功能重构:重构前端 UI 页面,增加顶部导航
|
||||||
|
|||||||
124
README.md
124
README.md
@@ -1,62 +1,92 @@
|
|||||||
# GeekAI-PLUS
|
# GeekAI
|
||||||
基于 GeekAI 项目开发的高级版,增加了很多高级功能,比如思维导图,Dalle 绘画等。**高级版源码不会一次性开放,只提供镜像给大家免费使用**,源码会逐步逐步按照版同步迁移到[社区版(GeekAI)](https://github.com/yangjian102621/geekai)。所以如果大家想要二次开发,请移步去社区版。
|
> 根据[《生成式人工智能服务管理暂行办法》](https://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm)的要求,请勿对中国地区公众提供一切未经备案的生成式人工智能服务。
|
||||||
|
|
||||||
## 演示站点
|
**GeekAI** 基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 OpenAI, Azure,
|
||||||
[Geek-AI 创作系统](https://www.geekai.me)
|
ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。集成了 MidJourney 和 Stable Diffusion AI绘画功能。
|
||||||
|
|
||||||
## 文档地址
|
主要特性:
|
||||||
[Geek-AI 文档](https://www.geekai.me/docs/)
|
|
||||||
|
|
||||||
## 部署
|
- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。
|
||||||
1. 安装 docker 和 docker-compose 程序,这个自行解决。
|
- 基于 Websocket 实现,完美的打字机体验。
|
||||||
2. 直接在项目根目录运行启动命令:
|
- 内置了各种预训练好的角色应用,比如小红书写手,英语翻译大师,苏格拉底,孔子,乔布斯,周报助手等。轻松满足你的各种聊天和应用需求。
|
||||||
```shell
|
- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。
|
||||||
docker-compose up -d
|
- 支持 Suno 文生音乐
|
||||||
```
|
- 支持 MidJourney / Stable Diffusion AI 绘画集成,文生图,图生图,换脸,融图。开箱即用。
|
||||||
|
- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。
|
||||||
|
- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。
|
||||||
|
- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件,已内置实现了微博热搜,今日头条,今日早报和 AI
|
||||||
|
绘画函数插件。
|
||||||
|
|
||||||
|
### 🚀 更多功能请查看 [GeekAI-PLUS](https://github.com/yangjian102621/geekai-plus)
|
||||||
|
|
||||||
|
- [x] 更友好的 UI 界面
|
||||||
|
- [x] 支持 Dall-E 文生图功能
|
||||||
|
- [x] 支持文生思维导图
|
||||||
|
- [x] 支持为模型绑定指定的 API KEY,支持为角色绑定指定的模型等功能
|
||||||
|
- [x] 支持网站 Logo 版权等信息的修改
|
||||||
|
|
||||||
## 功能截图
|
## 功能截图
|
||||||
**!!!多图预警!!!**
|
请参考 [GeekAI 项目介绍](https://docs.geekai.me/info/)。
|
||||||
### 首页
|
|
||||||

|
|
||||||
### 注册
|
|
||||||

|
|
||||||
### AI 对话
|
|
||||||

|
|
||||||
### MidJourney 专业绘画界面
|
|
||||||

|
|
||||||

|
|
||||||
### Stable-Diffusion 专业绘画
|
|
||||||

|
|
||||||
### DALLE 绘画
|
|
||||||

|
|
||||||
|
|
||||||
### 画廊
|
### 体验地址
|
||||||

|
|
||||||
|
|
||||||
### 思维导图
|
> 免费体验地址:[https://chat.geekai.me](https://chat.geekai.me) <br/>
|
||||||

|
> **注意:请合法使用,禁止输出任何敏感、不友好或违规的内容!!!**
|
||||||
|
|
||||||
### 会员充值
|
## 快速部署
|
||||||

|
|
||||||
|
|
||||||
### 管理后台
|
请参考文档 [**GeekAI 快速部署**](https://docs.geekai.me/install/)。
|
||||||

|
|
||||||
### 管理后台暗黑主题
|
|
||||||

|
|
||||||
|
|
||||||
### H5 首页
|
## 使用须知
|
||||||

|
|
||||||
|
|
||||||
### H5 对话
|
1. 本项目基于 Apache2.0 协议,免费开放全部源代码,可以作为个人学习使用或者商用。
|
||||||

|
2. 如需商用必须保留版权信息,请自觉遵守。确保合法合规使用,在运营过程中产生的一切任何后果自负,与作者无关。
|
||||||

|
|
||||||
|
|
||||||
### H5 MidJourney 绘画
|
## 项目地址
|
||||||

|
|
||||||
|
|
||||||
### H5 Stable-Diffusion 绘画
|
* Github 地址:https://github.com/yangjian102621/geekai
|
||||||

|
* 码云地址:https://gitee.com/blackfox/geekai
|
||||||
|
|
||||||
### H5 会员充值
|
## 客户端下载
|
||||||

|
|
||||||
|
|
||||||
|
目前已经支持 Win/Linux/Mac/Android 客户端,下载地址为:https://github.com/yangjian102621/geekai/releases/tag/v3.1.2
|
||||||
|
|
||||||
|
## TODOLIST
|
||||||
|
|
||||||
|
* [ ] 支持基于知识库的 AI 问答
|
||||||
|
* [ ] 文生视频,文生歌曲功能
|
||||||
|
* [ ] 微信支付功能
|
||||||
|
|
||||||
|
## 项目文档
|
||||||
|
|
||||||
|
最新的部署视频教程:[https://www.bilibili.com/video/BV1Cc411t7CX/](https://www.bilibili.com/video/BV1Cc411t7CX/)
|
||||||
|
|
||||||
|
详细的部署和开发文档请参考 [**GeekAI 文档**](https://docs.geekai.me)。
|
||||||
|
|
||||||
|
加微信进入微信讨论群可获取 **一键部署脚本(添加好友时请注明来自Github!!!)。**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 参与贡献
|
||||||
|
|
||||||
|
个人的力量始终有限,任何形式的贡献都是欢迎的,包括但不限于贡献代码,优化文档,提交 issue 和 PR 等。
|
||||||
|
|
||||||
|
#### 特此声明:由于个人时间有限,不接受在微信或者微信群给开发者提 Bug,有问题或者优化建议请提交 Issue 和 PR。非常感谢您的配合!
|
||||||
|
|
||||||
|
### Commit 类型
|
||||||
|
|
||||||
|
* feat: 新特性或功能
|
||||||
|
* fix: 缺陷修复
|
||||||
|
* docs: 文档更新
|
||||||
|
* style: 代码风格或者组件样式更新
|
||||||
|
* refactor: 代码重构,不引入新功能和缺陷修复
|
||||||
|
* opt: 性能优化
|
||||||
|
* chore: 一些不涉及到功能变动的小提交,比如修改文字表述,修改注释等
|
||||||
|
|
||||||
|
## 打赏
|
||||||
|
|
||||||
|
如果你觉得这个项目对你有帮助,并且情况允许的话,可以请作者喝杯咖啡,非常感谢你的支持~
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|||||||
@@ -44,8 +44,8 @@ require (
|
|||||||
github.com/go-pay/xtime v0.0.2 // indirect
|
github.com/go-pay/xtime v0.0.2 // indirect
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect
|
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect
|
||||||
github.com/tklauser/go-sysconf v0.3.13 // indirect
|
github.com/tklauser/go-sysconf v0.3.14 // indirect
|
||||||
github.com/tklauser/numcpus v0.7.0 // indirect
|
github.com/tklauser/numcpus v0.8.0 // indirect
|
||||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||||
go.uber.org/mock v0.4.0 // indirect
|
go.uber.org/mock v0.4.0 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -212,10 +212,10 @@ github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gt
|
|||||||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
|
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
|
||||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
||||||
github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4=
|
github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
|
||||||
github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0=
|
github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
|
||||||
github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4=
|
github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
|
||||||
github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY=
|
github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||||
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
|
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
|
||||||
|
|||||||
@@ -8,16 +8,13 @@ package service
|
|||||||
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"geekai/core"
|
"geekai/core"
|
||||||
"geekai/core/types"
|
"geekai/core/types"
|
||||||
"geekai/store"
|
"geekai/store"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/imroc/req/v3"
|
"github.com/imroc/req/v3"
|
||||||
"github.com/shirou/gopsutil/host"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type LicenseService struct {
|
type LicenseService struct {
|
||||||
@@ -30,18 +27,11 @@ type LicenseService struct {
|
|||||||
|
|
||||||
func NewLicenseService(server *core.AppServer, levelDB *store.LevelDB) *LicenseService {
|
func NewLicenseService(server *core.AppServer, levelDB *store.LevelDB) *LicenseService {
|
||||||
var license types.License
|
var license types.License
|
||||||
var machineId string
|
|
||||||
_ = levelDB.Get(types.LicenseKey, &license)
|
|
||||||
info, err := host.Info()
|
|
||||||
if err == nil {
|
|
||||||
machineId = info.HostID
|
|
||||||
}
|
|
||||||
logger.Infof("License: %+v", license)
|
|
||||||
return &LicenseService{
|
return &LicenseService{
|
||||||
config: server.Config.ApiConfig,
|
config: server.Config.ApiConfig,
|
||||||
levelDB: levelDB,
|
levelDB: levelDB,
|
||||||
license: &license,
|
license: &license,
|
||||||
machineId: machineId,
|
machineId: "",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,30 +109,33 @@ func (s *LicenseService) SyncLicense() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *LicenseService) fetchLicense() (*types.License, error) {
|
func (s *LicenseService) fetchLicense() (*types.License, error) {
|
||||||
var res struct {
|
//var res struct {
|
||||||
Code types.BizCode `json:"code"`
|
// Code types.BizCode `json:"code"`
|
||||||
Message string `json:"message"`
|
// Message string `json:"message"`
|
||||||
Data License `json:"data"`
|
// Data License `json:"data"`
|
||||||
}
|
//}
|
||||||
apiURL := fmt.Sprintf("%s/%s", s.config.ApiURL, "api/license/check")
|
//apiURL := fmt.Sprintf("%s/%s", s.config.ApiURL, "api/license/check")
|
||||||
response, err := req.C().R().
|
//response, err := req.C().R().
|
||||||
SetBody(map[string]string{"license": s.license.Key, "machine_id": s.machineId}).
|
// SetBody(map[string]string{"license": s.license.Key, "machine_id": s.machineId}).
|
||||||
SetSuccessResult(&res).Post(apiURL)
|
// SetSuccessResult(&res).Post(apiURL)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
return nil, fmt.Errorf("发送激活请求失败: %v", err)
|
// return nil, fmt.Errorf("发送激活请求失败: %v", err)
|
||||||
}
|
//}
|
||||||
if response.IsErrorState() {
|
//if response.IsErrorState() {
|
||||||
return nil, fmt.Errorf("激活失败:%v", response.Status)
|
// return nil, fmt.Errorf("激活失败:%v", response.Status)
|
||||||
}
|
//}
|
||||||
if res.Code != types.Success {
|
//if res.Code != types.Success {
|
||||||
return nil, fmt.Errorf("激活失败:%v", res.Message)
|
// return nil, fmt.Errorf("激活失败:%v", res.Message)
|
||||||
}
|
//}
|
||||||
|
|
||||||
return &types.License{
|
return &types.License{
|
||||||
Key: res.Data.License,
|
Key: "abc",
|
||||||
MachineId: res.Data.MachineId,
|
MachineId: "abc",
|
||||||
Configs: res.Data.Configs,
|
Configs: types.LicenseConfig{
|
||||||
ExpiredAt: res.Data.ExpiredAt,
|
UserNum: 10000,
|
||||||
|
DeCopy: false,
|
||||||
|
},
|
||||||
|
ExpiredAt: 0,
|
||||||
IsActive: true,
|
IsActive: true,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
@@ -176,28 +169,29 @@ func (s *LicenseService) GetLicense() *types.License {
|
|||||||
// IsValidApiURL 判断是否合法的中转 URL
|
// IsValidApiURL 判断是否合法的中转 URL
|
||||||
func (s *LicenseService) IsValidApiURL(uri string) error {
|
func (s *LicenseService) IsValidApiURL(uri string) error {
|
||||||
// 获得许可授权的直接放行
|
// 获得许可授权的直接放行
|
||||||
if s.license.IsActive {
|
return nil
|
||||||
if s.license.MachineId != s.machineId {
|
//if s.license.IsActive {
|
||||||
return errors.New("系统使用了盗版的许可证书")
|
// if s.license.MachineId != s.machineId {
|
||||||
}
|
// return errors.New("系统使用了盗版的许可证书")
|
||||||
|
// }
|
||||||
if time.Now().Unix() > s.license.ExpiredAt {
|
//
|
||||||
return errors.New("系统许可证书已经过期")
|
// if time.Now().Unix() > s.license.ExpiredAt {
|
||||||
}
|
// return errors.New("系统许可证书已经过期")
|
||||||
return nil
|
// }
|
||||||
}
|
// return nil
|
||||||
|
//}
|
||||||
if len(s.urlWhiteList) == 0 {
|
//
|
||||||
urls, err := s.fetchUrlWhiteList()
|
//if len(s.urlWhiteList) == 0 {
|
||||||
if err == nil {
|
// urls, err := s.fetchUrlWhiteList()
|
||||||
s.urlWhiteList = urls
|
// if err == nil {
|
||||||
}
|
// s.urlWhiteList = urls
|
||||||
}
|
// }
|
||||||
|
//}
|
||||||
for _, v := range s.urlWhiteList {
|
//
|
||||||
if strings.HasPrefix(uri, v) {
|
//for _, v := range s.urlWhiteList {
|
||||||
return nil
|
// if strings.HasPrefix(uri, v) {
|
||||||
}
|
// return nil
|
||||||
}
|
// }
|
||||||
return fmt.Errorf("当前 API 地址 %s 不在白名单列表当中。", uri)
|
//}
|
||||||
|
//return fmt.Errorf("当前 API 地址 %s 不在白名单列表当中。", uri)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,15 +14,15 @@ npm run build
|
|||||||
cd ../build
|
cd ../build
|
||||||
|
|
||||||
# remove docker image if exists
|
# remove docker image if exists
|
||||||
docker rmi -f registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-api:$version-$arch
|
docker rmi -f registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:$version-$arch
|
||||||
# build docker image for Geek-AI API
|
# build docker image for geekai-go
|
||||||
docker build -t registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-api:$version-$arch -f dockerfile-api-go ../
|
docker build -t registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:$version-$arch -f dockerfile-api-go ../
|
||||||
|
|
||||||
# build docker image for Geek-AI-web
|
# build docker image for geekai-web
|
||||||
docker rmi -f registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-web:$version-$arch
|
docker rmi -f registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:$version-$arch
|
||||||
docker build -t registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-web:$version-$arch -f dockerfile-vue ../
|
docker build -t registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:$version-$arch -f dockerfile-vue ../
|
||||||
|
|
||||||
if [ "$3" = "push" ];then
|
if [ "$3" = "push" ];then
|
||||||
docker push registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-api:$version-$arch
|
docker push registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:$version-$arch
|
||||||
docker push registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-web:$version-$arch
|
docker push registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:$version-$arch
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
-- https://www.phpmyadmin.net/
|
-- https://www.phpmyadmin.net/
|
||||||
--
|
--
|
||||||
-- 主机: localhost:3307
|
-- 主机: localhost:3307
|
||||||
-- 生成日期: 2024-03-29 17:26:02
|
-- 生成日期: 2024-04-07 10:30:00
|
||||||
-- 服务器版本: 8.0.33
|
-- 服务器版本: 8.0.33
|
||||||
-- PHP 版本: 8.1.18
|
-- PHP 版本: 8.1.18
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ CREATE TABLE `chatgpt_admin_users` (
|
|||||||
--
|
--
|
||||||
|
|
||||||
INSERT INTO `chatgpt_admin_users` (`id`, `username`, `password`, `salt`, `status`, `last_login_at`, `last_login_ip`, `created_at`, `updated_at`) VALUES
|
INSERT INTO `chatgpt_admin_users` (`id`, `username`, `password`, `salt`, `status`, `last_login_at`, `last_login_ip`, `created_at`, `updated_at`) VALUES
|
||||||
(1, 'admin', '6d17e80c87d209efb84ca4b2e0824f549d09fac8b2e1cc698de5bb5e1d75dfd0', 'mmrql75o', 1, 1711704342, '::1', '2024-03-11 16:30:20', '2024-03-29 17:25:42'),
|
(1, 'admin', '6d17e80c87d209efb84ca4b2e0824f549d09fac8b2e1cc698de5bb5e1d75dfd0', 'mmrql75o', 1, 1712456145, '::1', '2024-03-11 16:30:20', '2024-04-07 10:15:45'),
|
||||||
(108, 'test', '9ed720ce03e0a69885455271b4b3e1710bff79434f2a95d0de6406dd88cc9f79', '4b9orqjh', 0, 1710396975, '::1', '2024-03-13 16:06:43', '2024-03-21 15:15:04');
|
(108, 'test', '9ed720ce03e0a69885455271b4b3e1710bff79434f2a95d0de6406dd88cc9f79', '4b9orqjh', 0, 1710396975, '::1', '2024-03-13 16:06:43', '2024-03-21 15:15:04');
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
@@ -158,7 +158,8 @@ INSERT INTO `chatgpt_chat_models` (`id`, `platform`, `name`, `value`, `sort_num`
|
|||||||
(19, 'QWen', '通义千问-Max', 'qwen-max-1201', 9, 1, 1, 1.0, 1024, 32768, 1, '2024-01-19 10:51:03', '2024-03-18 14:27:19'),
|
(19, 'QWen', '通义千问-Max', 'qwen-max-1201', 9, 1, 1, 1.0, 1024, 32768, 1, '2024-01-19 10:51:03', '2024-03-18 14:27:19'),
|
||||||
(21, 'OpenAI', '董宇辉小作文助手', 'gpt-4-gizmo-g-dse9iXvor', 6, 1, 30, 1.0, 8192, 32768, 0, '2024-03-18 14:24:20', '2024-03-18 14:27:19'),
|
(21, 'OpenAI', '董宇辉小作文助手', 'gpt-4-gizmo-g-dse9iXvor', 6, 1, 30, 1.0, 8192, 32768, 0, '2024-03-18 14:24:20', '2024-03-18 14:27:19'),
|
||||||
(22, 'OpenAI', 'LOGO生成神器', 'gpt-4-gizmo-g-YL87j8C7S', 0, 1, 30, 1.0, 1024, 4096, 1, '2024-03-20 14:02:11', '2024-03-20 14:02:18'),
|
(22, 'OpenAI', 'LOGO生成神器', 'gpt-4-gizmo-g-YL87j8C7S', 0, 1, 30, 1.0, 1024, 4096, 1, '2024-03-20 14:02:11', '2024-03-20 14:02:18'),
|
||||||
(23, 'OpenAI', '音乐生成器', 'suno-v3', 0, 1, 50, 0.8, 1024, 4096, 1, '2024-03-29 15:43:40', '2024-03-29 15:45:15');
|
(23, 'OpenAI', '音乐生成器', 'suno-v3', 0, 1, 50, 0.8, 1024, 4096, 1, '2024-03-29 15:43:40', '2024-03-29 15:45:15'),
|
||||||
|
(24, 'OpenAI', '通义千问(中转)', 'qwen-plus', 0, 1, 0, 1.0, 1024, 4096, 1, '2024-04-03 12:00:46', '2024-04-03 12:00:46');
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
@@ -221,8 +222,8 @@ CREATE TABLE `chatgpt_configs` (
|
|||||||
--
|
--
|
||||||
|
|
||||||
INSERT INTO `chatgpt_configs` (`id`, `marker`, `config_json`) VALUES
|
INSERT INTO `chatgpt_configs` (`id`, `marker`, `config_json`) VALUES
|
||||||
(1, 'system', '{\"title\":\"ChatPlus AI 智能助手\",\"admin_title\":\"ChatPlus 控制台\",\"logo\":\"http://localhost:5678/static/upload/2024/3/1711334798556619.png\",\"init_power\":100,\"daily_power\":99,\"invite_power\":10,\"vip_month_power\":1000,\"register_ways\":[\"mobile\",\"username\",\"email\"],\"enabled_register\":true,\"reward_img\":\"http://localhost:5678/static/upload/2024/3/1710753716309668.jpg\",\"enabled_reward\":true,\"power_price\":0.1,\"order_pay_timeout\":1800,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[11,7,1,10,12,19,18,17,3],\"mj_power\":20,\"mj_action_power\":10,\"sd_power\":5,\"dall_power\":15,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4}'),
|
(1, 'system', '{\"title\":\"Geek-AI创作系统\",\"admin_title\":\"Geek-AI控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"daily_power\":99,\"invite_power\":10,\"vip_month_power\":1000,\"register_ways\":[\"mobile\",\"username\",\"email\"],\"enabled_register\":true,\"reward_img\":\"http://localhost:5678/static/upload/2024/3/1710753716309668.jpg\",\"enabled_reward\":true,\"power_price\":0.1,\"order_pay_timeout\":1800,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[11,7,1,10,12,19,18,17,3],\"mj_power\":20,\"mj_action_power\":10,\"sd_power\":5,\"dall_power\":15,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4}'),
|
||||||
(3, 'notice', '{\"content\":\"系统每日会给免费会员赠送10算力值,用完请第二天再来领取。\\n## v4.0.1 更新日志\\n* 功能重构:重构 Stable-Diffusion 绘画实现,使用 SDAPI 替换之前的 websocket 接口,SDAPI 兼容各种 stable-diffusion 发行版,稳定性更强一些\\n* 功能优化:使用 [midjouney-proxy](https://github.com/novicezk/midjourney-proxy) 项目替换内置的原生 MidJourney API,兼容 MJ-Plus 中转\\n* 功能新增:用户算力消费日志增加统计功能,统计一段时间内用户消费的算力\\n* Bug修复:修复 iphone 手机无法通过图形验证码的Bug,使用滑动验证码替换\\n* Bug修复:修复手机端 MidJourney 绘画页面滚动条无法滚动的Bug\\n\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e (支持MidJourney,GPT,Claude,Google Gemmi 各种表格模型) 或者 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e(不支持 Midjourney) 购买,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://ai.r9it.com/docs/install/errors-handle.html#%E8%B0%83%E7%94%A8%E4%B8%AD%E8%BD%AC-api-%E6%8A%A5%E9%94%99%E6%97%A0%E5%8F%AF%E7%94%A8%E6%B8%A0%E9%81%93)。\\nGPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://ai.r9it.com/docs/install/\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://ai.r9it.com/docs/install/\\u003c/a\\u003e\\n\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/chatgpt-plus\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/chatgpt-plus\\u003c/a\\u003e\",\"updated\":true}');
|
(3, 'notice', '{\"content\":\"系统每日会给免费会员赠送10算力值,用完请第二天再来领取。\\n## v4.0.2 更新日志\\n* 功能新增:支持前端菜单可以配置\\n* 功能优化:在登录和注册界面标题显示软件版本号\\n* 功能优化:MJ 绘画支持 --sref 和 --cref 图片一致性参数\\n* 功能优化:使用 leveldb 解决 SD 绘图进度图片预览问题\\n* Bug修复:解决因为图片上传使用相对路径而导致融图失败的问题\\n* 功能新增:手机端支持 Stable-Diffusion 绘画\\n* Bug修复:修复管理后台 API KEY 删除失败的问题\\n\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e (支持MidJourney,GPT,Claude,Google Gemmi 各种表格模型) 或者 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e(不支持 Midjourney) 购买,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://ai.r9it.com/docs/install/errors-handle.html#%E8%B0%83%E7%94%A8%E4%B8%AD%E8%BD%AC-api-%E6%8A%A5%E9%94%99%E6%97%A0%E5%8F%AF%E7%94%A8%E6%B8%A0%E9%81%93)。\\nGPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://ai.r9it.com/docs/install/\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://ai.r9it.com/docs/install/\\u003c/a\\u003e\\n\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/chatgpt-plus\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/chatgpt-plus\\u003c/a\\u003e\",\"updated\":true}');
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
@@ -265,9 +266,9 @@ CREATE TABLE `chatgpt_functions` (
|
|||||||
--
|
--
|
||||||
|
|
||||||
INSERT INTO `chatgpt_functions` (`id`, `name`, `label`, `description`, `parameters`, `token`, `action`, `enabled`) VALUES
|
INSERT INTO `chatgpt_functions` (`id`, `name`, `label`, `description`, `parameters`, `token`, `action`, `enabled`) VALUES
|
||||||
(1, 'weibo', '微博热搜', '新浪微博热搜榜,微博当日热搜榜单', '{\"type\":\"object\",\"properties\":{}}', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmVkIjowLCJ1c2VyX2lkIjowfQ.tLAGkF8XWh_G-oQzevpIodsswtPByBLoAZDz_eWuBgw', 'http://localhost:5678/api/function/weibo', 1),
|
(1, 'weibo', '微博热搜', '新浪微博热搜榜,微博当日热搜榜单', '{\"type\":\"object\",\"properties\":{}}', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmVkIjowLCJ1c2VyX2lkIjowfQ.tLAGkF8XWh_G-oQzevpIodsswtPByBLoAZDz_eWuBgw', 'http://localhost:5678/api/function/weibo', 0),
|
||||||
(2, 'zaobao', '今日早报', '每日早报,获取当天新闻事件列表', '{\"type\":\"object\",\"properties\":{}}', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmVkIjowLCJ1c2VyX2lkIjowfQ.tLAGkF8XWh_G-oQzevpIodsswtPByBLoAZDz_eWuBgw', 'http://localhost:5678/api/function/zaobao', 1),
|
(2, 'zaobao', '今日早报', '每日早报,获取当天新闻事件列表', '{\"type\":\"object\",\"properties\":{}}', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmVkIjowLCJ1c2VyX2lkIjowfQ.tLAGkF8XWh_G-oQzevpIodsswtPByBLoAZDz_eWuBgw', 'http://localhost:5678/api/function/zaobao', 0),
|
||||||
(3, 'dalle3', 'DALLE3', 'AI 绘画工具,根据输入的绘图描述用 AI 工具进行绘画', '{\"type\":\"object\",\"required\":[\"prompt\"],\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"绘画提示词\"}}}', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmVkIjowLCJ1c2VyX2lkIjowfQ.tLAGkF8XWh_G-oQzevpIodsswtPByBLoAZDz_eWuBgw', 'http://localhost:5678/api/function/dalle3', 1);
|
(3, 'dalle3', 'DALLE3', 'AI 绘画工具,根据输入的绘图描述用 AI 工具进行绘画', '{\"type\":\"object\",\"required\":[\"prompt\"],\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"绘画提示词\"}}}', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmVkIjowLCJ1c2VyX2lkIjowfQ.tLAGkF8XWh_G-oQzevpIodsswtPByBLoAZDz_eWuBgw', 'http://localhost:5678/api/function/dalle3', 0);
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
@@ -304,6 +305,36 @@ CREATE TABLE `chatgpt_invite_logs` (
|
|||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- 表的结构 `chatgpt_menus`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `chatgpt_menus`;
|
||||||
|
CREATE TABLE `chatgpt_menus` (
|
||||||
|
`id` int NOT NULL,
|
||||||
|
`name` varchar(30) NOT NULL COMMENT '菜单名称',
|
||||||
|
`icon` varchar(150) NOT NULL COMMENT '菜单图标',
|
||||||
|
`url` varchar(100) NOT NULL COMMENT '地址',
|
||||||
|
`sort_num` smallint NOT NULL COMMENT '排序',
|
||||||
|
`enabled` tinyint(1) NOT NULL COMMENT '是否启用'
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='前端菜单表';
|
||||||
|
|
||||||
|
--
|
||||||
|
-- 转存表中的数据 `chatgpt_menus`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `chatgpt_menus` (`id`, `name`, `icon`, `url`, `sort_num`, `enabled`) VALUES
|
||||||
|
(1, '对话聊天', '/images/menu/chat.png', '/chat', 0, 1),
|
||||||
|
(5, 'MJ 绘画', '/images/menu/mj.png', '/mj', 1, 1),
|
||||||
|
(6, 'SD 绘画', '/images/menu/sd.png', '/sd', 2, 1),
|
||||||
|
(7, '算力日志', '/images/menu/log.png', '/powerLog', 5, 1),
|
||||||
|
(8, '应用中心', '/images/menu/app.png', '/apps', 3, 1),
|
||||||
|
(9, '作品展示', '/images/menu/img-wall.png', '/images-wall', 4, 1),
|
||||||
|
(10, '会员计划', '/images/menu/member.png', '/member', 6, 1),
|
||||||
|
(11, '分享计划', '/images/menu/share.png', '/invite', 7, 1);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
--
|
--
|
||||||
-- 表的结构 `chatgpt_mj_jobs`
|
-- 表的结构 `chatgpt_mj_jobs`
|
||||||
--
|
--
|
||||||
@@ -465,18 +496,14 @@ CREATE TABLE `chatgpt_users` (
|
|||||||
`updated_at` datetime NOT NULL
|
`updated_at` datetime NOT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
--
|
--
|
||||||
-- 转存表中的数据 `chatgpt_users`
|
-- 转存表中的数据 `chatgpt_users`
|
||||||
--
|
--
|
||||||
|
|
||||||
INSERT INTO `chatgpt_users` (`id`, `username`, `nickname`, `password`, `avatar`, `salt`, `power`, `expired_time`, `status`, `chat_config_json`, `chat_roles_json`, `chat_models_json`, `last_login_at`, `vip`, `last_login_ip`, `created_at`, `updated_at`) VALUES
|
INSERT INTO `chatgpt_users` (`id`, `username`, `nickname`, `password`, `avatar`, `salt`, `power`, `expired_time`, `status`, `chat_config_json`, `chat_roles_json`, `chat_models_json`, `last_login_at`, `vip`, `last_login_ip`, `created_at`, `updated_at`) VALUES
|
||||||
(4, '18575670125', '极客学长@830270', 'ccc3fb7ab61b8b5d096a4a166ae21d121fc38c71bbd1be6173d9ab973214a63b', 'http://localhost:5678/static/upload/2024/2/1708682650912429.png', 'ueedue5l', 9384, 1717292086, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"red_book\",\"gpt\",\"programmer\",\"seller\"]', '[1,11]', 1711698298, 1, '::1', '2023-06-12 16:47:17', '2024-03-29 15:44:58'),
|
(4, '18575670125', '极客学长@830270', 'ccc3fb7ab61b8b5d096a4a166ae21d121fc38c71bbd1be6173d9ab973214a63b', 'http://localhost:5678/static/upload/2024/2/1708682650912429.png', 'ueedue5l', 9384, 1717292086, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"red_book\",\"gpt\",\"programmer\",\"seller\"]', '[1,11]', 1711698298, 1, '::1', '2023-06-12 16:47:17', '2024-03-29 15:44:58');
|
||||||
(91, '18575670126', '极客学长@204872', '5e4050b8dd403f593260395d9edeb9f273dbe92d15dfdd929c4a182e95da10c4', '/images/avatar/user.png', '6fj0otl8', 33, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"gpt\"]', '[1,11]', 1697184324, 1, '::1', '2023-10-13 16:01:56', '2024-03-25 11:07:45'),
|
|
||||||
(100, '13777777777', '极客学长@292245', 'dcaf31b154432310bd700349e7de7e9dde2a3d6955a035a01fe527c7917a4f99', '/images/avatar/user.png', 'i8a53f8f', 99, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"gpt\"]', '[1,11]', 0, 0, '', '2023-11-23 16:55:45', '2024-03-18 15:08:12'),
|
|
||||||
(102, 'yangjian102621@gmail.com', '极客学长@207163', 'd51cec21942737083943e5c3a8f063dea034e40622ac8bd47d771f13707e4676', '/images/avatar/user.png', 'eqezapgk', 99, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"gpt\"]', '[1,11]', 1704448377, 0, '::1', '2024-01-05 17:48:00', '2024-03-18 15:08:41'),
|
|
||||||
(105, '13888888888', '极客学长@551903', '4f893cc6b6d47b42fd0fcaddc55fd4a351cad74ba81ebabb4d7785f9675814da', '/images/avatar/user.png', 'cotpzi3q', 99, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"gpt\"]', '[1,11]', 0, 0, '', '2024-01-30 15:37:43', '2024-03-18 15:08:01'),
|
|
||||||
(107, '15899615465', '极客学长@792493', '4717349769bfeed3fecfa387618f617d8e2809edfd134ac42a18a80d79386150', '/images/avatar/user.png', 'shhm4ypl', 99, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"gpt\",\"psychiatrist\",\"teacher\",\"programmer\",\"artist\"]', '[1,11]', 1710467940, 0, '172.22.11.3', '2024-03-15 09:34:40', '2024-03-18 14:49:27'),
|
|
||||||
(112, '13575670125', '极客学长@676773', '93da6fc1008fd096f786db2fb43cfd378bbc9000c544fb596947fdcd434aba72', '/images/avatar/user.png', 'g5sq8f7n', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', '2024-03-22 10:00:49', '2024-03-22 10:00:49');
|
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
@@ -572,6 +599,12 @@ ALTER TABLE `chatgpt_invite_codes`
|
|||||||
ALTER TABLE `chatgpt_invite_logs`
|
ALTER TABLE `chatgpt_invite_logs`
|
||||||
ADD PRIMARY KEY (`id`);
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- 表的索引 `chatgpt_menus`
|
||||||
|
--
|
||||||
|
ALTER TABLE `chatgpt_menus`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
--
|
--
|
||||||
-- 表的索引 `chatgpt_mj_jobs`
|
-- 表的索引 `chatgpt_mj_jobs`
|
||||||
--
|
--
|
||||||
@@ -659,7 +692,7 @@ ALTER TABLE `chatgpt_chat_items`
|
|||||||
-- 使用表AUTO_INCREMENT `chatgpt_chat_models`
|
-- 使用表AUTO_INCREMENT `chatgpt_chat_models`
|
||||||
--
|
--
|
||||||
ALTER TABLE `chatgpt_chat_models`
|
ALTER TABLE `chatgpt_chat_models`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=24;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- 使用表AUTO_INCREMENT `chatgpt_chat_roles`
|
-- 使用表AUTO_INCREMENT `chatgpt_chat_roles`
|
||||||
@@ -697,6 +730,12 @@ ALTER TABLE `chatgpt_invite_codes`
|
|||||||
ALTER TABLE `chatgpt_invite_logs`
|
ALTER TABLE `chatgpt_invite_logs`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- 使用表AUTO_INCREMENT `chatgpt_menus`
|
||||||
|
--
|
||||||
|
ALTER TABLE `chatgpt_menus`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- 使用表AUTO_INCREMENT `chatgpt_mj_jobs`
|
-- 使用表AUTO_INCREMENT `chatgpt_mj_jobs`
|
||||||
--
|
--
|
||||||
@@ -737,7 +776,7 @@ ALTER TABLE `chatgpt_sd_jobs`
|
|||||||
-- 使用表AUTO_INCREMENT `chatgpt_users`
|
-- 使用表AUTO_INCREMENT `chatgpt_users`
|
||||||
--
|
--
|
||||||
ALTER TABLE `chatgpt_users`
|
ALTER TABLE `chatgpt_users`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=113;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- 使用表AUTO_INCREMENT `chatgpt_user_login_logs`
|
-- 使用表AUTO_INCREMENT `chatgpt_user_login_logs`
|
||||||
File diff suppressed because one or more lines are too long
@@ -15,8 +15,8 @@ server {
|
|||||||
# ssl_prefer_server_ciphers on;
|
# ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
# 日志地址
|
# 日志地址
|
||||||
access_log /var/log/access.log;
|
access_log /var/log/nginx/access.log;
|
||||||
error_log /var/log/error.log;
|
error_log /var/log/nginx/error.log;
|
||||||
|
|
||||||
index index.html;
|
index index.html;
|
||||||
root /var/www/app/dist; # 这里改成前端静态页面的地址
|
root /var/www/app/dist; # 这里改成前端静态页面的地址
|
||||||
|
|||||||
711
deploy/data/mysql/init.d/chatgpt_plus-v4.0.9.sql
Normal file
711
deploy/data/mysql/init.d/chatgpt_plus-v4.0.9.sql
Normal file
File diff suppressed because one or more lines are too long
@@ -50,10 +50,9 @@ services:
|
|||||||
- ./conf/mj-proxy:/home/spring/config
|
- ./conf/mj-proxy:/home/spring/config
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 后端 API 程序
|
# 后端 API 程序
|
||||||
geekai-api:
|
geekai-api:
|
||||||
image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-api:v4.0.8-amd64
|
image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:v4.0.9-amd64
|
||||||
container_name: geekai-api
|
container_name: geekai-api
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -75,7 +74,7 @@ services:
|
|||||||
|
|
||||||
# 前端应用
|
# 前端应用
|
||||||
geekai-web:
|
geekai-web:
|
||||||
image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-web:v4.0.8-amd64
|
image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:v4.0.9-amd64
|
||||||
container_name: geekai-web
|
container_name: geekai-web
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ VUE_APP_ADMIN_USER=admin
|
|||||||
VUE_APP_ADMIN_PASS=admin123
|
VUE_APP_ADMIN_PASS=admin123
|
||||||
VUE_APP_KEY_PREFIX=ChatPLUS_DEV_
|
VUE_APP_KEY_PREFIX=ChatPLUS_DEV_
|
||||||
VUE_APP_TITLE="Geek-AI 创作系统"
|
VUE_APP_TITLE="Geek-AI 创作系统"
|
||||||
VUE_APP_VERSION=v4.0.8
|
VUE_APP_VERSION=v4.0.9
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ VUE_APP_API_HOST=
|
|||||||
VUE_APP_WS_HOST=
|
VUE_APP_WS_HOST=
|
||||||
VUE_APP_KEY_PREFIX=ChatPLUS_
|
VUE_APP_KEY_PREFIX=ChatPLUS_
|
||||||
VUE_APP_TITLE="Geek-AI 创作系统"
|
VUE_APP_TITLE="Geek-AI 创作系统"
|
||||||
VUE_APP_VERSION=v4.0.8
|
VUE_APP_VERSION=v4.0.9
|
||||||
|
|||||||
@@ -180,4 +180,4 @@ const handleSlideConfirm = (x) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
<h2>AI 绘画作品墙</h2>
|
<h2>AI 绘画作品墙</h2>
|
||||||
<div class="settings">
|
<div class="settings">
|
||||||
<el-radio-group v-model="imgType" @change="changeImgType">
|
<el-radio-group v-model="imgType" @change="changeImgType">
|
||||||
<el-radio value="mj" size="large">MidJourney</el-radio>
|
<el-radio label="mj" size="large">MidJourney</el-radio>
|
||||||
<el-radio value="sd" size="large">Stable Diffusion</el-radio>
|
<el-radio label="sd" size="large">Stable Diffusion</el-radio>
|
||||||
<el-radio value="dall" size="large">DALL-E</el-radio>
|
<el-radio label="dall" size="large">DALL-E</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -374,6 +374,13 @@ const remove = function (row) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cell {
|
||||||
|
.copy-model {
|
||||||
|
margin-left 6px
|
||||||
|
cursor pointer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.el-select {
|
.el-select {
|
||||||
width: 100%
|
width: 100%
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user