40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
|
|
package agent
|
||
|
|
|
||
|
|
import "strings"
|
||
|
|
|
||
|
|
// ThinkingLevel controls how the provider sends thinking parameters.
|
||
|
|
//
|
||
|
|
// - "adaptive": sends {thinking: {type: "adaptive"}} + output_config.effort (Claude 4.6+)
|
||
|
|
// - "low"/"medium"/"high"/"xhigh": sends {thinking: {type: "enabled", budget_tokens: N}} (all models)
|
||
|
|
// - "off": disables thinking
|
||
|
|
type ThinkingLevel string
|
||
|
|
|
||
|
|
const (
|
||
|
|
ThinkingOff ThinkingLevel = "off"
|
||
|
|
ThinkingLow ThinkingLevel = "low"
|
||
|
|
ThinkingMedium ThinkingLevel = "medium"
|
||
|
|
ThinkingHigh ThinkingLevel = "high"
|
||
|
|
ThinkingXHigh ThinkingLevel = "xhigh"
|
||
|
|
ThinkingAdaptive ThinkingLevel = "adaptive"
|
||
|
|
)
|
||
|
|
|
||
|
|
// parseThinkingLevel normalizes a config string to a ThinkingLevel.
|
||
|
|
// Case-insensitive and whitespace-tolerant for user-facing config values.
|
||
|
|
// Returns ThinkingOff for unknown or empty values.
|
||
|
|
func parseThinkingLevel(level string) ThinkingLevel {
|
||
|
|
switch strings.ToLower(strings.TrimSpace(level)) {
|
||
|
|
case "adaptive":
|
||
|
|
return ThinkingAdaptive
|
||
|
|
case "low":
|
||
|
|
return ThinkingLow
|
||
|
|
case "medium":
|
||
|
|
return ThinkingMedium
|
||
|
|
case "high":
|
||
|
|
return ThinkingHigh
|
||
|
|
case "xhigh":
|
||
|
|
return ThinkingXHigh
|
||
|
|
default:
|
||
|
|
return ThinkingOff
|
||
|
|
}
|
||
|
|
}
|