mirror of
https://github.com/alibaba/higress.git
synced 2026-06-08 20:27:31 +08:00
feat(ai-proxy): gemini model thinking support (#2712)
This commit is contained in:
@@ -28,6 +28,12 @@ const (
|
||||
geminiImageGenerationPath = "predict"
|
||||
)
|
||||
|
||||
var geminiThinkingModels = map[string]bool{
|
||||
"gemini-2.5-pro": true,
|
||||
"gemini-2.5-flash": true,
|
||||
"gemini-2.5-flash-lite": true,
|
||||
}
|
||||
|
||||
type geminiProviderInitializer struct{}
|
||||
|
||||
func (g *geminiProviderInitializer) ValidateConfig(config *ProviderConfig) error {
|
||||
@@ -365,6 +371,7 @@ func (g *geminiProvider) buildGeminiChatRequest(request *chatCompletionRequest)
|
||||
Threshold: threshold,
|
||||
})
|
||||
}
|
||||
|
||||
geminiRequest := geminiGenerationContentRequest{
|
||||
Contents: make([]geminiChatContent, 0, len(request.Messages)),
|
||||
SafetySettings: safetySettings,
|
||||
@@ -379,6 +386,13 @@ func (g *geminiProvider) buildGeminiChatRequest(request *chatCompletionRequest)
|
||||
},
|
||||
}
|
||||
|
||||
if geminiThinkingModels[request.Model] {
|
||||
geminiRequest.GenerationConfig.ThinkingConfig = &geminiThinkingConfig{
|
||||
IncludeThoughts: true,
|
||||
ThinkingBudget: g.config.geminiThinkingBudget,
|
||||
}
|
||||
}
|
||||
|
||||
if request.Tools != nil {
|
||||
functions := make([]function, 0, len(request.Tools))
|
||||
for _, tool := range request.Tools {
|
||||
|
||||
@@ -344,6 +344,9 @@ type ProviderConfig struct {
|
||||
// @Title zh-CN Gemini AI内容过滤和安全级别设定
|
||||
// @Description zh-CN 仅适用于 Gemini AI 服务。参考:https://ai.google.dev/gemini-api/docs/safety-settings
|
||||
geminiSafetySetting map[string]string `required:"false" yaml:"geminiSafetySetting" json:"geminiSafetySetting"`
|
||||
// @Title zh-CN Gemini Thinking Budget 配置
|
||||
// @Description zh-CN 仅适用于 Gemini AI 服务,用于控制思考预算
|
||||
geminiThinkingBudget int64 `required:"false" yaml:"geminiThinkingBudget" json:"geminiThinkingBudget"`
|
||||
// @Title zh-CN Vertex AI访问区域
|
||||
// @Description zh-CN 仅适用于Vertex AI服务。如需查看支持的区域的完整列表,请参阅https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations?hl=zh-cn#available-regions
|
||||
vertexRegion string `required:"false" yaml:"vertexRegion" json:"vertexRegion"`
|
||||
@@ -472,6 +475,7 @@ func (c *ProviderConfig) FromJson(json gjson.Result) {
|
||||
c.geminiSafetySetting[k] = v.String()
|
||||
}
|
||||
}
|
||||
c.geminiThinkingBudget = json.Get("geminiThinkingBudget").Int()
|
||||
c.vertexRegion = json.Get("vertexRegion").String()
|
||||
c.vertexProjectId = json.Get("vertexProjectId").String()
|
||||
c.vertexAuthKey = json.Get("vertexAuthKey").String()
|
||||
|
||||
Reference in New Issue
Block a user