🎨 优化正则处理逻辑
This commit is contained in:
@@ -212,7 +212,7 @@ func (s *AiProxyService) forwardClaudeStreamRequest(c *gin.Context, provider *ap
|
||||
reader := bufio.NewReader(httpResp.Body)
|
||||
flusher, _ := c.Writer.(http.Flusher)
|
||||
|
||||
// 聚合完整输出用于日志和正则处理
|
||||
// 聚合完整输出用于日志
|
||||
var fullContent bytes.Buffer
|
||||
var totalInputTokens, totalOutputTokens int
|
||||
|
||||
@@ -235,21 +235,28 @@ func (s *AiProxyService) forwardClaudeStreamRequest(c *gin.Context, provider *ap
|
||||
totalOutputTokens = chunk.Usage.OutputTokens
|
||||
}
|
||||
|
||||
// 收集文本内容(不在流式传输时应用正则,避免重复处理)
|
||||
// 收集文本内容并应用正则处理
|
||||
if chunk.Delta != nil && chunk.Delta.Text != "" {
|
||||
fullContent.WriteString(chunk.Delta.Text)
|
||||
originalText := chunk.Delta.Text
|
||||
fullContent.WriteString(originalText)
|
||||
|
||||
// 应用输出正则处理
|
||||
if injector != nil {
|
||||
chunk.Delta.Text = injector.ProcessResponse(originalText)
|
||||
}
|
||||
}
|
||||
|
||||
// 直接转发原始响应
|
||||
// 重新序列化并转发处理后的响应
|
||||
processedData, _ := json.Marshal(chunk)
|
||||
c.Writer.Write([]byte("data: "))
|
||||
c.Writer.Write(data)
|
||||
c.Writer.Write(processedData)
|
||||
c.Writer.Write([]byte("\n\n"))
|
||||
flusher.Flush()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 流式结束后,对完整内容应用输出正则处理(仅用于日志记录)
|
||||
// 流式结束后,对完整内容应用输出正则处理(用于日志记录)
|
||||
processedContent := fullContent.String()
|
||||
if injector != nil && processedContent != "" {
|
||||
processedContent = injector.ProcessResponse(processedContent)
|
||||
|
||||
Reference in New Issue
Block a user