diff --git a/cmd/openrouter/main.go b/cmd/openrouter/main.go index f2b44c7d01fb50e4c224fbcc12ed5a70e8a1dec9..be5f21cbd2fd9eebb482d10b74cf7138e646213d 100644 --- a/cmd/openrouter/main.go +++ b/cmd/openrouter/main.go @@ -167,7 +167,7 @@ func main() { SupportsImages: supportsImages, } if model.TopProvider.MaxCompletionTokens != nil { - m.DefaultMaxTokens = int64(*model.TopProvider.MaxCompletionTokens / 2) + m.DefaultMaxTokens = *model.TopProvider.MaxCompletionTokens / 2 } else { m.DefaultMaxTokens = model.ContextLength / 10 } diff --git a/internal/providers/configs/azure.json b/internal/providers/configs/azure.json index 79f4de778a3353e6638ac50e90231556f8ab0dbc..22f41bde811263a1e87f8b54a0d3107afd5c0eac 100644 --- a/internal/providers/configs/azure.json +++ b/internal/providers/configs/azure.json @@ -16,7 +16,9 @@ "cost_per_1m_out_cached": 0.375, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -28,7 +30,9 @@ "cost_per_1m_out_cached": 0.275, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -40,7 +44,9 @@ "cost_per_1m_out_cached": 0.5, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -52,7 +58,9 @@ "cost_per_1m_out_cached": 0, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -63,7 +71,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.5, "context_window": 1047576, - "default_max_tokens": 20000, + "default_max_tokens": 50000, "can_reason": false, "supports_attachments": true }, @@ -75,7 +83,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.09999999999999999, "context_window": 1047576, - "default_max_tokens": 20000, + "default_max_tokens": 50000, "can_reason": false, "supports_attachments": true }, @@ -87,7 +95,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.024999999999999998, "context_window": 1047576, - "default_max_tokens": 20000, + "default_max_tokens": 50000, "can_reason": false, "supports_attachments": true }, @@ -99,7 +107,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 37.5, "context_window": 128000, - "default_max_tokens": 20000, + "default_max_tokens": 50000, "can_reason": false, "supports_attachments": true }, @@ -112,7 +120,9 @@ "cost_per_1m_out_cached": 0.55, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": false }, { diff --git a/internal/providers/configs/openai.json b/internal/providers/configs/openai.json index 94f0cdcfdfde825d2914633c8d60c0edf89c5e9e..e8aba9462a1948fa159ff9fbccfbfcbd44ebc9a2 100644 --- a/internal/providers/configs/openai.json +++ b/internal/providers/configs/openai.json @@ -4,7 +4,7 @@ "type": "openai", "api_key": "$OPENAI_API_KEY", "api_endpoint": "$OPENAI_API_ENDPOINT", - "default_large_model_id": "o4-mini", + "default_large_model_id": "codex-mini-latest", "default_small_model_id": "gpt-4o", "models": [ { @@ -16,7 +16,9 @@ "cost_per_1m_out_cached": 0.375, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -28,7 +30,9 @@ "cost_per_1m_out_cached": 0.275, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -40,7 +44,9 @@ "cost_per_1m_out_cached": 0.5, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -52,7 +58,9 @@ "cost_per_1m_out_cached": 0, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": true }, { @@ -112,7 +120,9 @@ "cost_per_1m_out_cached": 0.55, "context_window": 200000, "default_max_tokens": 50000, - "can_reason": false, + "can_reason": true, + "has_reasoning_effort": true, + "default_reasoning_effort": "medium", "supports_attachments": false }, { diff --git a/pkg/provider/provider.go b/pkg/provider/provider.go index 85275f1155eff219c87d85fce3cdcc436f4a4e47..4bde8e41ea47b00f9dca8fd1de0ee8ec57739d6f 100644 --- a/pkg/provider/provider.go +++ b/pkg/provider/provider.go @@ -45,16 +45,18 @@ type Provider struct { // Model represents an AI model configuration. type Model struct { - ID string `json:"id"` - Name string `json:"model"` - CostPer1MIn float64 `json:"cost_per_1m_in"` - CostPer1MOut float64 `json:"cost_per_1m_out"` - CostPer1MInCached float64 `json:"cost_per_1m_in_cached"` - CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"` - ContextWindow int64 `json:"context_window"` - DefaultMaxTokens int64 `json:"default_max_tokens"` - CanReason bool `json:"can_reason"` - SupportsImages bool `json:"supports_attachments"` + ID string `json:"id"` + Name string `json:"model"` + CostPer1MIn float64 `json:"cost_per_1m_in"` + CostPer1MOut float64 `json:"cost_per_1m_out"` + CostPer1MInCached float64 `json:"cost_per_1m_in_cached"` + CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"` + ContextWindow int64 `json:"context_window"` + DefaultMaxTokens int64 `json:"default_max_tokens"` + CanReason bool `json:"can_reason"` + HasReasoningEffort bool `json:"has_reasoning_efforts"` + DefaultReasoningEffort string `json:"default_reasoning_effort,omitempty"` + SupportsImages bool `json:"supports_attachments"` } // KnownProviders returns all the known inference providers.