diff --git a/components/model/gemini/gemini.go b/components/model/gemini/gemini.go index 7e6b1f52a..521f77d46 100644 --- a/components/model/gemini/gemini.go +++ b/components/model/gemini/gemini.go @@ -553,6 +553,18 @@ func (cm *ChatModel) genInputAndConf(input []*schema.Message, opts ...model.Opti return "", nil, nil, nil, err } + // When using built-in tools (e.g. GoogleSearch, URLContext) alongside function calling, + // the Gemini API requires IncludeServerSideToolInvocations to be enabled. + hasBuiltInTools := cm.enableGoogleSearch != nil || cm.enableGoogleSearchRetrieval != nil || + cm.enableCodeExecution || cm.enableComputerUse != nil || cm.enableURLContext != nil || + cm.enableFileSearch != nil || cm.enableGoogleMaps != nil + if hasBuiltInTools && len(tools) > 0 { + if m.ToolConfig == nil { + m.ToolConfig = &genai.ToolConfig{} + } + m.ToolConfig.IncludeServerSideToolInvocations = genai.Ptr(true) + } + if geminiOptions.ResponseJSONSchema != nil { m.ResponseMIMEType = "application/json" m.ResponseJsonSchema = geminiOptions.ResponseJSONSchema diff --git a/components/model/gemini/go.mod b/components/model/gemini/go.mod index 780f28619..5afd1c815 100644 --- a/components/model/gemini/go.mod +++ b/components/model/gemini/go.mod @@ -7,9 +7,10 @@ require ( github.com/bytedance/sonic v1.14.1 github.com/cloudwego/eino v0.7.13 github.com/eino-contrib/jsonschema v1.0.3 + github.com/google/uuid v1.6.0 github.com/stretchr/testify v1.10.0 github.com/wk8/go-ordered-map/v2 v2.1.8 - google.golang.org/genai v1.36.0 + google.golang.org/genai v1.52.1 ) require ( @@ -26,7 +27,6 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/s2a-go v0.1.8 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect github.com/goph/emperror v0.17.2 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect diff --git a/components/model/gemini/go.sum b/components/model/gemini/go.sum index 0cae6c011..7872a02b5 100644 --- a/components/model/gemini/go.sum +++ b/components/model/gemini/go.sum @@ -218,8 +218,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genai v1.36.0 h1:sJCIjqTAmwrtAIaemtTiKkg2TO1RxnYEusTmEQ3nGxM= -google.golang.org/genai v1.36.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= +google.golang.org/genai v1.52.1 h1:dYoljKtLDXMiBdVaClSJ/ZPwZ7j1N0lGjMhwOKOQUlk= +google.golang.org/genai v1.52.1/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=