Commit 7d0f26c9 by CalciumIon

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.
parent d13103b6
......@@ -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"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment