fix(antigravity): preserve google search with function tools
This commit is contained in:
@@ -730,13 +730,14 @@ func buildTools(tools []ClaudeTool) []GeminiToolDeclaration {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(funcDecls) == 0 {
|
var declarations []GeminiToolDeclaration
|
||||||
if !hasWebSearch {
|
if len(funcDecls) > 0 {
|
||||||
return nil
|
declarations = append(declarations, GeminiToolDeclaration{
|
||||||
}
|
FunctionDeclarations: funcDecls,
|
||||||
|
})
|
||||||
// Web Search 工具映射
|
}
|
||||||
return []GeminiToolDeclaration{{
|
if hasWebSearch {
|
||||||
|
declarations = append(declarations, GeminiToolDeclaration{
|
||||||
GoogleSearch: &GeminiGoogleSearch{
|
GoogleSearch: &GeminiGoogleSearch{
|
||||||
EnhancedContent: &GeminiEnhancedContent{
|
EnhancedContent: &GeminiEnhancedContent{
|
||||||
ImageSearch: &GeminiImageSearch{
|
ImageSearch: &GeminiImageSearch{
|
||||||
@@ -744,10 +745,11 @@ func buildTools(tools []ClaudeTool) []GeminiToolDeclaration {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}}
|
})
|
||||||
|
}
|
||||||
|
if len(declarations) == 0 {
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return []GeminiToolDeclaration{{
|
return declarations
|
||||||
FunctionDeclarations: funcDecls,
|
|
||||||
}}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -263,6 +263,29 @@ func TestBuildTools_CustomTypeTools(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBuildTools_PreservesWebSearchAlongsideFunctions(t *testing.T) {
|
||||||
|
tools := []ClaudeTool{
|
||||||
|
{
|
||||||
|
Name: "get_weather",
|
||||||
|
Description: "Get weather information",
|
||||||
|
InputSchema: map[string]any{"type": "object"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Type: "web_search_20250305",
|
||||||
|
Name: "web_search",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
result := buildTools(tools)
|
||||||
|
require.Len(t, result, 2)
|
||||||
|
require.Len(t, result[0].FunctionDeclarations, 1)
|
||||||
|
require.Equal(t, "get_weather", result[0].FunctionDeclarations[0].Name)
|
||||||
|
require.NotNil(t, result[1].GoogleSearch)
|
||||||
|
require.NotNil(t, result[1].GoogleSearch.EnhancedContent)
|
||||||
|
require.NotNil(t, result[1].GoogleSearch.EnhancedContent.ImageSearch)
|
||||||
|
require.Equal(t, 5, result[1].GoogleSearch.EnhancedContent.ImageSearch.MaxResultCount)
|
||||||
|
}
|
||||||
|
|
||||||
func TestBuildGenerationConfig_ThinkingDynamicBudget(t *testing.T) {
|
func TestBuildGenerationConfig_ThinkingDynamicBudget(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
|
|||||||
Reference in New Issue
Block a user