mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
**fix(translator): adjust key renaming logic in Gemini request processing**
- Fixed parameter key renaming to correctly handle `functionDeclarations` and `parametersJsonSchema` in Gemini tools. - Resolved potential overwriting issue by reassigning JSON strings after each key rename.
This commit is contained in:
@@ -30,13 +30,16 @@ func ConvertGeminiRequestToGemini(_ string, inputRawJSON []byte, _ bool) []byte
|
|||||||
if toolsResult.Exists() && toolsResult.IsArray() {
|
if toolsResult.Exists() && toolsResult.IsArray() {
|
||||||
toolResults := toolsResult.Array()
|
toolResults := toolsResult.Array()
|
||||||
for i := 0; i < len(toolResults); i++ {
|
for i := 0; i < len(toolResults); i++ {
|
||||||
|
strJson, _ := util.RenameKey(string(rawJSON), fmt.Sprintf("tools.%d.functionDeclarations", i), fmt.Sprintf("tools.%d.function_declarations", i))
|
||||||
|
rawJSON = []byte(strJson)
|
||||||
|
|
||||||
functionDeclarationsResult := gjson.GetBytes(rawJSON, fmt.Sprintf("tools.%d.function_declarations", i))
|
functionDeclarationsResult := gjson.GetBytes(rawJSON, fmt.Sprintf("tools.%d.function_declarations", i))
|
||||||
if functionDeclarationsResult.Exists() && functionDeclarationsResult.IsArray() {
|
if functionDeclarationsResult.Exists() && functionDeclarationsResult.IsArray() {
|
||||||
functionDeclarationsResults := functionDeclarationsResult.Array()
|
functionDeclarationsResults := functionDeclarationsResult.Array()
|
||||||
for j := 0; j < len(functionDeclarationsResults); j++ {
|
for j := 0; j < len(functionDeclarationsResults); j++ {
|
||||||
parametersResult := gjson.GetBytes(rawJSON, fmt.Sprintf("tools.%d.function_declarations.%d.parameters", i, j))
|
parametersResult := gjson.GetBytes(rawJSON, fmt.Sprintf("tools.%d.function_declarations.%d.parameters", i, j))
|
||||||
if parametersResult.Exists() {
|
if parametersResult.Exists() {
|
||||||
strJson, _ := util.RenameKey(string(rawJSON), fmt.Sprintf("tools.%d.function_declarations.%d.parameters", i, j), fmt.Sprintf("tools.%d.function_declarations.%d.parametersJsonSchema", i, j))
|
strJson, _ = util.RenameKey(string(rawJSON), fmt.Sprintf("tools.%d.function_declarations.%d.parameters", i, j), fmt.Sprintf("tools.%d.function_declarations.%d.parametersJsonSchema", i, j))
|
||||||
rawJSON = []byte(strJson)
|
rawJSON = []byte(strJson)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -87,6 +90,5 @@ func ConvertGeminiRequestToGemini(_ string, inputRawJSON []byte, _ bool) []byte
|
|||||||
})
|
})
|
||||||
|
|
||||||
out = common.AttachDefaultSafetySettings(out, "safetySettings")
|
out = common.AttachDefaultSafetySettings(out, "safetySettings")
|
||||||
|
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user