refactor(GeminiProvider): remove unused tool filtering logic and update tools assignment

This commit is contained in:
Vaayne 2025-03-11 09:42:11 +08:00 committed by 亢奋猫
parent 53892fa5e6
commit 75eb6680d8
3 changed files with 3 additions and 37 deletions

View File

@ -27,7 +27,6 @@ import OpenAI from 'openai'
import { CompletionsParams } from '.' import { CompletionsParams } from '.'
import BaseProvider from './BaseProvider' import BaseProvider from './BaseProvider'
import { filterInvalidTools } from './geminiToolUtils'
import { import {
callMCPTool, callMCPTool,
filterMCPTools, filterMCPTools,
@ -183,6 +182,7 @@ export default class GeminiProvider extends BaseProvider {
model: model.id, model: model.id,
systemInstruction: assistant.prompt, systemInstruction: assistant.prompt,
safetySettings: this.getSafetySettings(model.id), safetySettings: this.getSafetySettings(model.id),
tools: tools,
generationConfig: { generationConfig: {
maxOutputTokens: maxTokens, maxOutputTokens: maxTokens,
temperature: assistant?.settings?.temperature, temperature: assistant?.settings?.temperature,
@ -192,10 +192,6 @@ export default class GeminiProvider extends BaseProvider {
}, },
this.requestOptions this.requestOptions
) )
const filteredTools = filterInvalidTools(geminiModel.tools)
if (!isEmpty(filteredTools)) {
geminiModel.tools = filteredTools
}
const chat = geminiModel.startChat({ history }) const chat = geminiModel.startChat({ history })
const messageContents = await this.getMessageContents(userLastMessage!) const messageContents = await this.getMessageContents(userLastMessage!)

View File

@ -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
}

View File

@ -88,7 +88,8 @@ export function anthropicToolUseToMcpTool(mcpTools: MCPTool[] | undefined, toolU
} }
export function mcpToolsToGeminiTools(mcpTools: MCPTool[] | undefined): geminiToool[] { export function mcpToolsToGeminiTools(mcpTools: MCPTool[] | undefined): geminiToool[] {
if (!mcpTools) { if (!mcpTools || mcpTools.length === 0) {
// No tools available
return [] return []
} }
const functions: FunctionDeclaration[] = [] const functions: FunctionDeclaration[] = []