fix: Auto select model only for active provider

This commit is contained in:
Faisal Amir 2025-08-19 14:47:02 +07:00
parent 55390de070
commit cedf42d683

View File

@ -78,36 +78,31 @@ const DropdownModelProvider = ({
const [searchValue, setSearchValue] = useState('') const [searchValue, setSearchValue] = useState('')
const searchInputRef = useRef<HTMLInputElement>(null) const searchInputRef = useRef<HTMLInputElement>(null)
// Helper function to check if a model exists in providers
const checkModelExists = useCallback((providerName: string, modelId: string) => {
const provider = providers.find(
(p) => p.provider === providerName && p.active
)
return provider?.models.find((m) => m.id === modelId)
}, [providers])
// Initialize model provider only once // Initialize model provider only once
useEffect(() => { useEffect(() => {
// Auto select model when existing thread is passed // Auto select model when existing thread is passed
if (model) { if (model) {
selectModelProvider(model?.provider as string, model?.id as string) selectModelProvider(model?.provider as string, model?.id as string)
if (!checkModelExists(model.provider, model.id)) {
selectModelProvider('', '')
}
} else if (useLastUsedModel) { } else if (useLastUsedModel) {
// Try to use last used model only when explicitly requested (for new chat) // Try to use last used model only when explicitly requested (for new chat)
const lastUsed = getLastUsedModel() const lastUsed = getLastUsedModel()
if (lastUsed) { if (lastUsed && checkModelExists(lastUsed.provider, lastUsed.model)) {
// Verify the last used model still exists selectModelProvider(lastUsed.provider, lastUsed.model)
const provider = providers.find(
(p) => p.provider === lastUsed.provider && p.active
)
const modelExists = provider?.models.find(
(m) => m.id === lastUsed.model
)
if (provider && modelExists) {
selectModelProvider(lastUsed.provider, lastUsed.model)
} else {
// Fallback to default model if last used model no longer exists
selectModelProvider('llamacpp', 'llama3.2:3b')
}
} else { } else {
// default model, we should add from setting // Fallback to default model if last used model no longer exists
selectModelProvider('llamacpp', 'llama3.2:3b') selectModelProvider('', '')
} }
} else {
// default model for non-new-chat contexts
selectModelProvider('llamacpp', 'llama3.2:3b')
} }
}, [ }, [
model, model,
@ -115,6 +110,7 @@ const DropdownModelProvider = ({
updateCurrentThreadModel, updateCurrentThreadModel,
providers, providers,
useLastUsedModel, useLastUsedModel,
checkModelExists,
]) ])
// Update display model when selection changes // Update display model when selection changes
@ -158,9 +154,11 @@ const DropdownModelProvider = ({
provider && provider &&
predefinedProviders.some((e) => predefinedProviders.some((e) =>
e.provider.includes(provider.provider) e.provider.includes(provider.provider)
) && provider.provider !== 'llamacpp' && !provider.api_key?.length ) &&
provider.provider !== 'llamacpp' &&
!provider.api_key?.length
) )
return return
const capabilities = modelItem.capabilities || [] const capabilities = modelItem.capabilities || []
const capabilitiesString = capabilities.join(' ') const capabilitiesString = capabilities.join(' ')