ユーザーアイコン

mizuko

9日前

0
0

Gemini APIでツール定義を変換する実装パターン

Go
バックエンド
AI
Gemini

// Gemini用の変換関数 func ConvertAIToolsToGemini(aiTools []aitool.ToolDefinition) []*genai.Tool { functionDeclarations := make([]*genai.FunctionDeclaration, 0, len(aiTools)) for _, aiTool := range aiTools { funcDecl := &genai.FunctionDeclaration{ Name: aiTool.Name, Description: aiTool.Description, Parameters: &genai.Schema{ Type: genai.TypeObject, Properties: make(map[string]*genai.Schema), Required: []string{}, }, } // パラメータを変換 for name, param := range aiTool.Parameters { var schemaType genai.Type switch param.Type { case "string": schemaType = genai.TypeString case "integer", "number": schemaType = genai.TypeNumber case "boolean": schemaType = genai.TypeBoolean } funcDecl.Parameters.Properties[name] = &genai.Schema{ Type: schemaType, Description: param.Description, } if param.Required { funcDecl.Parameters.Required = append(funcDecl.Parameters.Required, name) } } functionDeclarations = append(functionDeclarations, funcDecl) } // 全ての関数宣言を1つのToolオブジェクトにまとめる return []*genai.Tool{{FunctionDeclarations: functionDeclarations}} }