From 869eced99ecc9ed946b3fc4812d4589a4546d6cf Mon Sep 17 00:00:00 2001 From: spark Date: Mon, 3 Feb 2025 13:50:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(backend):=20=E4=BC=98=E5=8C=96=20API?= =?UTF-8?q?=20=E5=AE=A2=E6=88=B7=E7=AB=AF=E9=85=8D=E7=BD=AE=E5=B9=B6?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 OpenAI API 客户端添加重试次数和超时设置 - 修改 OpenAI API 客户端初始化,设置基础 URL - 优化 OpenAI API 响应数据的处理逻辑 - 为 stock_data API 客户端添加重试次数设置 - 在 stock_data API 中添加日志和错误处理 --- backend/data/openai_api.go | 10 +++++++--- backend/data/stock_data_api.go | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/backend/data/openai_api.go b/backend/data/openai_api.go index a0fa8b2..d8f8b29 100644 --- a/backend/data/openai_api.go +++ b/backend/data/openai_api.go @@ -9,6 +9,7 @@ import ( "go-stock/backend/logger" "strings" "sync" + "time" ) // @Author spark @@ -128,6 +129,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string { client.SetBaseURL(o.BaseUrl) client.SetHeader("Authorization", "Bearer "+o.ApiKey) client.SetHeader("Content-Type", "application/json") + client.SetRetryCount(3) + client.SetTimeout(time.Second * 30) msg := []map[string]interface{}{ { @@ -139,8 +142,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string { } wg := &sync.WaitGroup{} - wg.Add(4) + go func() { defer wg.Done() messages := SearchStockPriceInfo(stockCode) @@ -212,8 +215,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string { scanner := bufio.NewScanner(resp.RawBody()) for scanner.Scan() { line := scanner.Text() - //logger.SugaredLogger.Infof("Received data: %s", line) - if strings.HasPrefix(line, "data: ") { + logger.SugaredLogger.Infof("Received data: %s", line) + if strings.HasPrefix(line, "chat data: ") { data := strings.TrimPrefix(line, "data: ") if data == "[DONE]" { return @@ -247,6 +250,7 @@ func (o OpenAi) NewCommonChatStream(stock, stockCode, apiURL, apiKey, Model stri client := resty.New() client.SetHeader("Authorization", "Bearer "+apiKey) client.SetHeader("Content-Type", "application/json") + client.SetRetryCount(3) msg := []map[string]interface{}{ { diff --git a/backend/data/stock_data_api.go b/backend/data/stock_data_api.go index a28ffc3..db424ba 100644 --- a/backend/data/stock_data_api.go +++ b/backend/data/stock_data_api.go @@ -561,6 +561,8 @@ func SearchStockInfo(stock, msgType string) *[]string { // 创建一个 chromedp 上下文 ctx, cancel := chromedp.NewContext( context.Background(), + chromedp.WithLogf(logger.SugaredLogger.Infof), + chromedp.WithErrorf(logger.SugaredLogger.Errorf), ) defer cancel() var htmlContent string