尝试优化现有判断逻辑,并适配处理多个空格的情况

This commit is contained in:
sijinhui
2025-02-21 22:11:08 +08:00
parent 5797dd4733
commit 585674dbf7

View File

@@ -35,23 +35,20 @@ func StreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*model.E
doneRendered := false doneRendered := false
for scanner.Scan() { for scanner.Scan() {
data := scanner.Text() data := scanner.Text()
// 确保前缀是 "data: {"(冒号后有空格)
if strings.HasPrefix(data, "data:{") { // 检测无空格的情况
// 替换整个前缀
data = "data: {" + strings.TrimPrefix(data, "data:{")
}
if len(data) < dataPrefixLength { // ignore blank line or wrong format if len(data) < dataPrefixLength { // ignore blank line or wrong format
continue continue
} }
if data[:dataPrefixLength] != dataPrefix && data[:dataPrefixLength] != done { if data[:dataPrefixLength] != dataPrefix {
continue if strings.HasPrefix(data, done) {
} render.StringData(c, data)
if strings.HasPrefix(data[dataPrefixLength:], done) { doneRendered = true
render.StringData(c, data) continue
doneRendered = true }
continue continue
} } else {
// 这里处理标准的data:开头,标准化为 data: + 单空格格式
data = dataPrefix + " " + strings.TrimLeft(data[len(dataPrefix):], " ")
}
switch relayMode { switch relayMode {
case relaymode.ChatCompletions: case relaymode.ChatCompletions:
var streamResponse ChatCompletionsStreamResponse var streamResponse ChatCompletionsStreamResponse