mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-07 14:58:23 +08:00
fix(gemini): support includeServerSideToolInvocations in GeminiToolConfig
- Add IncludeServerSideToolInvocations field to GeminiToolConfig to prevent dropping client tool settings. - Fix HTTP 400 error when mixing built-in tools (e.g. Google Search) with function calling on Gemini 3.6/3.7 models. - Add serialization/deserialization unit test TestGeminiToolConfig_IncludeServerSideToolInvocations. Fixes #5709
This commit is contained in:
@@ -112,7 +112,8 @@ type GeminiImageSearch struct {
|
||||
|
||||
// GeminiToolConfig Gemini 工具配置
|
||||
type GeminiToolConfig struct {
|
||||
FunctionCallingConfig *GeminiFunctionCallingConfig `json:"functionCallingConfig,omitempty"`
|
||||
FunctionCallingConfig *GeminiFunctionCallingConfig `json:"functionCallingConfig,omitempty"`
|
||||
IncludeServerSideToolInvocations *bool `json:"includeServerSideToolInvocations,omitempty"`
|
||||
}
|
||||
|
||||
// GeminiFunctionCallingConfig 函数调用配置
|
||||
|
||||
@@ -565,3 +565,27 @@ func TestTransformClaudeToGeminiWithOptions_PreservesWebSearchAlongsideFunctions
|
||||
require.Equal(t, "get_weather", req.Request.Tools[0].FunctionDeclarations[0].Name)
|
||||
require.NotNil(t, req.Request.Tools[1].GoogleSearch)
|
||||
}
|
||||
|
||||
func TestGeminiToolConfig_IncludeServerSideToolInvocations(t *testing.T) {
|
||||
t.Run("serialize and deserialize toolConfig with includeServerSideToolInvocations", func(t *testing.T) {
|
||||
trueVal := true
|
||||
cfg := GeminiToolConfig{
|
||||
FunctionCallingConfig: &GeminiFunctionCallingConfig{
|
||||
Mode: "VALIDATED",
|
||||
},
|
||||
IncludeServerSideToolInvocations: &trueVal,
|
||||
}
|
||||
|
||||
data, err := json.Marshal(cfg)
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, string(data), `"includeServerSideToolInvocations":true`)
|
||||
|
||||
var decoded GeminiToolConfig
|
||||
err = json.Unmarshal(data, &decoded)
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, decoded.IncludeServerSideToolInvocations)
|
||||
require.True(t, *decoded.IncludeServerSideToolInvocations)
|
||||
require.Equal(t, "VALIDATED", decoded.FunctionCallingConfig.Mode)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user