From b1c2536ed2f8639efade04618018e6de9b332df2 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 23 Jun 2026 23:13:28 +0200 Subject: [PATCH] refac --- backend/open_webui/retrieval/loaders/external_document.py | 8 +++++++- backend/open_webui/retrieval/loaders/main.py | 7 +++++++ backend/open_webui/utils/headers.py | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/loaders/external_document.py b/backend/open_webui/retrieval/loaders/external_document.py index ddafc3124b..2dd70dbd4b 100644 --- a/backend/open_webui/retrieval/loaders/external_document.py +++ b/backend/open_webui/retrieval/loaders/external_document.py @@ -6,7 +6,7 @@ from urllib.parse import quote import requests from langchain_core.document_loaders import BaseLoader from langchain_core.documents import Document -from open_webui.utils.headers import include_user_info_headers +from open_webui.utils.headers import get_custom_headers, include_user_info_headers log = logging.getLogger(__name__) @@ -19,6 +19,8 @@ class ExternalDocumentLoader(BaseLoader): api_key: str, mime_type=None, user=None, + headers=None, + metadata=None, **kwargs, ) -> None: self.url = url @@ -28,6 +30,8 @@ class ExternalDocumentLoader(BaseLoader): self.mime_type = mime_type self.user = user + self.headers = headers + self.metadata = metadata def load(self) -> List[Document]: with open(self.file_path, 'rb') as f: @@ -45,6 +49,8 @@ class ExternalDocumentLoader(BaseLoader): except Exception: pass + headers.update(get_custom_headers(self.headers, self.user, self.metadata)) + if self.user is not None: headers = include_user_info_headers(headers, self.user) diff --git a/backend/open_webui/retrieval/loaders/main.py b/backend/open_webui/retrieval/loaders/main.py index ee4166d120..7841ee272b 100644 --- a/backend/open_webui/retrieval/loaders/main.py +++ b/backend/open_webui/retrieval/loaders/main.py @@ -229,6 +229,7 @@ class Loader: def __init__(self, engine: str = '', **kwargs): self.engine = engine self.user = kwargs.get('user', None) + self.metadata = kwargs.get('metadata', {}) self.kwargs = kwargs def load(self, filename: str, file_content_type: str, file_path: str) -> list[Document]: @@ -404,6 +405,12 @@ class Loader: api_key=self.kwargs.get('EXTERNAL_DOCUMENT_LOADER_API_KEY'), mime_type=file_content_type, user=self.user, + headers=self.kwargs.get('EXTERNAL_DOCUMENT_LOADER_HEADERS'), + metadata={ + **self.metadata, + 'file_name': filename, + 'file_content_type': file_content_type, + }, ) elif self.engine == 'tika' and self.kwargs.get('TIKA_SERVER_URL'): if self._is_text_file(file_ext, file_content_type): diff --git a/backend/open_webui/utils/headers.py b/backend/open_webui/utils/headers.py index cb77636ca4..09095e2557 100644 --- a/backend/open_webui/utils/headers.py +++ b/backend/open_webui/utils/headers.py @@ -75,6 +75,9 @@ def get_custom_headers(custom_headers: dict, user=None, metadata: dict = None) - '{{MESSAGE_ID}}': metadata.get('message_id', '') or '', '{{USER_MESSAGE_ID}}': user_message_id or '', '{{USER_MESSAGE_PARENT_ID}}': user_message_parent_id or '', + '{{FILE_ID}}': metadata.get('file_id', '') or '', + '{{FILE_NAME}}': metadata.get('file_name', '') or '', + '{{FILE_CONTENT_TYPE}}': metadata.get('file_content_type', '') or '', '{{TASK}}': metadata.get('task', '') or '', '{{USER_ID}}': (user.id if user else '') or '', '{{USER_NAME}}': (user.name if user else '') or '',