From e34876fa6ab17a7ad0e09c50946f972a85e5e6f6 Mon Sep 17 00:00:00 2001 From: tisfeng Date: Tue, 21 Jan 2025 21:10:09 +0800 Subject: [PATCH] fix: filter out sse comments --- Sources/OpenAI/Private/StreamingSession.swift | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Sources/OpenAI/Private/StreamingSession.swift b/Sources/OpenAI/Private/StreamingSession.swift index cf56a97a..780d66c4 100644 --- a/Sources/OpenAI/Private/StreamingSession.swift +++ b/Sources/OpenAI/Private/StreamingSession.swift @@ -60,14 +60,23 @@ extension StreamingSession { if stringContent.isEmpty { return } - let jsonObjects = "\(previousChunkBuffer)\(stringContent)" + + // Join the previous chunk buffer with the new chunk, and filter out comments. + // FIX OpenRouter: https://github.com/tisfeng/Easydict/issues/743 + let filteredContent = "\(previousChunkBuffer)\(stringContent)" .trimmingCharacters(in: .whitespacesAndNewlines) + .components(separatedBy: .newlines) + .filter { !$0.hasPrefix(":") } // Filter out comments, like ": OPENROUTER PROCESSING" + .joined(separator: "\n") + + // Split the filtered content into separate JSON objects. + let jsonObjects = filteredContent .components(separatedBy: "data:") .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) } - .filter { $0.isEmpty == false } + .filter { !$0.isEmpty } previousChunkBuffer = "" - + guard jsonObjects.isEmpty == false, jsonObjects.first != streamingCompletionMarker else { return }