From 3e13ef007b96f6b234083683acdb21c8bec5b901 Mon Sep 17 00:00:00 2001 From: spark Date: Sat, 8 Feb 2025 09:14:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(openai):=20=E6=B7=BB=E5=8A=A0=20OpenAI=20A?= =?UTF-8?q?PI=20=E8=B6=85=E6=97=B6=E8=AE=BE=E7=BD=AE=E5=B9=B6=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=20=E6=84=9F?= =?UTF-8?q?=E8=B0=A2@gnim2600=20@XXXiaohuayanGGG=20=E4=B8=A4=E4=BD=8D?= =?UTF-8?q?=E6=8F=90=E4=BE=9B=E7=9A=84=E5=B8=AE=E5=8A=A9=E5=92=8C=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE=20-=20=E5=9C=A8=E5=89=8D=E7=AB=AF=E5=92=8C=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=B7=BB=E5=8A=A0=20OpenAI=20API=20=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=80=89=E9=A1=B9=20-=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=20AI=20=E8=AF=8A=E6=96=AD=E8=82=A1=E7=A5=A8=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E6=97=B6=E9=97=B4=20-=20=E4=BC=98=E5=8C=96=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=95=8C=E9=9D=A2=E5=B8=83=E5=B1=80=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C=20-=20=E4=B8=BA?= =?UTF-8?q?=20AI=20=E5=88=86=E6=9E=90=E7=BB=93=E6=9E=9C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=B1=85=E4=B8=AD=E6=98=BE=E7=A4=BA=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/data/openai_api.go | 4 +++- backend/data/settings_api.go | 5 +++++ frontend/src/components/settings.vue | 22 ++++++++++++++-------- frontend/src/components/stock.vue | 9 +++++++-- frontend/wailsjs/go/models.ts | 2 ++ 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/backend/data/openai_api.go b/backend/data/openai_api.go index d4cf6fc..30560d8 100644 --- a/backend/data/openai_api.go +++ b/backend/data/openai_api.go @@ -26,6 +26,7 @@ type OpenAi struct { MaxTokens int `json:"max_tokens"` Temperature float64 `json:"temperature"` Prompt string `json:"prompt"` + TimeOut int `json:"time_out"` } func NewDeepSeekOpenAi() *OpenAi { @@ -37,6 +38,7 @@ func NewDeepSeekOpenAi() *OpenAi { MaxTokens: config.OpenAiMaxTokens, Temperature: config.OpenAiTemperature, Prompt: config.Prompt, + TimeOut: config.OpenAiApiTimeOut, } } @@ -206,7 +208,7 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string { client.SetHeader("Authorization", "Bearer "+o.ApiKey) client.SetHeader("Content-Type", "application/json") client.SetRetryCount(3) - client.SetTimeout(1 * time.Minute) + client.SetTimeout(time.Duration(o.TimeOut) * time.Second) resp, err := client.R(). SetDoNotParseResponse(true). SetBody(map[string]interface{}{ diff --git a/backend/data/settings_api.go b/backend/data/settings_api.go index 5e9fe1d..f3e6c8a 100644 --- a/backend/data/settings_api.go +++ b/backend/data/settings_api.go @@ -21,6 +21,7 @@ type Settings struct { OpenAiModelName string `json:"openAiModelName"` OpenAiMaxTokens int `json:"openAiMaxTokens"` OpenAiTemperature float64 `json:"openAiTemperature"` + OpenAiApiTimeOut int `json:"openAiApiTimeOut"` Prompt string `json:"prompt"` CheckUpdate bool `json:"checkUpdate"` } @@ -57,6 +58,8 @@ func (s SettingsApi) UpdateConfig() string { "open_ai_temperature": s.Config.OpenAiTemperature, "tushare_token": s.Config.TushareToken, "prompt": s.Config.Prompt, + "check_update": s.Config.CheckUpdate, + "open_ai_api_time_out": s.Config.OpenAiApiTimeOut, }) } else { logger.SugaredLogger.Infof("未找到配置,创建默认配置:%+v", s.Config) @@ -74,6 +77,8 @@ func (s SettingsApi) UpdateConfig() string { OpenAiTemperature: s.Config.OpenAiTemperature, TushareToken: s.Config.TushareToken, Prompt: s.Config.Prompt, + CheckUpdate: s.Config.CheckUpdate, + OpenAiApiTimeOut: s.Config.OpenAiApiTimeOut, }) } return "保存成功!" diff --git a/frontend/src/components/settings.vue b/frontend/src/components/settings.vue index b691f29..cf5cff8 100644 --- a/frontend/src/components/settings.vue +++ b/frontend/src/components/settings.vue @@ -27,6 +27,7 @@ const formValue = ref({ temperature: 0.1, maxTokens: 1024, prompt:"", + timeout: 5 }, }) @@ -51,6 +52,7 @@ onMounted(()=>{ temperature:res.openAiTemperature, maxTokens:res.openAiMaxTokens, prompt:res.prompt, + timeout:res.openAiApiTimeOut } console.log(res) }) @@ -73,7 +75,8 @@ function saveConfig(){ openAiMaxTokens:formValue.value.openAI.maxTokens, openAiTemperature:formValue.value.openAI.temperature, tushareToken:formValue.value.tushareToken, - prompt:formValue.value.openAI.prompt + prompt:formValue.value.openAI.prompt, + openAiApiTimeOut:formValue.value.openAI.timeout }) //console.log("Settings",config) @@ -150,22 +153,25 @@ function sendTestNotice(){ - + - + + + + - - + + - + - + - + - + diff --git a/frontend/wailsjs/go/models.ts b/frontend/wailsjs/go/models.ts index 328db3b..0881055 100644 --- a/frontend/wailsjs/go/models.ts +++ b/frontend/wailsjs/go/models.ts @@ -73,6 +73,7 @@ export namespace data { openAiModelName: string; openAiMaxTokens: number; openAiTemperature: number; + openAiApiTimeOut: number; prompt: string; checkUpdate: boolean; @@ -98,6 +99,7 @@ export namespace data { this.openAiModelName = source["openAiModelName"]; this.openAiMaxTokens = source["openAiMaxTokens"]; this.openAiTemperature = source["openAiTemperature"]; + this.openAiApiTimeOut = source["openAiApiTimeOut"]; this.prompt = source["prompt"]; this.checkUpdate = source["checkUpdate"]; }