From f43a848e18d8ed8ddffde9690e73f574e5a76323 Mon Sep 17 00:00:00 2001 From: akumatus Date: Thu, 27 Feb 2025 04:43:11 +0000 Subject: [PATCH] feat(core): convert ai think tag to markdown divider (#10459) Support issue [AF-2282](https://linear.app/affine-design/issue/AF-2282). --- .../src/plugins/copilot/providers/perplexity.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/backend/server/src/plugins/copilot/providers/perplexity.ts b/packages/backend/server/src/plugins/copilot/providers/perplexity.ts index e960f92fc..f9ebed93b 100644 --- a/packages/backend/server/src/plugins/copilot/providers/perplexity.ts +++ b/packages/backend/server/src/plugins/copilot/providers/perplexity.ts @@ -221,11 +221,12 @@ export class PerplexityProvider implements CopilotTextToTextProvider { message: data.detail[0].msg || 'Unexpected perplexity response', }); } else { - const parser = new CitationParser(); + const citationParser = new CitationParser(); const { content } = data.choices[0].message; const { citations } = data; - let result = parser.parse(content, citations); - result += parser.end(); + let result = content.replaceAll(/<\/?think>\n/g, '\n---\n'); + result = citationParser.parse(result, citations); + result += citationParser.end(); return result; } } catch (e: any) { @@ -264,7 +265,7 @@ export class PerplexityProvider implements CopilotTextToTextProvider { params ); if (response.body) { - const parser = new CitationParser(); + const citationParser = new CitationParser(); const provider = this.type; const eventStream = response.body .pipeThrough(new TextDecoderStream()) @@ -289,12 +290,13 @@ export class PerplexityProvider implements CopilotTextToTextProvider { } const { content } = data.choices[0].delta; const { citations } = data; - const result = parser.parse(content, citations); + let result = content.replaceAll(/<\/?think>\n?/g, '\n---\n'); + result = citationParser.parse(result, citations); controller.enqueue(result); } }, flush(controller) { - controller.enqueue(parser.end()); + controller.enqueue(citationParser.end()); controller.enqueue(null); }, })