MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / extractGeminiConfig

Function extractGeminiConfig

internal/thinking/apply.go:566–609  ·  view source on GitHub ↗

extractGeminiConfig extracts thinking configuration from Gemini format request body. Gemini API format: - generationConfig.thinkingConfig.thinkingLevel: "none", "auto", or level name (Gemini 3) - generationConfig.thinkingConfig.thinkingBudget: integer (Gemini 2.5) For antigravity providers, the pa

(body []byte, provider string)

Source from the content-addressed store, hash-verified

564// Priority: thinkingLevel is checked first (Gemini 3 format), then thinkingBudget (Gemini 2.5 format).
565// This allows newer Gemini 3 level-based configs to take precedence.
566func extractGeminiConfig(body []byte, provider string) ThinkingConfig {
567 prefix := "generationConfig.thinkingConfig"
568 if provider == "antigravity" {
569 prefix = "request.generationConfig.thinkingConfig"
570 }
571
572 // Check thinkingLevel first (Gemini 3 format takes precedence)
573 level := gjson.GetBytes(body, prefix+".thinkingLevel")
574 if !level.Exists() {
575 // Google official Gemini Python SDK sends snake_case field names
576 level = gjson.GetBytes(body, prefix+".thinking_level")
577 }
578 if level.Exists() {
579 value := level.String()
580 switch value {
581 case "none":
582 return ThinkingConfig{Mode: ModeNone, Budget: 0}
583 case "auto":
584 return ThinkingConfig{Mode: ModeAuto, Budget: -1}
585 default:
586 return ThinkingConfig{Mode: ModeLevel, Level: ThinkingLevel(value)}
587 }
588 }
589
590 // Check thinkingBudget (Gemini 2.5 format)
591 budget := gjson.GetBytes(body, prefix+".thinkingBudget")
592 if !budget.Exists() {
593 // Google official Gemini Python SDK sends snake_case field names
594 budget = gjson.GetBytes(body, prefix+".thinking_budget")
595 }
596 if budget.Exists() {
597 value := int(budget.Int())
598 switch value {
599 case 0:
600 return ThinkingConfig{Mode: ModeNone, Budget: 0}
601 case -1:
602 return ThinkingConfig{Mode: ModeAuto, Budget: -1}
603 default:
604 return ThinkingConfig{Mode: ModeBudget, Budget: value}
605 }
606 }
607
608 return ThinkingConfig{}
609}
610
611// extractOpenAIConfig extracts thinking configuration from OpenAI format request body.
612//

Callers 1

extractThinkingConfigFunction · 0.85

Calls 2

ThinkingLevelTypeAlias · 0.85
StringMethod · 0.45

Tested by

no test coverage detected