修复聊天应用绑定模型后,还是会轮询 API KEY,而不会使用模型绑定的 API KEY的bug

This commit is contained in:
GeekMaster
2025-05-25 14:24:29 +08:00
parent 9fb01ee3ee
commit 5dd3c1835a
3 changed files with 8 additions and 7 deletions

View File

@@ -7,6 +7,7 @@
- 功能新增:用户注册和用户登录增加用户协议和隐私政策功能,需要用户同意协议才可注册和登录。 - 功能新增:用户注册和用户登录增加用户协议和隐私政策功能,需要用户同意协议才可注册和登录。
- 功能优化:修改重新回答功能,撤回千面的问答内容为可编辑内容,撤回的内容不会增加额外的上下文 - 功能优化:修改重新回答功能,撤回千面的问答内容为可编辑内容,撤回的内容不会增加额外的上下文
- 功能优化:优化聊天记录的存储结构,增加模型名称字段,支持存储更长的模型名称 - 功能优化:优化聊天记录的存储结构,增加模型名称字段,支持存储更长的模型名称
- Bug 修复:修复
## v4.2.3 ## v4.2.3

View File

@@ -71,7 +71,7 @@ func (h *ChatHandler) sendMessage(ctx context.Context, session *types.ChatSessio
return errors.New("User 对象转换失败," + err.Error()) return errors.New("User 对象转换失败," + err.Error())
} }
if userVo.Status == false { if !userVo.Status {
return errors.New("您的账号已经被禁用,如果疑问,请联系管理员!") return errors.New("您的账号已经被禁用,如果疑问,请联系管理员!")
} }
@@ -200,7 +200,7 @@ func (h *ChatHandler) sendMessage(ctx context.Context, session *types.ChatSessio
// 如果不是逆向模型,则提取文件内容 // 如果不是逆向模型,则提取文件内容
if len(files) > 0 && !(session.Model.Value == "gpt-4-all" || if len(files) > 0 && !(session.Model.Value == "gpt-4-all" ||
strings.HasPrefix(session.Model.Value, "gpt-4-gizmo") || strings.HasPrefix(session.Model.Value, "gpt-4-gizmo") ||
strings.HasSuffix(session.Model.Value, "claude-3")) { strings.HasPrefix(session.Model.Value, "claude-3")) {
contents := make([]string, 0) contents := make([]string, 0)
var file model.File var file model.File
for _, v := range files { for _, v := range files {
@@ -327,11 +327,10 @@ func (h *ChatHandler) doRequest(ctx context.Context, req types.ApiRequest, sessi
// if the chat model bind a KEY, use it directly // if the chat model bind a KEY, use it directly
if session.Model.KeyId > 0 { if session.Model.KeyId > 0 {
h.DB.Where("id", session.Model.KeyId).Find(apiKey) h.DB.Where("id", session.Model.KeyId).Find(apiKey)
} } else { // use the last unused key
// use the last unused key
if apiKey.Id == 0 {
h.DB.Where("type", "chat").Where("enabled", true).Order("last_used_at ASC").First(apiKey) h.DB.Where("type", "chat").Where("enabled", true).Order("last_used_at ASC").First(apiKey)
} }
if apiKey.Id == 0 { if apiKey.Id == 0 {
return nil, errors.New("no available key, please import key") return nil, errors.New("no available key, please import key")
} }

View File

@@ -104,12 +104,12 @@ func (h *WebsocketHandler) Client(c *gin.Context) {
} }
// if the role bind a model_id, use role's bind model_id // if the role bind a model_id, use role's bind model_id
if chatRole.ModelId > 0 { if chatRole.ModelId > 0 {
chatMessage.RoleId = int(chatRole.ModelId) chatMessage.ModelId = int(chatRole.ModelId)
} }
// get model info // get model info
var chatModel model.ChatModel var chatModel model.ChatModel
err = h.DB.Where("id", chatMessage.ModelId).First(&chatModel).Error err = h.DB.Where("id", chatMessage.ModelId).First(&chatModel).Error
if err != nil || chatModel.Enabled == false { if err != nil || !chatModel.Enabled {
utils.SendAndFlush(client, "当前AI模型暂未启用请更换模型后再发起对话") utils.SendAndFlush(client, "当前AI模型暂未启用请更换模型后再发起对话")
continue continue
} }
@@ -130,6 +130,7 @@ func (h *WebsocketHandler) Client(c *gin.Context) {
session.ChatId = chatMessage.ChatId session.ChatId = chatMessage.ChatId
session.Tools = chatMessage.Tools session.Tools = chatMessage.Tools
session.Stream = chatMessage.Stream session.Stream = chatMessage.Stream
session.Model.KeyId = chatMessage.ModelId
// 复制模型数据 // 复制模型数据
err = utils.CopyObject(chatModel, &session.Model) err = utils.CopyObject(chatModel, &session.Model)
if err != nil { if err != nil {