diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index d57f25dae..1dad54568 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -209,6 +209,9 @@ FORWARD_USER_INFO_HEADER_USER_ROLE = os.environ.get( ) # Header name for chat ID forwarding (customizable via environment variable) +FORWARD_SESSION_INFO_HEADER_MESSAGE_ID = os.environ.get( + "FORWARD_SESSION_INFO_HEADER_MESSAGE_ID", "X-OpenWebUI-Message-Id" +) FORWARD_SESSION_INFO_HEADER_CHAT_ID = os.environ.get( "FORWARD_SESSION_INFO_HEADER_CHAT_ID", "X-OpenWebUI-Chat-Id" ) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index afb0c8390..e74bc9fbc 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -129,6 +129,7 @@ from open_webui.env import ( RAG_SYSTEM_CONTEXT, ENABLE_FORWARD_USER_INFO_HEADERS, FORWARD_SESSION_INFO_HEADER_CHAT_ID, + FORWARD_SESSION_INFO_HEADER_MESSAGE_ID, ) from open_webui.utils.headers import include_user_info_headers from open_webui.constants import TASKS @@ -2245,7 +2246,11 @@ async def process_chat_payload(request, form_data, user, metadata, model): headers = include_user_info_headers(headers, user) if metadata and metadata.get("chat_id"): headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get( - "chat_id" + "chat_id" + ) + if metadata and metadata.get("message_id"): + headers[FORWARD_SESSION_INFO_HEADER_MESSAGE_ID] = metadata.get( + "message_id" ) mcp_clients[server_id] = MCPClient() diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index b350a8c67..92121d279 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -48,6 +48,7 @@ from open_webui.env import ( AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL, ENABLE_FORWARD_USER_INFO_HEADERS, FORWARD_SESSION_INFO_HEADER_CHAT_ID, + FORWARD_SESSION_INFO_HEADER_MESSAGE_ID, ) from open_webui.utils.headers import include_user_info_headers from open_webui.tools.builtin import ( @@ -352,8 +353,12 @@ async def get_tools( headers = include_user_info_headers(headers, user) metadata = extra_params.get("__metadata__", {}) if metadata and metadata.get("chat_id"): - headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = ( - metadata.get("chat_id") + headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get( + "chat_id" + ) + if metadata and metadata.get("message_id"): + headers[FORWARD_SESSION_INFO_HEADER_MESSAGE_ID] = metadata.get( + "message_id" ) def make_tool_function(