refactor: Simplify Gemini function parameter handling

- Removed redundant checks for non-empty properties in function parameters.
- Set function parameters to nil when no properties are needed, streamlining the logic for handling Gemini requests.
- Improved code clarity and maintainability by eliminating unnecessary complexity.
This commit is contained in:
CalciumIon
2024-12-22 14:35:21 +08:00
parent 53ab2aaee4
commit 656e809202

View File

@@ -56,30 +56,12 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest) (*GeminiChatReque
googleSearch = true
continue
}
// Ensure parameters has non-empty properties
if tool.Function.Parameters != nil {
params, ok := tool.Function.Parameters.(map[string]interface{})
if ok {
if props, hasProps := params["properties"].(map[string]interface{}); hasProps {
if len(props) == 0 {
// Add an empty property if no parameters needed
params["properties"] = map[string]interface{}{
"_": map[string]interface{}{
"type": "string",
"description": "No parameters needed",
},
}
// Update required field to match the property
params["required"] = []string{"_"}
} else {
// If properties exist, ensure required field matches existing properties
existingProps := make([]string, 0)
for propName := range props {
existingProps = append(existingProps, propName)
}
if len(existingProps) > 0 {
params["required"] = []string{existingProps[0]}
}
tool.Function.Parameters = nil
}
}
}
@@ -105,7 +87,6 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest) (*GeminiChatReque
},
}
}
if textRequest.ResponseFormat != nil && (textRequest.ResponseFormat.Type == "json_schema" || textRequest.ResponseFormat.Type == "json_object") {
geminiRequest.GenerationConfig.ResponseMimeType = "application/json"