refactor(data): 优化 OpenAI API 客户端配置并改进流数据处理

- 将请求超时时间从 30秒增加到 60 秒
- 修正流数据的前缀检查,从 "chat data: " 改为 "data: "- 增加对 reasoning_content 的处理逻辑
- 优化数据处理流程,提高错误处理能力
This commit is contained in:
spark 2025-02-04 15:12:15 +08:00
parent e81319bb4f
commit 64b37b687c

View File

@ -130,7 +130,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(time.Second * 30)
client.SetTimeout(time.Second * 60)
msg := []map[string]interface{}{
{
@ -216,7 +216,7 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
for scanner.Scan() {
line := scanner.Text()
logger.SugaredLogger.Infof("Received data: %s", line)
if strings.HasPrefix(line, "chat data: ") {
if strings.HasPrefix(line, "data: ") {
data := strings.TrimPrefix(line, "data: ")
if data == "[DONE]" {
return
@ -225,17 +225,27 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
var streamResponse struct {
Choices []struct {
Delta struct {
Content string `json:"content"`
Content string `json:"content"`
ReasoningContent string `json:"reasoning_content"`
} `json:"delta"`
} `json:"choices"`
}
if err := json.Unmarshal([]byte(data), &streamResponse); err == nil {
for _, choice := range streamResponse.Choices {
txt := ""
if content := choice.Delta.Content; content != "" {
ch <- content
txt = content
logger.SugaredLogger.Infof("Content data: %s", txt)
}
if reasoningContent := choice.Delta.ReasoningContent; reasoningContent != "" {
txt = reasoningContent
logger.SugaredLogger.Infof("ReasoningContent data: %s", txt)
}
ch <- txt
}
} else {
logger.SugaredLogger.Infof("Stream data error : %s", err.Error())
}
}
}