| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| package models |
|
|
| |
| type ModelConfig struct { |
| ID string `json:"id"` |
| Provider string `json:"provider"` |
| MaxTokens int `json:"max_tokens"` |
| ContextWindow int `json:"context_window"` |
| CursorModel string `json:"cursor_model"` |
| } |
|
|
| |
| func GetModelConfigs() map[string]ModelConfig { |
| return map[string]ModelConfig{ |
| "claude-sonnet-4.6": { |
| ID: "claude-sonnet-4.6", |
| Provider: "Anthropic", |
| MaxTokens: 200000, |
| ContextWindow: 200000, |
| CursorModel: "anthropic/claude-sonnet-4.6", |
| }, |
| } |
| } |
|
|
| |
| func GetModelConfig(modelID string) (ModelConfig, bool) { |
| configs := GetModelConfigs() |
| baseModel := TrimThinkingModel(modelID) |
| config, exists := configs[baseModel] |
| if !exists { |
| return ModelConfig{}, false |
| } |
|
|
| config.ID = modelID |
| return config, true |
| } |
|
|
| |
| func GetCursorModel(modelID string) string { |
| if config, exists := GetModelConfig(modelID); exists && config.CursorModel != "" { |
| return config.CursorModel |
| } |
| return TrimThinkingModel(modelID) |
| } |
|
|
| |
| func GetMaxTokensForModel(modelID string) int { |
| if config, exists := GetModelConfig(modelID); exists { |
| return config.MaxTokens |
| } |
| return 4096 |
| } |
|
|
| |
| func GetContextWindowForModel(modelID string) int { |
| if config, exists := GetModelConfig(modelID); exists { |
| return config.ContextWindow |
| } |
| return 128000 |
| } |
|
|
| |
| func ValidateMaxTokens(modelID string, requestedMaxTokens *int) *int { |
| modelMaxTokens := GetMaxTokensForModel(modelID) |
|
|
| if requestedMaxTokens == nil { |
| return &modelMaxTokens |
| } |
|
|
| if *requestedMaxTokens > modelMaxTokens { |
| return &modelMaxTokens |
| } |
|
|
| if *requestedMaxTokens <= 0 { |
| return &modelMaxTokens |
| } |
|
|
| return requestedMaxTokens |
| } |
|
|