From ccc074c90afb8d01d435ecf7982e85bb6ab5c050 Mon Sep 17 00:00:00 2001 From: Sergei Bronnikov Date: Thu, 21 May 2026 11:00:23 +0100 Subject: [PATCH 1/2] update models --- internal/provider/anthropic/cost.go | 62 ++++++++++++++++++++++++----- internal/provider/openai/cost.go | 18 +++++++++ 2 files changed, 69 insertions(+), 11 deletions(-) diff --git a/internal/provider/anthropic/cost.go b/internal/provider/anthropic/cost.go index 95c88be..a527927 100644 --- a/internal/provider/anthropic/cost.go +++ b/internal/provider/anthropic/cost.go @@ -8,6 +8,13 @@ import ( var AnthropicPerMillionTokenCost = map[string]map[string]float64{ "prompt": { + "claude-opus-4.7": 5.0, + "claude-opus-4.6": 5.0, + "claude-opus-4.5": 5.0, + "claude-4.6-sonnet": 3.0, + "claude-4.5-sonnet": 3.0, + "claude-4.5-haiku": 1.0, + "claude-sonnet-4.5": 3.0, "claude-sonnet-4": 3.0, "claude-3.7-sonnet": 3.0, @@ -20,6 +27,13 @@ var AnthropicPerMillionTokenCost = map[string]map[string]float64{ "claude-3-opus": 15.0, }, "completion": { + "claude-opus-4.7": 25.0, + "claude-opus-4.6": 25.0, + "claude-opus-4.5": 25.0, + "claude-4.6-sonnet": 15.0, + "claude-4.5-sonnet": 15.0, + "claude-4.5-haiku": 5.0, + "claude-sonnet-4.5": 15.0, "claude-sonnet-4": 15.0, "claude-3.7-sonnet": 15.0, @@ -87,26 +101,52 @@ func (ce *CostEstimator) EstimatePromptCost(model string, tks int) (float64, err } func SelectModel(model string) string { + if strings.HasPrefix(model, "claude-sonnet-4.6") || strings.HasPrefix(model, "claude-sonnet-4-6") { + return "claude-sonnet-4.6" + } if strings.HasPrefix(model, "claude-sonnet-4.5") || strings.HasPrefix(model, "claude-sonnet-4-5") { return "claude-sonnet-4.5" - } else if strings.HasPrefix(model, "claude-sonnet-4") { + } + if strings.HasPrefix(model, "claude-sonnet-4") { return "claude-sonnet-4" - } else if strings.HasPrefix(model, "claude-3.7-sonnet") || strings.HasPrefix(model, "claude-3-7-sonnet") { + } + if strings.HasPrefix(model, "claude-3.7-sonnet") || strings.HasPrefix(model, "claude-3-7-sonnet") { return "claude-3.7-sonnet" - } else if strings.HasPrefix(model, "claude-opus-4.1") || strings.HasPrefix(model, "claude-opus-4-1") { + } + if strings.HasPrefix(model, "claude-3.5-sonnet") || strings.HasPrefix(model, "claude-3-5-sonnet") { + return "claude-3.5-sonnet" + } + + if strings.HasPrefix(model, "claude-opus-4.7") || strings.HasPrefix(model, "claude-opus-4-7") { + return "claude-opus-4.7" + } + if strings.HasPrefix(model, "claude-opus-4.6") || strings.HasPrefix(model, "claude-opus-4-6") { + return "claude-opus-4.6" + } + if strings.HasPrefix(model, "claude-opus-4.5") || strings.HasPrefix(model, "claude-opus-4-5") { + return "claude-opus-4.5" + } + if strings.HasPrefix(model, "claude-opus-4.1") || strings.HasPrefix(model, "claude-opus-4-1") { return "claude-opus-4.1" - } else if strings.HasPrefix(model, "claude-opus-4") { + } + if strings.HasPrefix(model, "claude-opus-4") { return "claude-opus-4" - } else if strings.HasPrefix(model, "claude-3.5-haiku") || strings.HasPrefix(model, "claude-3-5-haiku") { + } + if strings.HasPrefix(model, "claude-3-opus") { + return "claude-3-opus" + } + + if strings.HasPrefix(model, "claude-4.5-haiku") || strings.HasPrefix(model, "claude-4-5-haiku") { + return "claude-4.5-haiku" + } + if strings.HasPrefix(model, "claude-3.5-haiku") || strings.HasPrefix(model, "claude-3-5-haiku") { return "claude-3.5-haiku" - } else if strings.HasPrefix(model, "claude-3-haiku") { + } + if strings.HasPrefix(model, "claude-3-haiku") { return "claude-3-haiku" - } else if strings.HasPrefix(model, "claude-3.5-sonnet") || strings.HasPrefix(model, "claude-3-5-sonnet") { - return "claude-3.5-sonnet" - } else if strings.HasPrefix(model, "claude-3-opus") { - return "claude-3-opus" } - return "" + + return model } func convertAmazonModelToAnthropicModel(model string) string { diff --git a/internal/provider/openai/cost.go b/internal/provider/openai/cost.go index 3ac1d99..4bfdcbe 100644 --- a/internal/provider/openai/cost.go +++ b/internal/provider/openai/cost.go @@ -41,6 +41,13 @@ var OpenAiPerThousandTokenCost = map[string]map[string]float64{ "chatgpt-image-latest": 0.005, "gpt-image-1-mini": 0.002, + "gpt-5.5": 0.01, + "gpt-5.5~long": 0.01, + "gpt-5.5~short": 0.005, + "gpt-5.5-pro": 0.06, + "gpt-5.5-pro~long": 0.06, + "gpt-5.5-pro~short": 0.03, + "gpt-5.4": 0.005, "gpt-5.4~long": 0.005, "gpt-5.4~short": 0.0025, @@ -115,6 +122,10 @@ var OpenAiPerThousandTokenCost = map[string]map[string]float64{ "babbage-002": 0.000400, }, "cached-prompt": { + "gpt-5.5": 0.001, + "gpt-5.5~long": 0.001, + "gpt-5.5~short": 0.0005, + "gpt-5.4": 0.0005, "gpt-5.4~long": 0.0005, "gpt-5.4~short": 0.00025, @@ -202,6 +213,13 @@ var OpenAiPerThousandTokenCost = map[string]map[string]float64{ "gpt-image-1.5": 0.010, "chatgpt-image-latest": 0.010, + "gpt-5.5": 0.045, + "gpt-5.5~long": 0.045, + "gpt-5.5~short": 0.03, + "gpt-5.5-pro": 0.27, + "gpt-5.5-pro~long": 0.27, + "gpt-5.5-pro~short": 0.18, + "gpt-5.4": 0.0225, "gpt-5.4~long": 0.0225, "gpt-5.4~short": 0.015, From 0b565056d89f378118cd8c79810422d0bc3056d1 Mon Sep 17 00:00:00 2001 From: Sergei Bronnikov Date: Fri, 22 May 2026 12:24:59 +0100 Subject: [PATCH 2/2] log --- internal/provider/anthropic/cost.go | 1 + internal/provider/openai/cost.go | 2 ++ 2 files changed, 3 insertions(+) diff --git a/internal/provider/anthropic/cost.go b/internal/provider/anthropic/cost.go index a527927..ea47a44 100644 --- a/internal/provider/anthropic/cost.go +++ b/internal/provider/anthropic/cost.go @@ -101,6 +101,7 @@ func (ce *CostEstimator) EstimatePromptCost(model string, tks int) (float64, err } func SelectModel(model string) string { + fmt.Printf("==== Input model: %q\n", model) if strings.HasPrefix(model, "claude-sonnet-4.6") || strings.HasPrefix(model, "claude-sonnet-4-6") { return "claude-sonnet-4.6" } diff --git a/internal/provider/openai/cost.go b/internal/provider/openai/cost.go index 4bfdcbe..e83a100 100644 --- a/internal/provider/openai/cost.go +++ b/internal/provider/openai/cost.go @@ -1106,6 +1106,8 @@ func countTotalTokens(model string, r *goopenai.ChatCompletionRequest, tc tokenC } var modelWithLengthCtx = []string{ + "gpt-5.5", + "gpt-5.5-pro", "gpt-5.4", "gpt-5.4-pro", }