feat: 兼容OpenAI格式下设置gemini模型联网搜索 #615

This commit is contained in:
CalciumIon
2024-12-12 17:58:25 +08:00
parent b1fb595610
commit 5d338337a0
2 changed files with 17 additions and 5 deletions

View File

@@ -34,6 +34,7 @@ type GeminiChatSafetySettings struct {
} }
type GeminiChatTools struct { type GeminiChatTools struct {
GoogleSearch any `json:"googleSearch,omitempty"`
FunctionDeclarations any `json:"functionDeclarations,omitempty"` FunctionDeclarations any `json:"functionDeclarations,omitempty"`
} }

View File

@@ -45,13 +45,25 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest) *GeminiChatReques
} }
if textRequest.Tools != nil { if textRequest.Tools != nil {
functions := make([]dto.FunctionCall, 0, len(textRequest.Tools)) functions := make([]dto.FunctionCall, 0, len(textRequest.Tools))
googleSearch := false
for _, tool := range textRequest.Tools { for _, tool := range textRequest.Tools {
if tool.Function.Name == "googleSearch" {
googleSearch = true
continue
}
functions = append(functions, tool.Function) functions = append(functions, tool.Function)
} }
geminiRequest.Tools = []GeminiChatTools{ if len(functions) > 0 {
{ geminiRequest.Tools = []GeminiChatTools{
FunctionDeclarations: functions, {
}, FunctionDeclarations: functions,
},
}
}
if googleSearch {
geminiRequest.Tools = append(geminiRequest.Tools, GeminiChatTools{
GoogleSearch: make(map[string]string),
})
} }
} else if textRequest.Functions != nil { } else if textRequest.Functions != nil {
geminiRequest.Tools = []GeminiChatTools{ geminiRequest.Tools = []GeminiChatTools{
@@ -134,7 +146,6 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest) *GeminiChatReques
shouldAddDummyModelMessage = false shouldAddDummyModelMessage = false
} }
} }
return &geminiRequest return &geminiRequest
} }