| | |
| | | |
| | | if selectionMode == config.ModelSelectionModeManual { |
| | | if profile, err := model.GetModelProfile(cfg.SelectedModelID); err == nil { |
| | | if isModelAvailableForLanguage(profile.ID, settings.EffectiveLanguageID) { |
| | | return CurrentModel{ |
| | | ModelID: profile.ID, |
| | | Profile: profile, |
| | |
| | | LanguageSettings: settings, |
| | | } |
| | | } |
| | | fallbackReason = "manual model not available for language" |
| | | logger.Info("Manual SelectedModelID %q is not available for language %q, falling back to language default %q", cfg.SelectedModelID, settings.EffectiveLanguageID, modelID) |
| | | } else { |
| | | fallbackReason = "invalid manual model selection" |
| | | logger.Info("Invalid manual SelectedModelID %q, falling back to language default %q", cfg.SelectedModelID, modelID) |
| | | } |
| | | } |
| | | |
| | | profile, err := model.GetModelProfile(modelID) |
| | |
| | | FallbackReason: fallbackReason, |
| | | } |
| | | } |
| | | |
| | | func isModelAvailableForLanguage(modelID, languageID string) bool { |
| | | profile, err := model.GetLanguageProfile(languageID) |
| | | if err != nil { |
| | | return false |
| | | } |
| | | if profile.DefaultModelID == modelID { |
| | | return true |
| | | } |
| | | for _, upgradeModelID := range profile.UpgradeModelIDs { |
| | | if upgradeModelID == modelID { |
| | | return true |
| | | } |
| | | } |
| | | return false |
| | | } |