Fix: Correctly relay FunctionResponse content for Gemini API
This commit is contained in:
@@ -27,14 +27,14 @@ type FunctionCall struct {
|
||||
Arguments any `json:"args"`
|
||||
}
|
||||
|
||||
type GeminiFunctionResponseContent struct {
|
||||
Name string `json:"name"`
|
||||
Content any `json:"content"`
|
||||
}
|
||||
// type GeminiFunctionResponseContent struct {
|
||||
// Name string `json:"name"`
|
||||
// Content any `json:"content"`
|
||||
// }
|
||||
|
||||
type FunctionResponse struct {
|
||||
Name string `json:"name"`
|
||||
Response GeminiFunctionResponseContent `json:"response"`
|
||||
Response map[string]interface{} `json:"response"`
|
||||
}
|
||||
|
||||
type GeminiPartExecutableCode struct {
|
||||
|
||||
@@ -173,17 +173,22 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest, info *relaycommon
|
||||
} else if val, exists := tool_call_ids[message.ToolCallId]; exists {
|
||||
name = val
|
||||
}
|
||||
content := common.StrToMap(message.StringContent())
|
||||
contentMap := common.StrToMap(message.StringContent())
|
||||
functionResp := &FunctionResponse{
|
||||
Name: name,
|
||||
Response: GeminiFunctionResponseContent{
|
||||
Name: name,
|
||||
Content: content,
|
||||
},
|
||||
}
|
||||
if content == nil {
|
||||
functionResp.Response.Content = message.StringContent()
|
||||
Response: contentMap,
|
||||
}
|
||||
// If StrToMap returns nil because message.StringContent() is not a valid JSON object string,
|
||||
// and Gemini strictly requires an object (e.g., {}), this might need adjustment.
|
||||
// For example:
|
||||
// if contentMap == nil && message.StringContent() != "" {
|
||||
// // Option 1: Send an empty object if that's preferred over null
|
||||
// // functionResp.Response = make(map[string]interface{})
|
||||
// // Option 2: Wrap the plain string if that's ever the case and needs to be an object
|
||||
// // functionResp.Response = map[string]interface{}{"text_content": message.StringContent()}
|
||||
// }
|
||||
// For now, directly assigning contentMap is the most straightforward fix for the reported issue.
|
||||
|
||||
*parts = append(*parts, GeminiPart{
|
||||
FunctionResponse: functionResp,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user