mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-18 20:30:51 +08:00
fix(gemini): force type to string for enum fields to fix Antigravity Gemini API error (Relates to #1260)
This commit is contained in:
@@ -175,7 +175,7 @@ func convertConstToEnum(jsonStr string) string {
|
|||||||
return jsonStr
|
return jsonStr
|
||||||
}
|
}
|
||||||
|
|
||||||
// convertEnumValuesToStrings ensures all enum values are strings.
|
// convertEnumValuesToStrings ensures all enum values are strings and the schema type is set to string.
|
||||||
// Gemini API requires enum values to be of type string, not numbers or booleans.
|
// Gemini API requires enum values to be of type string, not numbers or booleans.
|
||||||
func convertEnumValuesToStrings(jsonStr string) string {
|
func convertEnumValuesToStrings(jsonStr string) string {
|
||||||
for _, p := range findPaths(jsonStr, "enum") {
|
for _, p := range findPaths(jsonStr, "enum") {
|
||||||
@@ -185,19 +185,15 @@ func convertEnumValuesToStrings(jsonStr string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var stringVals []string
|
var stringVals []string
|
||||||
needsConversion := false
|
|
||||||
for _, item := range arr.Array() {
|
for _, item := range arr.Array() {
|
||||||
// Check if any value is not a string
|
|
||||||
if item.Type != gjson.String {
|
|
||||||
needsConversion = true
|
|
||||||
}
|
|
||||||
stringVals = append(stringVals, item.String())
|
stringVals = append(stringVals, item.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only update if we found non-string values
|
// Always update enum values to strings and set type to "string"
|
||||||
if needsConversion {
|
// This ensures compatibility with Antigravity Gemini which only allows enum for STRING type
|
||||||
jsonStr, _ = sjson.Set(jsonStr, p, stringVals)
|
jsonStr, _ = sjson.Set(jsonStr, p, stringVals)
|
||||||
}
|
parentPath := trimSuffix(p, ".enum")
|
||||||
|
jsonStr, _ = sjson.Set(jsonStr, joinPath(parentPath, "type"), "string")
|
||||||
}
|
}
|
||||||
return jsonStr
|
return jsonStr
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user