diff --git a/CHANGELOG.md b/CHANGELOG.md index ad204b86..79fb2d3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # 更新日志 +## v4.1.9 + +- 功能优化:优化系统配置,移除已废弃的配置项 +- 功能优化:GPT-O1 模型支持流式输出 +- 功能优化:优化代码引用快样式,支持主题切换 + ## v4.1.8 - 功能优化:**UI 全新改版,支持主题切换**。 :rocket: :rocket: :rocket: diff --git a/api/core/types/config.go b/api/core/types/config.go index 19c9ba50..c32318d9 100644 --- a/api/core/types/config.go +++ b/api/core/types/config.go @@ -133,7 +133,7 @@ type SystemConfig struct { AdminTitle string `json:"admin_title,omitempty"` // 管理后台标题 Logo string `json:"logo,omitempty"` // 方形 Logo InitPower int `json:"init_power,omitempty"` // 新用户注册赠送算力值 - DailyPower int `json:"daily_power,omitempty"` // 每日签到赠送算力 + DailyPower int `json:"daily_power,omitempty"` // 每日签到赠送算力 InvitePower int `json:"invite_power,omitempty"` // 邀请新用户赠送算力值 VipMonthPower int `json:"vip_month_power,omitempty"` // VIP 会员每月赠送的算力值 @@ -146,7 +146,7 @@ type SystemConfig struct { MjPower int `json:"mj_power,omitempty"` // MJ 绘画消耗算力 MjActionPower int `json:"mj_action_power,omitempty"` // MJ 操作(放大,变换)消耗算力 SdPower int `json:"sd_power,omitempty"` // SD 绘画消耗算力 - DallPower int `json:"dall_power,omitempty"` // DALL-E-3 绘图消耗算力 + DallPower int `json:"dall_power,omitempty"` // DALL-E-3 绘图消耗算力 SunoPower int `json:"suno_power,omitempty"` // Suno 生成歌曲消耗算力 LumaPower int `json:"luma_power,omitempty"` // Luma 生成视频消耗算力 AdvanceVoicePower int `json:"advance_voice_power,omitempty"` // 高级语音对话消耗算力 @@ -160,7 +160,6 @@ type SystemConfig struct { SdNegPrompt string `json:"sd_neg_prompt"` // SD 默认反向提示词 MjMode string `json:"mj_mode"` // midjourney 默认的API模式,relax, fast, turbo - IndexBgURL string `json:"index_bg_url"` // 前端首页背景图片 IndexNavs []int `json:"index_navs"` // 首页显示的导航菜单 Copyright string `json:"copyright"` // 版权信息 MarkMapText string `json:"mark_map_text"` // 思维导入的默认文本 diff --git a/api/handler/chat_handler.go b/api/handler/chat_handler.go index b71e86b9..d5f933ac 100644 --- a/api/handler/chat_handler.go +++ b/api/handler/chat_handler.go @@ -101,8 +101,8 @@ func (h *ChatHandler) sendMessage(ctx context.Context, session *types.ChatSessio } // 兼容 GPT-O1 模型 if strings.HasPrefix(session.Model.Value, "o1-") { - utils.SendChunkMsg(ws, "AI 正在思考...\n") - req.Stream = false + utils.SendChunkMsg(ws, "> AI 正在思考...\n") + req.Stream = session.Stream session.Start = time.Now().Unix() } else { req.MaxTokens = session.Model.MaxTokens diff --git a/api/handler/chat_openai_handler.go b/api/handler/chat_openai_handler.go index 34093e16..14e58194 100644 --- a/api/handler/chat_openai_handler.go +++ b/api/handler/chat_openai_handler.go @@ -63,7 +63,7 @@ func (h *ChatHandler) sendOpenAiMessage( start := time.Now() var apiKey = model.ApiKey{} response, err := h.doRequest(ctx, req, session, &apiKey) - logger.Info("HTTP请求完成,耗时:", time.Now().Sub(start)) + logger.Info("HTTP请求完成,耗时:", time.Since(start)) if err != nil { if strings.Contains(err.Error(), "context canceled") { return fmt.Errorf("用户取消了请求:%s", prompt) @@ -89,6 +89,12 @@ func (h *ChatHandler) sendOpenAiMessage( var function model.Function var toolCall = false var arguments = make([]string, 0) + + if strings.HasPrefix(req.Model, "o1-") { + content := fmt.Sprintf("AI 思考结束,耗时:%d 秒。\n\n", time.Now().Unix()-session.Start) + utils.SendChunkMsg(ws, content) + } + scanner := bufio.NewScanner(response.Body) for scanner.Scan() { line := scanner.Text() @@ -150,10 +156,10 @@ func (h *ChatHandler) sendOpenAiMessage( // output stopped if responseBody.Choices[0].FinishReason != "" { break // 输出完成或者输出中断了 - } else { + } else { // 正常输出结果 content := responseBody.Choices[0].Delta.Content contents = append(contents, utils.InterfaceToString(content)) - utils.SendChunkMsg(ws, responseBody.Choices[0].Delta.Content) + utils.SendChunkMsg(ws, content) } } // end for diff --git a/web/.env.development b/web/.env.development index 452c1ef2..a07651f1 100644 --- a/web/.env.development +++ b/web/.env.development @@ -6,6 +6,6 @@ VUE_APP_ADMIN_USER=admin VUE_APP_ADMIN_PASS=admin123 VUE_APP_KEY_PREFIX=GeekAI_DEV_ VUE_APP_TITLE="Geek-AI 创作系统" -VUE_APP_VERSION=v4.1.8 +VUE_APP_VERSION=v4.1.9 VUE_APP_DOCS_URL=https://docs.geekai.me VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai diff --git a/web/.env.production b/web/.env.production index 8f8cf6fd..fbf30e9a 100644 --- a/web/.env.production +++ b/web/.env.production @@ -2,6 +2,6 @@ VUE_APP_API_HOST= VUE_APP_WS_HOST= VUE_APP_KEY_PREFIX=GeekAI_ VUE_APP_TITLE="Geek-AI 创作系统" -VUE_APP_VERSION=v4.1.8 +VUE_APP_VERSION=v4.1.9 VUE_APP_DOCS_URL=https://docs.geekai.me VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai diff --git a/web/src/assets/css/theme-dark.styl b/web/src/assets/css/theme-dark.styl index 5946a768..5fd767e0 100644 --- a/web/src/assets/css/theme-dark.styl +++ b/web/src/assets/css/theme-dark.styl @@ -85,4 +85,8 @@ --van-tabbar-background: #141a36; --van-nav-bar-background: #1B244A; --van-dropdown-menu-background: #141a36; + + // 引用快样式 + --quote-bg-color: #1F243F; + --quote-text-color: #fff; } diff --git a/web/src/assets/css/theme-light.styl b/web/src/assets/css/theme-light.styl index a246b58c..bab46cf6 100644 --- a/web/src/assets/css/theme-light.styl +++ b/web/src/assets/css/theme-light.styl @@ -48,6 +48,10 @@ // code 标签背景 --code-bg-color: #ececec; --code-text-color: var(--el-color-primary); + + // 引用快样式 + --quote-bg-color: #e0dfff; + --quote-text-color: #333; } diff --git a/web/src/components/ChatReply.vue b/web/src/components/ChatReply.vue index fd41dcea..d1b842d9 100644 --- a/web/src/components/ChatReply.vue +++ b/web/src/components/ChatReply.vue @@ -6,7 +6,7 @@