1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| func streamChat(ctx context.Context, chatModel einomodel.ChatModel, messages []*schema.Message) (*schema.Message, error) { sr, err := chatModel.Stream(ctx, messages) if err != nil { return nil, err } defer sr.Close()
chunks := make([]*schema.Message, 0, 16) for { chunk, err := sr.Recv() if errors.Is(err, io.EOF) { break } if err != nil { return nil, err } chunks = append(chunks, chunk)
if chunk.Content != "" { fmt.Print(chunk.Content) } }
return schema.ConcatMessages(chunks) }
|