Skip to content

Commit

Permalink
feat: Enhance Gemini function parameter handling
Browse files Browse the repository at this point in the history
- Added logic to ensure that function parameters have non-empty properties.
- Implemented checks to add a default empty property if no parameters are needed.
- Updated the required field to match existing properties, improving the robustness of the Gemini function integration.
  • Loading branch information
Calcium-Ion committed Dec 22, 2024
1 parent a5c48c2 commit 53ab2aa
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions relay/channel/gemini/relay-gemini.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,34 @@ 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]}
}
}
}
}
}
functions = append(functions, tool.Function)
}
if len(functions) > 0 {
Expand Down

0 comments on commit 53ab2aa

Please sign in to comment.