From 984a6763ae85d2b42916ad782a1082016065775a Mon Sep 17 00:00:00 2001 From: darkskygit Date: Tue, 8 Apr 2025 16:48:22 +0000 Subject: [PATCH] chore(server): try repair text in structured outputs (#11543) --- .../server/src/plugins/copilot/providers/gemini.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/backend/server/src/plugins/copilot/providers/gemini.ts b/packages/backend/server/src/plugins/copilot/providers/gemini.ts index 13c638ade..8949ca7ef 100644 --- a/packages/backend/server/src/plugins/copilot/providers/gemini.ts +++ b/packages/backend/server/src/plugins/copilot/providers/gemini.ts @@ -9,6 +9,7 @@ import { FilePart, generateObject, generateText, + JSONParseError, streamText, TextPart, } from 'ai'; @@ -234,6 +235,19 @@ export class GeminiProvider messages: msgs, schema, abortSignal: options.signal, + experimental_repairText: async ({ text, error }) => { + if (error instanceof JSONParseError) { + const ret = text.trim(); + if (ret.startsWith('```') || ret.endsWith('```')) { + return ret + .replace(/```[\w\s]+\n/g, '') + .replace(/\n```/g, '') + .trim(); + } + return ret; + } + return null; + }, }).then(r => ({ text: JSON.stringify(r.object) })) : await generateText({ model: modelInstance,