55 "encoding/json"
66 "github.com/go-resty/resty/v2"
77 "strings"
8+ "sync"
89)
910
1011// @Author spark
@@ -108,7 +109,7 @@ func (o OpenAi) NewChat(stock string) string {
108109 //logger.SugaredLogger.Infof("%v", res.Choices[0].Message.Content)
109110 return res .Choices [0 ].Message .Content
110111}
111- func (o OpenAi ) NewChatStream (stock string ) <- chan string {
112+ func (o OpenAi ) NewChatStream (stock , stockCode string ) <- chan string {
112113 ch := make (chan string )
113114 go func () {
114115 defer close (ch )
@@ -124,21 +125,42 @@ func (o OpenAi) NewChatStream(stock string) <-chan string {
124125 },
125126 }
126127
127- messages := SearchStockInfo (stock , "depth" )
128- for _ , message := range * messages {
129- msg = append (msg , map [string ]interface {}{
130- "role" : "assistant" ,
131- "content" : message ,
132- })
133- }
128+ wg := & sync.WaitGroup {}
134129
135- messages = SearchStockInfo (stock , "telegram" )
136- for _ , message := range * messages {
130+ wg .Add (3 )
131+ go func () {
132+ defer wg .Done ()
133+ messages := SearchStockPriceInfo (stockCode )
134+ price := ""
135+ for _ , message := range * messages {
136+ price += message + ";"
137+ }
137138 msg = append (msg , map [string ]interface {}{
138139 "role" : "assistant" ,
139- "content" : message ,
140+ "content" : stock + "当前价格:" + price ,
140141 })
141- }
142+ }()
143+ go func () {
144+ defer wg .Done ()
145+ messages := SearchStockInfo (stock , "depth" )
146+ for _ , message := range * messages {
147+ msg = append (msg , map [string ]interface {}{
148+ "role" : "assistant" ,
149+ "content" : message ,
150+ })
151+ }
152+ }()
153+ go func () {
154+ defer wg .Done ()
155+ messages := SearchStockInfo (stock , "telegram" )
156+ for _ , message := range * messages {
157+ msg = append (msg , map [string ]interface {}{
158+ "role" : "assistant" ,
159+ "content" : message ,
160+ })
161+ }
162+ }()
163+ wg .Wait ()
142164
143165 msg = append (msg , map [string ]interface {}{
144166 "role" : "user" ,
@@ -157,13 +179,15 @@ func (o OpenAi) NewChatStream(stock string) <-chan string {
157179 Post ("/chat/completions" )
158180
159181 if err != nil {
182+ ch <- err .Error ()
160183 return
161184 }
162185 defer resp .RawBody ().Close ()
163186
164187 scanner := bufio .NewScanner (resp .RawBody ())
165188 for scanner .Scan () {
166189 line := scanner .Text ()
190+ //logger.SugaredLogger.Infof("Received data: %s", line)
167191 if strings .HasPrefix (line , "data: " ) {
168192 data := strings .TrimPrefix (line , "data: " )
169193 if data == "[DONE]" {
0 commit comments