mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
refactor(data): 优化 OpenAI API 客户端配置并改进流数据处理
- 将请求超时时间从 30秒增加到 60 秒 - 修正流数据的前缀检查,从 "chat data: " 改为 "data: "- 增加对 reasoning_content 的处理逻辑 - 优化数据处理流程,提高错误处理能力
This commit is contained in:
parent
e81319bb4f
commit
64b37b687c
@ -130,7 +130,7 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
|
|||||||
client.SetHeader("Authorization", "Bearer "+o.ApiKey)
|
client.SetHeader("Authorization", "Bearer "+o.ApiKey)
|
||||||
client.SetHeader("Content-Type", "application/json")
|
client.SetHeader("Content-Type", "application/json")
|
||||||
client.SetRetryCount(3)
|
client.SetRetryCount(3)
|
||||||
client.SetTimeout(time.Second * 30)
|
client.SetTimeout(time.Second * 60)
|
||||||
|
|
||||||
msg := []map[string]interface{}{
|
msg := []map[string]interface{}{
|
||||||
{
|
{
|
||||||
@ -216,7 +216,7 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
|
|||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
line := scanner.Text()
|
line := scanner.Text()
|
||||||
logger.SugaredLogger.Infof("Received data: %s", line)
|
logger.SugaredLogger.Infof("Received data: %s", line)
|
||||||
if strings.HasPrefix(line, "chat data: ") {
|
if strings.HasPrefix(line, "data: ") {
|
||||||
data := strings.TrimPrefix(line, "data: ")
|
data := strings.TrimPrefix(line, "data: ")
|
||||||
if data == "[DONE]" {
|
if data == "[DONE]" {
|
||||||
return
|
return
|
||||||
@ -226,16 +226,26 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
|
|||||||
Choices []struct {
|
Choices []struct {
|
||||||
Delta struct {
|
Delta struct {
|
||||||
Content string `json:"content"`
|
Content string `json:"content"`
|
||||||
|
ReasoningContent string `json:"reasoning_content"`
|
||||||
} `json:"delta"`
|
} `json:"delta"`
|
||||||
} `json:"choices"`
|
} `json:"choices"`
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := json.Unmarshal([]byte(data), &streamResponse); err == nil {
|
if err := json.Unmarshal([]byte(data), &streamResponse); err == nil {
|
||||||
for _, choice := range streamResponse.Choices {
|
for _, choice := range streamResponse.Choices {
|
||||||
|
txt := ""
|
||||||
if content := choice.Delta.Content; content != "" {
|
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())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user