From 3f1045b936f87c7b9daece8cf95f7aae39b6e1fc Mon Sep 17 00:00:00 2001 From: SuYao Date: Tue, 29 Apr 2025 17:36:35 +0800 Subject: [PATCH] fix(GeminiProvider): relocate grounding metadata handling (#5490) * fix(GeminiProvider): relocate grounding metadata handling to improve code clarity and maintainability * refactor(GeminiProvider): enhance conditional checks for chunk processing --- .../providers/AiProvider/GeminiProvider.ts | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/renderer/src/providers/AiProvider/GeminiProvider.ts b/src/renderer/src/providers/AiProvider/GeminiProvider.ts index f9dd4fe7c1..09beed9b9b 100644 --- a/src/renderer/src/providers/AiProvider/GeminiProvider.ts +++ b/src/renderer/src/providers/AiProvider/GeminiProvider.ts @@ -447,26 +447,27 @@ export default class GeminiProvider extends BaseProvider { final_time_completion_millsec = new Date().getTime() - start_time_millsec } - // 3. Grounding/Search Metadata - const groundingMetadata = chunk.candidates?.[0]?.groundingMetadata - if (groundingMetadata) { - onChunk({ - type: ChunkType.LLM_WEB_SEARCH_COMPLETE, - llm_web_search: { - results: groundingMetadata, - source: WebSearchSource.GEMINI - } - } as LLMWebSearchCompleteChunk) - } - // 4. Image Generation const generateImage = this.processGeminiImageResponse(chunk) if (generateImage?.images?.length) { onChunk({ type: ChunkType.IMAGE_COMPLETE, image: generateImage }) } - if (chunk.candidates?.[0]?.finishReason && chunk.text) { - onChunk({ type: ChunkType.TEXT_COMPLETE, text: content }) + if (chunk.candidates?.[0]?.finishReason) { + if (chunk.text) { + onChunk({ type: ChunkType.TEXT_COMPLETE, text: content }) + } + if (chunk.candidates?.[0]?.groundingMetadata) { + // 3. Grounding/Search Metadata + const groundingMetadata = chunk.candidates?.[0]?.groundingMetadata + onChunk({ + type: ChunkType.LLM_WEB_SEARCH_COMPLETE, + llm_web_search: { + results: groundingMetadata, + source: WebSearchSource.GEMINI + } + } as LLMWebSearchCompleteChunk) + } onChunk({ type: ChunkType.BLOCK_COMPLETE, response: {