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