From 378673408ec878ca6f95ac97c175ec75086d104c Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 31 Mar 2026 23:39:54 -0500 Subject: [PATCH] refac --- backend/open_webui/main.py | 4 ++++ backend/open_webui/utils/automations.py | 8 +++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index d96c8a76f..85d05b63f 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -1882,6 +1882,10 @@ async def chat_completion( generate_chat_completions = chat_completion generate_chat_completion = chat_completion +# Expose as app.state so internal callers (e.g. automations) can +# use the full pipeline without importing from main.py (avoids circular deps). +app.state.CHAT_COMPLETION_HANDLER = chat_completion + ################################## # diff --git a/backend/open_webui/utils/automations.py b/backend/open_webui/utils/automations.py index 7ac4c8bc5..6128f57ac 100644 --- a/backend/open_webui/utils/automations.py +++ b/backend/open_webui/utils/automations.py @@ -292,12 +292,10 @@ async def execute_automation(app, automation: AutomationModel) -> None: if filter_ids: form_data["filter_ids"] = filter_ids - # Call chat_completion — returns {'status': True, 'task_id': '...'} - # The background task handles everything: LLM, tools, DB, webhooks. - from open_webui.main import chat_completion as main_chat_completion - + # Call the full chat completion pipeline (same as POST /api/chat/completions). + # The handler reference is stored on app.state to avoid circular imports. request = _build_request(app) - await main_chat_completion(request, form_data, user=user) + await app.state.CHAT_COMPLETION_HANDLER(request, form_data, user=user) # Notify user from open_webui.socket.main import sio