diff --git a/src/renderer/src/providers/GeminiProvider.ts b/src/renderer/src/providers/GeminiProvider.ts index a5bccda2..35042fa1 100644 --- a/src/renderer/src/providers/GeminiProvider.ts +++ b/src/renderer/src/providers/GeminiProvider.ts @@ -27,7 +27,6 @@ import OpenAI from 'openai' import { CompletionsParams } from '.' import BaseProvider from './BaseProvider' -import { filterInvalidTools } from './geminiToolUtils' import { callMCPTool, filterMCPTools, @@ -183,6 +182,7 @@ export default class GeminiProvider extends BaseProvider { model: model.id, systemInstruction: assistant.prompt, safetySettings: this.getSafetySettings(model.id), + tools: tools, generationConfig: { maxOutputTokens: maxTokens, temperature: assistant?.settings?.temperature, @@ -192,10 +192,6 @@ export default class GeminiProvider extends BaseProvider { }, this.requestOptions ) - const filteredTools = filterInvalidTools(geminiModel.tools) - if (!isEmpty(filteredTools)) { - geminiModel.tools = filteredTools - } const chat = geminiModel.startChat({ history }) const messageContents = await this.getMessageContents(userLastMessage!) diff --git a/src/renderer/src/providers/geminiToolUtils.ts b/src/renderer/src/providers/geminiToolUtils.ts deleted file mode 100644 index 2b2da6a8..00000000 --- a/src/renderer/src/providers/geminiToolUtils.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { CodeExecutionTool, FunctionDeclarationsTool, GoogleSearchRetrievalTool, Tool } from '@google/generative-ai' -import { isEmpty } from 'lodash' - -export function filterInvalidTools(tools: Tool[] | undefined) { - return tools?.filter((e) => !isToolInvalid(e)) ?? [] -} - -function isToolInvalid(tool: Tool | undefined) { - if (tool == undefined) return true - if (isCodeExecutionTool(tool)) { - return isEmpty(tool.codeExecution) - } else if (isGoogleSearchRetrievalTool(tool)) { - return isEmpty(tool.googleSearchRetrieval) - } else if (isFunctionDeclarationsTool(tool)) { - return isEmpty(tool.functionDeclarations) - } else { - return true - } -} - -function isCodeExecutionTool(tool: Tool): tool is CodeExecutionTool { - return (tool as CodeExecutionTool).codeExecution !== undefined -} - -function isGoogleSearchRetrievalTool(tool: Tool): tool is GoogleSearchRetrievalTool { - return (tool as GoogleSearchRetrievalTool).googleSearchRetrieval !== undefined -} - -function isFunctionDeclarationsTool(tool: Tool): tool is FunctionDeclarationsTool { - return (tool as FunctionDeclarationsTool).functionDeclarations !== undefined -} diff --git a/src/renderer/src/providers/mcpToolUtils.ts b/src/renderer/src/providers/mcpToolUtils.ts index f7840335..068e3e01 100644 --- a/src/renderer/src/providers/mcpToolUtils.ts +++ b/src/renderer/src/providers/mcpToolUtils.ts @@ -88,7 +88,8 @@ export function anthropicToolUseToMcpTool(mcpTools: MCPTool[] | undefined, toolU } export function mcpToolsToGeminiTools(mcpTools: MCPTool[] | undefined): geminiToool[] { - if (!mcpTools) { + if (!mcpTools || mcpTools.length === 0) { + // No tools available return [] } const functions: FunctionDeclaration[] = []