mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-09-18 01:06:39 +08:00
feat: different AI model consuming different amounts of use_calls
This commit is contained in:
parent
7ccb4c5f06
commit
7677ae254f
@ -1,5 +1,12 @@
|
|||||||
# 更新日志
|
# 更新日志
|
||||||
|
|
||||||
|
## v3.1.7
|
||||||
|
1. 功能新增:支持文心4.0 AI 模型
|
||||||
|
2. 功能新增:可以在管理后台为用户绑定指定的 AI 模型,如只给某个用户使用 GPT-4 模型
|
||||||
|
3. 功能新增:模型新增权重字段,不同的模型每次调用耗费的点数可以设置不同,比如GPT4是GPT3.5的10倍
|
||||||
|
4. 功能新增:新增系统配置关闭 AI 模型的函数功能
|
||||||
|
5. 功能优化:优化 MidJourney 专业绘画页面图片预览样式
|
||||||
|
|
||||||
## v3.1.6
|
## v3.1.6
|
||||||
1. 功能新增:新增AI 绘画照片墙功能页面,供用户查看所有的 AI 绘画作品
|
1. 功能新增:新增AI 绘画照片墙功能页面,供用户查看所有的 AI 绘画作品
|
||||||
2. 功能新增:新增 AI 角色应用功能页面,用户可以添加自己感兴趣的应用
|
2. 功能新增:新增 AI 角色应用功能页面,用户可以添加自己感兴趣的应用
|
||||||
|
@ -133,7 +133,7 @@ cd docker/mysql
|
|||||||
# 创建 mysql 容器
|
# 创建 mysql 容器
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
# 导入数据库
|
# 导入数据库
|
||||||
docker exec -i chatgpt-plus-mysql sh -c 'exec mysql -uroot -p12345678' < ../../database/chatgpt_plus-v3.1.6.sql
|
docker exec -i chatgpt-plus-mysql sh -c 'exec mysql -uroot -p12345678' < ../../database/chatgpt_plus-v3.1.7.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
如果你本地已经安装了 MySQL 服务,那么你只需手动导入数据库即可。
|
如果你本地已经安装了 MySQL 服务,那么你只需手动导入数据库即可。
|
||||||
|
@ -47,6 +47,7 @@ type ChatModel struct {
|
|||||||
Id uint `json:"id"`
|
Id uint `json:"id"`
|
||||||
Platform Platform `json:"platform"`
|
Platform Platform `json:"platform"`
|
||||||
Value string `json:"value"`
|
Value string `json:"value"`
|
||||||
|
Weight int `json:"weight"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApiError struct {
|
type ApiError struct {
|
||||||
|
@ -168,9 +168,7 @@ func (h *ChatHandler) sendAzureMessage(
|
|||||||
// 消息发送成功
|
// 消息发送成功
|
||||||
if len(contents) > 0 {
|
if len(contents) > 0 {
|
||||||
// 更新用户的对话次数
|
// 更新用户的对话次数
|
||||||
if userVo.ChatConfig.ApiKeys[session.Model.Platform] == "" {
|
h.subUserCalls(userVo, session)
|
||||||
h.db.Model(&model.User{}).Where("id = ?", userVo.Id).UpdateColumn("calls", gorm.Expr("calls - ?", 1))
|
|
||||||
}
|
|
||||||
|
|
||||||
if message.Role == "" {
|
if message.Role == "" {
|
||||||
message.Role = "assistant"
|
message.Role = "assistant"
|
||||||
|
@ -124,9 +124,7 @@ func (h *ChatHandler) sendBaiduMessage(
|
|||||||
// 消息发送成功
|
// 消息发送成功
|
||||||
if len(contents) > 0 {
|
if len(contents) > 0 {
|
||||||
// 更新用户的对话次数
|
// 更新用户的对话次数
|
||||||
if userVo.ChatConfig.ApiKeys[session.Model.Platform] == "" {
|
h.subUserCalls(userVo, session)
|
||||||
h.db.Model(&model.User{}).Where("id = ?", userVo.Id).UpdateColumn("calls", gorm.Expr("calls - ?", 1))
|
|
||||||
}
|
|
||||||
|
|
||||||
if message.Role == "" {
|
if message.Role == "" {
|
||||||
message.Role = "assistant"
|
message.Role = "assistant"
|
||||||
|
@ -103,6 +103,7 @@ func (h *ChatHandler) ChatHandle(c *gin.Context) {
|
|||||||
session.Model = types.ChatModel{
|
session.Model = types.ChatModel{
|
||||||
Id: chatModel.Id,
|
Id: chatModel.Id,
|
||||||
Value: chatModel.Value,
|
Value: chatModel.Value,
|
||||||
|
Weight: chatModel.Weight,
|
||||||
Platform: types.Platform(chatModel.Platform)}
|
Platform: types.Platform(chatModel.Platform)}
|
||||||
logger.Infof("New websocket connected, IP: %s, Username: %s", c.ClientIP(), session.Username)
|
logger.Infof("New websocket connected, IP: %s, Username: %s", c.ClientIP(), session.Username)
|
||||||
var chatRole model.ChatRole
|
var chatRole model.ChatRole
|
||||||
@ -463,3 +464,15 @@ func (h *ChatHandler) doRequest(ctx context.Context, req types.ApiRequest, platf
|
|||||||
}
|
}
|
||||||
return client.Do(request)
|
return client.Do(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 扣减用户的对话次数
|
||||||
|
func (h *ChatHandler) subUserCalls(userVo vo.User, session *types.ChatSession) {
|
||||||
|
// 仅当用户没有导入自己的 API KEY 时才进行扣减
|
||||||
|
if userVo.ChatConfig.ApiKeys[session.Model.Platform] == "" {
|
||||||
|
num := 1
|
||||||
|
if session.Model.Weight > 0 {
|
||||||
|
num = session.Model.Weight
|
||||||
|
}
|
||||||
|
h.db.Model(&model.User{}).Where("id = ?", userVo.Id).UpdateColumn("calls", gorm.Expr("calls - ?", num))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -104,9 +104,7 @@ func (h *ChatHandler) sendChatGLMMessage(
|
|||||||
// 消息发送成功
|
// 消息发送成功
|
||||||
if len(contents) > 0 {
|
if len(contents) > 0 {
|
||||||
// 更新用户的对话次数
|
// 更新用户的对话次数
|
||||||
if userVo.ChatConfig.ApiKeys[session.Model.Platform] == "" {
|
h.subUserCalls(userVo, session)
|
||||||
h.db.Model(&model.User{}).Where("id = ?", userVo.Id).UpdateColumn("calls", gorm.Expr("calls - ?", 1))
|
|
||||||
}
|
|
||||||
|
|
||||||
if message.Role == "" {
|
if message.Role == "" {
|
||||||
message.Role = "assistant"
|
message.Role = "assistant"
|
||||||
|
@ -167,9 +167,7 @@ func (h *ChatHandler) sendOpenAiMessage(
|
|||||||
// 消息发送成功
|
// 消息发送成功
|
||||||
if len(contents) > 0 {
|
if len(contents) > 0 {
|
||||||
// 更新用户的对话次数
|
// 更新用户的对话次数
|
||||||
if userVo.ChatConfig.ApiKeys[session.Model.Platform] == "" {
|
h.subUserCalls(userVo, session)
|
||||||
h.db.Model(&model.User{}).Where("id = ?", userVo.Id).UpdateColumn("calls", gorm.Expr("calls - ?", 1))
|
|
||||||
}
|
|
||||||
|
|
||||||
if message.Role == "" {
|
if message.Role == "" {
|
||||||
message.Role = "assistant"
|
message.Role = "assistant"
|
||||||
|
@ -167,9 +167,7 @@ func (h *ChatHandler) sendXunFeiMessage(
|
|||||||
// 消息发送成功
|
// 消息发送成功
|
||||||
if len(contents) > 0 {
|
if len(contents) > 0 {
|
||||||
// 更新用户的对话次数
|
// 更新用户的对话次数
|
||||||
if userVo.ChatConfig.ApiKeys[session.Model.Platform] == "" {
|
h.subUserCalls(userVo, session)
|
||||||
h.db.Model(&model.User{}).Where("id = ?", userVo.Id).UpdateColumn("calls", gorm.Expr("calls - ?", 1))
|
|
||||||
}
|
|
||||||
|
|
||||||
if message.Role == "" {
|
if message.Role == "" {
|
||||||
message.Role = "assistant"
|
message.Role = "assistant"
|
||||||
|
Loading…
Reference in New Issue
Block a user