| package gemini |
|
|
| import ( |
| "encoding/json" |
| "strings" |
| ) |
|
|
| |
| 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) |
| } |
| } |
|
|