diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index ed231aabce..cd14f4526b 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -443,6 +443,9 @@ async def get_filtered_models(models, user, db=None): async def get_ollama_tags( request: Request, url_idx: Optional[int] = None, user=Depends(get_verified_user) ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + models = [] if url_idx is None: @@ -707,6 +710,9 @@ async def pull_model( url_idx: int = 0, user=Depends(get_admin_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + form_data = form_data.model_dump(exclude_none=True) form_data["model"] = form_data.get("model", form_data.get("name")) @@ -738,6 +744,9 @@ async def push_model( url_idx: Optional[int] = None, user=Depends(get_admin_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + if url_idx is None: await get_all_models(request, user=user) models = request.app.state.OLLAMA_MODELS @@ -777,6 +786,9 @@ async def create_model( url_idx: int = 0, user=Depends(get_admin_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + log.debug(f"form_data: {form_data}") url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] @@ -801,6 +813,9 @@ async def copy_model( url_idx: Optional[int] = None, user=Depends(get_admin_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + if url_idx is None: await get_all_models(request, user=user) models = request.app.state.OLLAMA_MODELS @@ -861,6 +876,9 @@ async def delete_model( url_idx: Optional[int] = None, user=Depends(get_admin_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + form_data = form_data.model_dump(exclude_none=True) form_data["model"] = form_data.get("model", form_data.get("name")) @@ -923,6 +941,9 @@ async def delete_model( async def show_model_info( request: Request, form_data: ModelNameForm, user=Depends(get_verified_user) ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + form_data = form_data.model_dump(exclude_none=True) form_data["model"] = form_data.get("model", form_data.get("name")) @@ -995,6 +1016,9 @@ async def embed( url_idx: Optional[int] = None, user=Depends(get_verified_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + log.info(f"generate_ollama_batch_embeddings {form_data}") if url_idx is None: @@ -1077,6 +1101,9 @@ async def embeddings( url_idx: Optional[int] = None, user=Depends(get_verified_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + log.info(f"generate_ollama_embeddings {form_data}") if url_idx is None: @@ -1167,6 +1194,9 @@ async def generate_completion( url_idx: Optional[int] = None, user=Depends(get_verified_user), ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + if url_idx is None: await get_all_models(request, user=user) models = request.app.state.OLLAMA_MODELS @@ -1259,6 +1289,9 @@ async def generate_chat_completion( bypass_filter: Optional[bool] = False, bypass_system_prompt: bool = False, ): + if not request.app.state.config.ENABLE_OLLAMA_API: + raise HTTPException(status_code=503, detail="Ollama API is disabled") + # NOTE: We intentionally do NOT use Depends(get_session) here. # Database operations (get_model_by_id, has_access) manage their own short-lived sessions. # This prevents holding a connection during the entire LLM call (30-60+ seconds), diff --git a/backend/open_webui/routers/openai.py b/backend/open_webui/routers/openai.py index 0b5433314c..a4dce3fe0c 100644 --- a/backend/open_webui/routers/openai.py +++ b/backend/open_webui/routers/openai.py @@ -545,6 +545,9 @@ async def get_all_models(request: Request, user: UserModel) -> dict[str, list]: async def get_models( request: Request, url_idx: Optional[int] = None, user=Depends(get_verified_user) ): + if not request.app.state.config.ENABLE_OPENAI_API: + raise HTTPException(status_code=503, detail="OpenAI API is disabled") + models = { "data": [], }