refactor(thinking): use parentheses for metadata suffix

This commit is contained in:
hkfires
2025-12-11 18:39:07 +08:00
parent 2760989401
commit e79f65fd8e
2 changed files with 15 additions and 15 deletions

View File

@@ -11,7 +11,7 @@ import (
"github.com/tidwall/sjson"
)
// applyThinkingMetadata applies thinking config from model suffix metadata (e.g., [high], [8192])
// applyThinkingMetadata applies thinking config from model suffix metadata (e.g., (high), (8192))
// for standard Gemini format payloads. It normalizes the budget when the model supports thinking.
func applyThinkingMetadata(payload []byte, metadata map[string]any, model string) []byte {
budgetOverride, includeOverride, ok := util.ResolveThinkingConfigFromMetadata(model, metadata)
@@ -28,7 +28,7 @@ func applyThinkingMetadata(payload []byte, metadata map[string]any, model string
return util.ApplyGeminiThinkingConfig(payload, budgetOverride, includeOverride)
}
// applyThinkingMetadataCLI applies thinking config from model suffix metadata (e.g., [high], [8192])
// applyThinkingMetadataCLI applies thinking config from model suffix metadata (e.g., (high), (8192))
// for Gemini CLI format payloads (nested under "request"). It normalizes the budget when the model supports thinking.
func applyThinkingMetadataCLI(payload []byte, metadata map[string]any, model string) []byte {
budgetOverride, includeOverride, ok := util.ResolveThinkingConfigFromMetadata(model, metadata)

View File

@@ -15,16 +15,16 @@ const (
// NormalizeThinkingModel parses dynamic thinking suffixes on model names and returns
// the normalized base model with extracted metadata. Supported pattern:
// - "[<value>]" where value can be:
// - A numeric budget (e.g., "[8192]", "[16384]")
// - A reasoning effort level (e.g., "[high]", "[medium]", "[low]")
// - "(<value>)" where value can be:
// - A numeric budget (e.g., "(8192)", "(16384)")
// - A reasoning effort level (e.g., "(high)", "(medium)", "(low)")
//
// Examples:
// - "claude-sonnet-4-5-20250929[16384]" → budget=16384
// - "gpt-5.1[high]" → reasoning_effort="high"
// - "gemini-2.5-pro[32768]" → budget=32768
// - "claude-sonnet-4-5-20250929(16384)" → budget=16384
// - "gpt-5.1(high)" → reasoning_effort="high"
// - "gemini-2.5-pro(32768)" → budget=32768
//
// Note: Empty brackets "[]" are not supported and will be ignored.
// Note: Empty parentheses "()" are not supported and will be ignored.
func NormalizeThinkingModel(modelName string) (string, map[string]any) {
if modelName == "" {
return modelName, nil
@@ -38,16 +38,16 @@ func NormalizeThinkingModel(modelName string) (string, map[string]any) {
matched bool
)
// Match "[value]" pattern at the end of the model name
if idx := strings.LastIndex(modelName, "["); idx != -1 {
if !strings.HasSuffix(modelName, "]") {
// Incomplete bracket, ignore
// Match "(<value>)" pattern at the end of the model name
if idx := strings.LastIndex(modelName, "("); idx != -1 {
if !strings.HasSuffix(modelName, ")") {
// Incomplete parenthesis, ignore
return baseModel, nil
}
value := modelName[idx+1 : len(modelName)-1] // Extract content between [ and ]
value := modelName[idx+1 : len(modelName)-1] // Extract content between ( and )
if value == "" {
// Empty brackets not supported
// Empty parentheses not supported
return baseModel, nil
}