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

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
for scanner.Scan() {
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
continue
}
if data[:dataPrefixLength] != dataPrefix && data[:dataPrefixLength] != done {
continue
}
if strings.HasPrefix(data[dataPrefixLength:], done) {
render.StringData(c, data)
doneRendered = true
continue
}
if data[:dataPrefixLength] != dataPrefix {
if strings.HasPrefix(data, done) {
render.StringData(c, data)
doneRendered = true
continue
}
continue
} else {
// 这里处理标准的data:开头,标准化为 data: + 单空格格式
data = dataPrefix + " " + strings.TrimLeft(data[len(dataPrefix):], " ")
}
switch relayMode {
case relaymode.ChatCompletions:
var streamResponse ChatCompletionsStreamResponse