| package gemini | |
| import ( | |
| "encoding/json" | |
| "strings" | |
| ) | |
| //nolint:unused // compatibility hook for native Gemini request normalization path. | |
| func collectGeminiPassThrough(req map[string]any) map[string]any { | |
| cfg, _ := req["generationConfig"].(map[string]any) | |
| if len(cfg) == 0 { | |
| return nil | |
| } | |
| out := map[string]any{} | |
| if v, ok := cfg["temperature"]; ok { | |
| out["temperature"] = v | |
| } | |
| if v, ok := cfg["topP"]; ok { | |
| out["top_p"] = v | |
| } | |
| if v, ok := cfg["maxOutputTokens"]; ok { | |
| out["max_tokens"] = v | |
| } | |
| if v, ok := cfg["stopSequences"]; ok { | |
| out["stop"] = v | |
| } | |
| if len(out) == 0 { | |
| return nil | |
| } | |
| return out | |
| } | |
| func asString(v any) string { | |
| s, _ := v.(string) | |
| return s | |
| } | |
| func stringifyJSON(v any) string { | |
| switch x := v.(type) { | |
| case nil: | |
| return "{}" | |
| case string: | |
| s := strings.TrimSpace(x) | |
| if s == "" { | |
| return "{}" | |
| } | |
| return s | |
| default: | |
| b, err := json.Marshal(x) | |
| if err != nil || len(b) == 0 { | |
| return "{}" | |
| } | |
| return string(b) | |
| } | |
| } | |