tools: handle the case where a tool call sends "arguments" or "parameters" as a serialized json string (#12413)

This commit is contained in:
Gabe Goodhart
2025-09-25 15:37:39 -06:00
committed by GitHub
parent fbd82ba5bb
commit 2fba04b5fb
2 changed files with 28 additions and 0 deletions

View File

@@ -273,9 +273,21 @@ func findArguments(buffer []byte) (map[string]any, int) {
if args, ok := obj["arguments"].(map[string]any); ok {
return args, true
}
if argsStr, ok := obj["arguments"].(string); ok {
var argsData map[string]interface{}
if err := json.Unmarshal([]byte(argsStr), &argsData); err == nil {
return argsData, ok
}
}
if args, ok := obj["parameters"].(map[string]any); ok {
return args, true
}
if argsStr, ok := obj["parameters"].(string); ok {
var argsData map[string]interface{}
if err := json.Unmarshal([]byte(argsStr), &argsData); err == nil {
return argsData, ok
}
}
return nil, true
}