Skip to content

Terminates a "stream for" loop #251

Closed
@chenxi2015

Description

@chenxi2015

How do I terminate the stream for loop,How do I trigger stream.close() manually?

func (g *GPT) ChatCompletionStream() {
	var err error
	if Stream == false {
		panic("ChatCompletionStream should be set stream")
	}
	g.ChatCompStream, err = g.Client.CreateChatCompletionStream(g.App.Ctx, g.ChatCompletionRequest)
	if err != nil {
		return
	}
	defer g.ChatCompStream.Close()
	for {
		select {
		default:
			response, err := g.ChatCompStream.Recv()
			if errors.Is(err, io.EOF) {
				g.App.WsPushChan <- service.PushResp{
					Code: 1,
					Data: "Chatcat Finished",
				}
				return
			}
			if err != nil {
				g.App.WsPushChan <- service.PushResp{
					Code: -1,
					Data: fmt.Sprintf("Chatcat Warm Reminder: %s", err.Error()),
				}
				return
			}
			g.App.WsPushChan <- service.PushResp{
				Code: 0,
				Data: response.Choices[0].Delta.Content,
			}
		}
	}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requestedstale

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions