diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 238a267e7e..da3060ae7b 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -336,7 +336,9 @@ def resolve_api_config(api_configs: dict, idx: int, url: str) -> dict: @cached( ttl=MODELS_CACHE_TTL, - key=lambda _, user: f'ollama_all_models_{user.id}' if user else 'ollama_all_models', + # key_builder (not key) is the per-call hook in aiocache 0.12; `key=` is a + # static key, so a `key=lambda` collapsed every caller to one shared entry. + key_builder=lambda _func, request, user=None: f'ollama_all_models_{user.id}' if user else 'ollama_all_models', ) async def get_all_models(request: Request, user: UserModel | None = None): """Aggregate model tags from every enabled Ollama backend.""" diff --git a/backend/open_webui/routers/openai.py b/backend/open_webui/routers/openai.py index 2631011a5b..a30e24d8e4 100644 --- a/backend/open_webui/routers/openai.py +++ b/backend/open_webui/routers/openai.py @@ -522,7 +522,9 @@ async def get_filtered_models(models, user, db=None): @cached( ttl=MODELS_CACHE_TTL, - key=lambda _, user: f'openai_all_models_{user.id}' if user else 'openai_all_models', + # key_builder (not key) is the per-call hook in aiocache 0.12; `key=` is a + # static key, so a `key=lambda` collapsed every caller to one shared entry. + key_builder=lambda _func, request, user=None: f'openai_all_models_{user.id}' if user else 'openai_all_models', ) async def get_all_models(request: Request, user: UserModel) -> dict[str, list]: log.info('get_all_models()')