mirror of
https://github.com/open-webui/open-webui
synced 2024-11-16 21:42:58 +00:00
Merge pull request #6589 from DucNgn/dn_forward_user_info_in_headers
feat: Add option to forward user info as headers to OpenAI API
This commit is contained in:
commit
dead5cdd4e
@ -32,7 +32,7 @@ from open_webui.config import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from open_webui.constants import ERROR_MESSAGES
|
from open_webui.constants import ERROR_MESSAGES
|
||||||
from open_webui.env import SRC_LOG_LEVELS, DEVICE_TYPE
|
from open_webui.env import SRC_LOG_LEVELS, DEVICE_TYPE, ENABLE_FORWARD_USER_INFO_HEADERS
|
||||||
from fastapi import Depends, FastAPI, File, HTTPException, Request, UploadFile, status
|
from fastapi import Depends, FastAPI, File, HTTPException, Request, UploadFile, status
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import FileResponse
|
from fastapi.responses import FileResponse
|
||||||
@ -248,6 +248,12 @@ async def speech(request: Request, user=Depends(get_verified_user)):
|
|||||||
headers["Authorization"] = f"Bearer {app.state.config.TTS_OPENAI_API_KEY}"
|
headers["Authorization"] = f"Bearer {app.state.config.TTS_OPENAI_API_KEY}"
|
||||||
headers["Content-Type"] = "application/json"
|
headers["Content-Type"] = "application/json"
|
||||||
|
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS:
|
||||||
|
headers["X-OpenWebUI-User-Name"] = user.name
|
||||||
|
headers["X-OpenWebUI-User-Id"] = user.id
|
||||||
|
headers["X-OpenWebUI-User-Email"] = user.email
|
||||||
|
headers["X-OpenWebUI-User-Role"] = user.role
|
||||||
|
|
||||||
try:
|
try:
|
||||||
body = body.decode("utf-8")
|
body = body.decode("utf-8")
|
||||||
body = json.loads(body)
|
body = json.loads(body)
|
||||||
|
@ -35,7 +35,7 @@ from open_webui.config import (
|
|||||||
AppConfig,
|
AppConfig,
|
||||||
)
|
)
|
||||||
from open_webui.constants import ERROR_MESSAGES
|
from open_webui.constants import ERROR_MESSAGES
|
||||||
from open_webui.env import SRC_LOG_LEVELS
|
from open_webui.env import SRC_LOG_LEVELS, ENABLE_FORWARD_USER_INFO_HEADERS
|
||||||
from fastapi import Depends, FastAPI, HTTPException, Request
|
from fastapi import Depends, FastAPI, HTTPException, Request
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
@ -456,6 +456,12 @@ async def image_generations(
|
|||||||
headers["Authorization"] = f"Bearer {app.state.config.OPENAI_API_KEY}"
|
headers["Authorization"] = f"Bearer {app.state.config.OPENAI_API_KEY}"
|
||||||
headers["Content-Type"] = "application/json"
|
headers["Content-Type"] = "application/json"
|
||||||
|
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS:
|
||||||
|
headers["X-OpenWebUI-User-Name"] = user.name
|
||||||
|
headers["X-OpenWebUI-User-Id"] = user.id
|
||||||
|
headers["X-OpenWebUI-User-Email"] = user.email
|
||||||
|
headers["X-OpenWebUI-User-Role"] = user.role
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"model": (
|
"model": (
|
||||||
app.state.config.MODEL
|
app.state.config.MODEL
|
||||||
|
@ -21,6 +21,7 @@ from open_webui.config import (
|
|||||||
from open_webui.env import (
|
from open_webui.env import (
|
||||||
AIOHTTP_CLIENT_TIMEOUT,
|
AIOHTTP_CLIENT_TIMEOUT,
|
||||||
AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST,
|
AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST,
|
||||||
|
ENABLE_FORWARD_USER_INFO_HEADERS,
|
||||||
)
|
)
|
||||||
|
|
||||||
from open_webui.constants import ERROR_MESSAGES
|
from open_webui.constants import ERROR_MESSAGES
|
||||||
@ -140,6 +141,11 @@ async def speech(request: Request, user=Depends(get_verified_user)):
|
|||||||
if "openrouter.ai" in app.state.config.OPENAI_API_BASE_URLS[idx]:
|
if "openrouter.ai" in app.state.config.OPENAI_API_BASE_URLS[idx]:
|
||||||
headers["HTTP-Referer"] = "https://openwebui.com/"
|
headers["HTTP-Referer"] = "https://openwebui.com/"
|
||||||
headers["X-Title"] = "Open WebUI"
|
headers["X-Title"] = "Open WebUI"
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS:
|
||||||
|
headers["X-OpenWebUI-User-Name"] = user.name
|
||||||
|
headers["X-OpenWebUI-User-Id"] = user.id
|
||||||
|
headers["X-OpenWebUI-User-Email"] = user.email
|
||||||
|
headers["X-OpenWebUI-User-Role"] = user.role
|
||||||
r = None
|
r = None
|
||||||
try:
|
try:
|
||||||
r = requests.post(
|
r = requests.post(
|
||||||
@ -325,6 +331,11 @@ async def get_models(url_idx: Optional[int] = None, user=Depends(get_verified_us
|
|||||||
headers = {}
|
headers = {}
|
||||||
headers["Authorization"] = f"Bearer {key}"
|
headers["Authorization"] = f"Bearer {key}"
|
||||||
headers["Content-Type"] = "application/json"
|
headers["Content-Type"] = "application/json"
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS:
|
||||||
|
headers["X-OpenWebUI-User-Name"] = user.name
|
||||||
|
headers["X-OpenWebUI-User-Id"] = user.id
|
||||||
|
headers["X-OpenWebUI-User-Email"] = user.email
|
||||||
|
headers["X-OpenWebUI-User-Role"] = user.role
|
||||||
|
|
||||||
r = None
|
r = None
|
||||||
|
|
||||||
@ -437,6 +448,11 @@ async def generate_chat_completion(
|
|||||||
if "openrouter.ai" in app.state.config.OPENAI_API_BASE_URLS[idx]:
|
if "openrouter.ai" in app.state.config.OPENAI_API_BASE_URLS[idx]:
|
||||||
headers["HTTP-Referer"] = "https://openwebui.com/"
|
headers["HTTP-Referer"] = "https://openwebui.com/"
|
||||||
headers["X-Title"] = "Open WebUI"
|
headers["X-Title"] = "Open WebUI"
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS:
|
||||||
|
headers["X-OpenWebUI-User-Name"] = user.name
|
||||||
|
headers["X-OpenWebUI-User-Id"] = user.id
|
||||||
|
headers["X-OpenWebUI-User-Email"] = user.email
|
||||||
|
headers["X-OpenWebUI-User-Role"] = user.role
|
||||||
|
|
||||||
r = None
|
r = None
|
||||||
session = None
|
session = None
|
||||||
@ -505,6 +521,11 @@ async def proxy(path: str, request: Request, user=Depends(get_verified_user)):
|
|||||||
headers = {}
|
headers = {}
|
||||||
headers["Authorization"] = f"Bearer {key}"
|
headers["Authorization"] = f"Bearer {key}"
|
||||||
headers["Content-Type"] = "application/json"
|
headers["Content-Type"] = "application/json"
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS:
|
||||||
|
headers["X-OpenWebUI-User-Name"] = user.name
|
||||||
|
headers["X-OpenWebUI-User-Id"] = user.id
|
||||||
|
headers["X-OpenWebUI-User-Email"] = user.email
|
||||||
|
headers["X-OpenWebUI-User-Role"] = user.role
|
||||||
|
|
||||||
r = None
|
r = None
|
||||||
session = None
|
session = None
|
||||||
|
@ -422,6 +422,7 @@ OAUTH_ADMIN_ROLES = PersistentConfig(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def load_oauth_providers():
|
def load_oauth_providers():
|
||||||
OAUTH_PROVIDERS.clear()
|
OAUTH_PROVIDERS.clear()
|
||||||
if GOOGLE_CLIENT_ID.value and GOOGLE_CLIENT_SECRET.value:
|
if GOOGLE_CLIENT_ID.value and GOOGLE_CLIENT_SECRET.value:
|
||||||
|
@ -195,6 +195,15 @@ CHANGELOG = changelog_json
|
|||||||
|
|
||||||
SAFE_MODE = os.environ.get("SAFE_MODE", "false").lower() == "true"
|
SAFE_MODE = os.environ.get("SAFE_MODE", "false").lower() == "true"
|
||||||
|
|
||||||
|
####################################
|
||||||
|
# ENABLE_FORWARD_USER_INFO_HEADERS
|
||||||
|
####################################
|
||||||
|
|
||||||
|
ENABLE_FORWARD_USER_INFO_HEADERS = os.environ.get(
|
||||||
|
"ENABLE_FORWARD_USER_INFO_HEADERS", "False"
|
||||||
|
).lower() == "true"
|
||||||
|
|
||||||
|
|
||||||
####################################
|
####################################
|
||||||
# WEBUI_BUILD_HASH
|
# WEBUI_BUILD_HASH
|
||||||
####################################
|
####################################
|
||||||
|
Loading…
Reference in New Issue
Block a user