package baichuan import ( "chat/globals" "chat/utils" "errors" "fmt" ) func processChatResponse(data string) *ChatStreamResponse { return utils.UnmarshalForm[ChatStreamResponse](data) } func processChatErrorResponse(data string) *ChatStreamErrorResponse { return utils.UnmarshalForm[ChatStreamErrorResponse](data) } func getChoices(form *ChatStreamResponse) *globals.Chunk { if len(form.Choices) == 0 { return &globals.Chunk{Content: ""} } choice := form.Choices[0].Delta return &globals.Chunk{ Content: choice.Content, } } func (c *ChatInstance) ProcessLine(data string) (*globals.Chunk, error) { if form := processChatResponse(data); form != nil { return getChoices(form), nil } if form := processChatErrorResponse(data); form != nil { return &globals.Chunk{Content: ""}, errors.New(fmt.Sprintf("baichuan error: %s (type: %s)", form.Error.Message, form.Error.Type)) } globals.Warn(fmt.Sprintf("baichuan error: cannot parse chat completion response: %s", data)) return &globals.Chunk{Content: ""}, errors.New("parser error: cannot parse chat completion response") }