From 0079f4f437102b35d1c32fca2699890499f86a4b Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 22 May 2025 10:11:26 +0800 Subject: [PATCH] refactor: update Gemini file upload method to accept baseURL parameter - Modified the uploadFile method in GeminiService to include baseURL in the parameters. - Updated the corresponding calls in the preload and renderer layers to pass the baseURL along with the apiKey. --- src/main/services/GeminiService.ts | 15 +++++++++++++-- src/preload/index.ts | 3 ++- .../src/providers/AiProvider/GeminiProvider.ts | 5 ++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/services/GeminiService.ts b/src/main/services/GeminiService.ts index 8427e1304e..e7b8310664 100644 --- a/src/main/services/GeminiService.ts +++ b/src/main/services/GeminiService.ts @@ -8,8 +8,19 @@ export class GeminiService { private static readonly FILE_LIST_CACHE_KEY = 'gemini_file_list' private static readonly CACHE_DURATION = 3000 - static async uploadFile(_: Electron.IpcMainInvokeEvent, file: FileType, apiKey: string): Promise { - const sdk = new GoogleGenAI({ vertexai: false, apiKey }) + static async uploadFile( + _: Electron.IpcMainInvokeEvent, + file: FileType, + { apiKey, baseURL }: { apiKey: string; baseURL: string } + ): Promise { + const sdk = new GoogleGenAI({ + vertexai: false, + apiKey, + httpOptions: { + baseUrl: baseURL + } + }) + return await sdk.files.upload({ file: file.path, config: { diff --git a/src/preload/index.ts b/src/preload/index.ts index 5159f29097..81174d22d0 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -116,7 +116,8 @@ const api = { resetMinimumSize: () => ipcRenderer.invoke(IpcChannel.Windows_ResetMinimumSize) }, gemini: { - uploadFile: (file: FileType, apiKey: string) => ipcRenderer.invoke(IpcChannel.Gemini_UploadFile, file, apiKey), + uploadFile: (file: FileType, { apiKey, baseURL }: { apiKey: string; baseURL: string }) => + ipcRenderer.invoke(IpcChannel.Gemini_UploadFile, file, { apiKey, baseURL }), base64File: (file: FileType) => ipcRenderer.invoke(IpcChannel.Gemini_Base64File, file), retrieveFile: (file: FileType, apiKey: string) => ipcRenderer.invoke(IpcChannel.Gemini_RetrieveFile, file, apiKey), listFiles: (apiKey: string) => ipcRenderer.invoke(IpcChannel.Gemini_ListFiles, apiKey), diff --git a/src/renderer/src/providers/AiProvider/GeminiProvider.ts b/src/renderer/src/providers/AiProvider/GeminiProvider.ts index 222abeaaf1..c6a1689c03 100644 --- a/src/renderer/src/providers/AiProvider/GeminiProvider.ts +++ b/src/renderer/src/providers/AiProvider/GeminiProvider.ts @@ -113,7 +113,10 @@ export default class GeminiProvider extends BaseProvider { } // If file is not found, upload it to Gemini - const result = await window.api.gemini.uploadFile(file, this.apiKey) + const result = await window.api.gemini.uploadFile(file, { + apiKey: this.apiKey, + baseURL: this.getBaseURL() + }) return { fileData: {