From 526c768a812419e271a34de4ca0f87e50b708485 Mon Sep 17 00:00:00 2001 From: khaleefaworks Date: Thu, 23 Jul 2026 16:46:27 +0530 Subject: [PATCH] fix: refresh model list in get_ollama_url when model not found --- backend/open_webui/routers/ollama.py | 30 ++++++++++++++++++---------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 27a029c75d..d074514a63 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -889,8 +889,8 @@ async def embed( key = get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {}))) prefix_id = api_config.get('prefix_id') - if prefix_id: - form_data.model = form_data.model.replace(f'{prefix_id}.', '') + if prefix_id and form_data.model.startswith(f'{prefix_id}.'): + form_data.model = form_data.model[len(f'{prefix_id}.'):] return await send_request( f'{url}/api/embed', @@ -943,8 +943,8 @@ async def embeddings( key = get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {}))) prefix_id = api_config.get('prefix_id') - if prefix_id: - form_data.model = form_data.model.replace(f'{prefix_id}.', '') + if prefix_id and form_data.model.startswith(f'{prefix_id}.'): + form_data.model = form_data.model[len(f'{prefix_id}.'):] return await send_request( f'{url}/api/embeddings', @@ -1001,8 +1001,8 @@ async def generate_completion( ) prefix_id = api_config.get('prefix_id') - if prefix_id: - form_data.model = form_data.model.replace(f'{prefix_id}.', '') + if prefix_id and form_data.model.startswith(f'{prefix_id}.'): + form_data.model = form_data.model[len(f'{prefix_id}.'):] return await send_request( f'{url}/api/generate', @@ -1061,6 +1061,9 @@ async def get_ollama_url(request: Request, model: str, url_idx: int | None = Non await validate_ollama_backend_idx(request, model, url_idx, user) if url_idx is None: models = request.app.state.OLLAMA_MODELS + if not models or model not in models: + await get_all_models(request, user=user) + models = request.app.state.OLLAMA_MODELS if model not in models: raise HTTPException( status_code=400, @@ -1133,7 +1136,8 @@ async def generate_chat_completion( prefix_id = api_config.get('prefix_id') if prefix_id: - payload['model'] = payload['model'].replace(f'{prefix_id}.', '') + if payload['model'].startswith(f'{prefix_id}.'): + payload['model'] = payload['model'][len(f'{prefix_id}.'):] return await send_request( f'{url}/api/chat', @@ -1229,7 +1233,8 @@ async def generate_openai_completion( prefix_id = api_config.get('prefix_id') if prefix_id: - payload['model'] = payload['model'].replace(f'{prefix_id}.', '') + if payload['model'].startswith(f'{prefix_id}.'): + payload['model'] = payload['model'][len(f'{prefix_id}.'):] return await send_request( f'{url}/v1/completions', @@ -1338,7 +1343,8 @@ async def generate_openai_chat_completion( prefix_id = api_config.get('prefix_id') if prefix_id: - payload['model'] = payload['model'].replace(f'{prefix_id}.', '') + if payload['model'].startswith(f'{prefix_id}.'): + payload['model'] = payload['model'][len(f'{prefix_id}.'):] return await send_request( f'{url}/v1/chat/completions', @@ -1392,7 +1398,8 @@ async def generate_anthropic_messages( prefix_id = api_config.get('prefix_id', None) if prefix_id: - payload['model'] = payload['model'].replace(f'{prefix_id}.', '') + if payload['model'].startswith(f'{prefix_id}.'): + payload['model'] = payload['model'][len(f'{prefix_id}.'):] return await send_request( f'{url}/v1/messages', @@ -1452,7 +1459,8 @@ async def generate_responses( prefix_id = api_config.get('prefix_id', None) if prefix_id: - payload['model'] = payload['model'].replace(f'{prefix_id}.', '') + if payload['model'].startswith(f'{prefix_id}.'): + payload['model'] = payload['model'][len(f'{prefix_id}.'):] return await send_request( f'{url}/v1/responses',