Spaces:
Running
Running
Update env.py
Browse files
env.py
CHANGED
|
@@ -8,6 +8,8 @@ import shutil
|
|
| 8 |
from uuid import uuid4
|
| 9 |
from pathlib import Path
|
| 10 |
from cryptography.hazmat.primitives import serialization
|
|
|
|
|
|
|
| 11 |
|
| 12 |
import markdown
|
| 13 |
from bs4 import BeautifulSoup
|
|
@@ -111,7 +113,7 @@ for source in log_sources:
|
|
| 111 |
log.setLevel(SRC_LOG_LEVELS["CONFIG"])
|
| 112 |
|
| 113 |
WEBUI_NAME = os.environ.get("WEBUI_NAME", "UltimateGPT")
|
| 114 |
-
if WEBUI_NAME != "
|
| 115 |
WEBUI_NAME += "UltimateGPT"
|
| 116 |
|
| 117 |
WEBUI_FAVICON_URL = "https://openwebui.com/favicon.png"
|
|
@@ -135,6 +137,9 @@ else:
|
|
| 135 |
PACKAGE_DATA = {"version": "0.0.0"}
|
| 136 |
|
| 137 |
VERSION = PACKAGE_DATA["version"]
|
|
|
|
|
|
|
|
|
|
| 138 |
INSTANCE_ID = os.environ.get("INSTANCE_ID", str(uuid4()))
|
| 139 |
|
| 140 |
|
|
@@ -426,6 +431,17 @@ WEBUI_AUTH_TRUSTED_GROUPS_HEADER = os.environ.get(
|
|
| 426 |
)
|
| 427 |
|
| 428 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 429 |
BYPASS_MODEL_ACCESS_CONTROL = (
|
| 430 |
os.environ.get("BYPASS_MODEL_ACCESS_CONTROL", "False").lower() == "true"
|
| 431 |
)
|
|
@@ -493,7 +509,10 @@ OAUTH_SESSION_TOKEN_ENCRYPTION_KEY = os.environ.get(
|
|
| 493 |
# SCIM Configuration
|
| 494 |
####################################
|
| 495 |
|
| 496 |
-
|
|
|
|
|
|
|
|
|
|
| 497 |
SCIM_TOKEN = os.environ.get("SCIM_TOKEN", "")
|
| 498 |
|
| 499 |
####################################
|
|
@@ -541,6 +560,10 @@ else:
|
|
| 541 |
# CHAT
|
| 542 |
####################################
|
| 543 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 544 |
CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE = os.environ.get(
|
| 545 |
"CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE", "1"
|
| 546 |
)
|
|
@@ -569,6 +592,21 @@ else:
|
|
| 569 |
CHAT_RESPONSE_MAX_TOOL_CALL_RETRIES = 30
|
| 570 |
|
| 571 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 572 |
####################################
|
| 573 |
# WEBSOCKET SUPPORT
|
| 574 |
####################################
|
|
@@ -580,6 +618,17 @@ ENABLE_WEBSOCKET_SUPPORT = (
|
|
| 580 |
|
| 581 |
WEBSOCKET_MANAGER = os.environ.get("WEBSOCKET_MANAGER", "")
|
| 582 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 583 |
WEBSOCKET_REDIS_URL = os.environ.get("WEBSOCKET_REDIS_URL", REDIS_URL)
|
| 584 |
WEBSOCKET_REDIS_CLUSTER = (
|
| 585 |
os.environ.get("WEBSOCKET_REDIS_CLUSTER", str(REDIS_CLUSTER)).lower() == "true"
|
|
@@ -594,6 +643,23 @@ except ValueError:
|
|
| 594 |
|
| 595 |
WEBSOCKET_SENTINEL_HOSTS = os.environ.get("WEBSOCKET_SENTINEL_HOSTS", "")
|
| 596 |
WEBSOCKET_SENTINEL_PORT = os.environ.get("WEBSOCKET_SENTINEL_PORT", "26379")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 597 |
|
| 598 |
|
| 599 |
AIOHTTP_CLIENT_TIMEOUT = os.environ.get("AIOHTTP_CLIENT_TIMEOUT", "")
|
|
@@ -706,7 +772,9 @@ if OFFLINE_MODE:
|
|
| 706 |
# AUDIT LOGGING
|
| 707 |
####################################
|
| 708 |
# Where to store log file
|
| 709 |
-
|
|
|
|
|
|
|
| 710 |
# Maximum size of a file before rotating into a new log file
|
| 711 |
AUDIT_LOG_FILE_ROTATION_SIZE = os.getenv("AUDIT_LOG_FILE_ROTATION_SIZE", "10MB")
|
| 712 |
|
|
|
|
| 8 |
from uuid import uuid4
|
| 9 |
from pathlib import Path
|
| 10 |
from cryptography.hazmat.primitives import serialization
|
| 11 |
+
import re
|
| 12 |
+
|
| 13 |
|
| 14 |
import markdown
|
| 15 |
from bs4 import BeautifulSoup
|
|
|
|
| 113 |
log.setLevel(SRC_LOG_LEVELS["CONFIG"])
|
| 114 |
|
| 115 |
WEBUI_NAME = os.environ.get("WEBUI_NAME", "UltimateGPT")
|
| 116 |
+
if WEBUI_NAME != "UlitimateGPT":
|
| 117 |
WEBUI_NAME += "UltimateGPT"
|
| 118 |
|
| 119 |
WEBUI_FAVICON_URL = "https://openwebui.com/favicon.png"
|
|
|
|
| 137 |
PACKAGE_DATA = {"version": "0.0.0"}
|
| 138 |
|
| 139 |
VERSION = PACKAGE_DATA["version"]
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
DEPLOYMENT_ID = os.environ.get("DEPLOYMENT_ID", "")
|
| 143 |
INSTANCE_ID = os.environ.get("INSTANCE_ID", str(uuid4()))
|
| 144 |
|
| 145 |
|
|
|
|
| 431 |
)
|
| 432 |
|
| 433 |
|
| 434 |
+
ENABLE_PASSWORD_VALIDATION = (
|
| 435 |
+
os.environ.get("ENABLE_PASSWORD_VALIDATION", "False").lower() == "true"
|
| 436 |
+
)
|
| 437 |
+
PASSWORD_VALIDATION_REGEX_PATTERN = os.environ.get(
|
| 438 |
+
"PASSWORD_VALIDATION_REGEX_PATTERN",
|
| 439 |
+
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$",
|
| 440 |
+
)
|
| 441 |
+
|
| 442 |
+
PASSWORD_VALIDATION_REGEX_PATTERN = re.compile(PASSWORD_VALIDATION_REGEX_PATTERN)
|
| 443 |
+
|
| 444 |
+
|
| 445 |
BYPASS_MODEL_ACCESS_CONTROL = (
|
| 446 |
os.environ.get("BYPASS_MODEL_ACCESS_CONTROL", "False").lower() == "true"
|
| 447 |
)
|
|
|
|
| 509 |
# SCIM Configuration
|
| 510 |
####################################
|
| 511 |
|
| 512 |
+
ENABLE_SCIM = (
|
| 513 |
+
os.environ.get("ENABLE_SCIM", os.environ.get("SCIM_ENABLED", "False")).lower()
|
| 514 |
+
== "true"
|
| 515 |
+
)
|
| 516 |
SCIM_TOKEN = os.environ.get("SCIM_TOKEN", "")
|
| 517 |
|
| 518 |
####################################
|
|
|
|
| 560 |
# CHAT
|
| 561 |
####################################
|
| 562 |
|
| 563 |
+
ENABLE_CHAT_RESPONSE_BASE64_IMAGE_URL_CONVERSION = (
|
| 564 |
+
os.environ.get("REPLACE_IMAGE_URLS_IN_CHAT_RESPONSE", "False").lower() == "true"
|
| 565 |
+
)
|
| 566 |
+
|
| 567 |
CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE = os.environ.get(
|
| 568 |
"CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE", "1"
|
| 569 |
)
|
|
|
|
| 592 |
CHAT_RESPONSE_MAX_TOOL_CALL_RETRIES = 30
|
| 593 |
|
| 594 |
|
| 595 |
+
CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE = os.environ.get(
|
| 596 |
+
"CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE", ""
|
| 597 |
+
)
|
| 598 |
+
|
| 599 |
+
if CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE == "":
|
| 600 |
+
CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE = None
|
| 601 |
+
else:
|
| 602 |
+
try:
|
| 603 |
+
CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE = int(
|
| 604 |
+
CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE
|
| 605 |
+
)
|
| 606 |
+
except Exception:
|
| 607 |
+
CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE = None
|
| 608 |
+
|
| 609 |
+
|
| 610 |
####################################
|
| 611 |
# WEBSOCKET SUPPORT
|
| 612 |
####################################
|
|
|
|
| 618 |
|
| 619 |
WEBSOCKET_MANAGER = os.environ.get("WEBSOCKET_MANAGER", "")
|
| 620 |
|
| 621 |
+
WEBSOCKET_REDIS_OPTIONS = os.environ.get("WEBSOCKET_REDIS_OPTIONS", "")
|
| 622 |
+
if WEBSOCKET_REDIS_OPTIONS == "":
|
| 623 |
+
log.debug("No WEBSOCKET_REDIS_OPTIONS provided, defaulting to None")
|
| 624 |
+
WEBSOCKET_REDIS_OPTIONS = None
|
| 625 |
+
else:
|
| 626 |
+
try:
|
| 627 |
+
WEBSOCKET_REDIS_OPTIONS = json.loads(WEBSOCKET_REDIS_OPTIONS)
|
| 628 |
+
except Exception:
|
| 629 |
+
log.warning("Invalid WEBSOCKET_REDIS_OPTIONS, defaulting to None")
|
| 630 |
+
WEBSOCKET_REDIS_OPTIONS = None
|
| 631 |
+
|
| 632 |
WEBSOCKET_REDIS_URL = os.environ.get("WEBSOCKET_REDIS_URL", REDIS_URL)
|
| 633 |
WEBSOCKET_REDIS_CLUSTER = (
|
| 634 |
os.environ.get("WEBSOCKET_REDIS_CLUSTER", str(REDIS_CLUSTER)).lower() == "true"
|
|
|
|
| 643 |
|
| 644 |
WEBSOCKET_SENTINEL_HOSTS = os.environ.get("WEBSOCKET_SENTINEL_HOSTS", "")
|
| 645 |
WEBSOCKET_SENTINEL_PORT = os.environ.get("WEBSOCKET_SENTINEL_PORT", "26379")
|
| 646 |
+
WEBSOCKET_SERVER_LOGGING = (
|
| 647 |
+
os.environ.get("WEBSOCKET_SERVER_LOGGING", "False").lower() == "true"
|
| 648 |
+
)
|
| 649 |
+
WEBSOCKET_SERVER_ENGINEIO_LOGGING = (
|
| 650 |
+
os.environ.get("WEBSOCKET_SERVER_LOGGING", "False").lower() == "true"
|
| 651 |
+
)
|
| 652 |
+
WEBSOCKET_SERVER_PING_TIMEOUT = os.environ.get("WEBSOCKET_SERVER_PING_TIMEOUT", "20")
|
| 653 |
+
try:
|
| 654 |
+
WEBSOCKET_SERVER_PING_TIMEOUT = int(WEBSOCKET_SERVER_PING_TIMEOUT)
|
| 655 |
+
except ValueError:
|
| 656 |
+
WEBSOCKET_SERVER_PING_TIMEOUT = 20
|
| 657 |
+
|
| 658 |
+
WEBSOCKET_SERVER_PING_INTERVAL = os.environ.get("WEBSOCKET_SERVER_PING_INTERVAL", "25")
|
| 659 |
+
try:
|
| 660 |
+
WEBSOCKET_SERVER_PING_INTERVAL = int(WEBSOCKET_SERVER_PING_INTERVAL)
|
| 661 |
+
except ValueError:
|
| 662 |
+
WEBSOCKET_SERVER_PING_INTERVAL = 25
|
| 663 |
|
| 664 |
|
| 665 |
AIOHTTP_CLIENT_TIMEOUT = os.environ.get("AIOHTTP_CLIENT_TIMEOUT", "")
|
|
|
|
| 772 |
# AUDIT LOGGING
|
| 773 |
####################################
|
| 774 |
# Where to store log file
|
| 775 |
+
# Defaults to the DATA_DIR/audit.log. To set AUDIT_LOGS_FILE_PATH you need to
|
| 776 |
+
# provide the whole path, like: /app/audit.log
|
| 777 |
+
AUDIT_LOGS_FILE_PATH = os.getenv("AUDIT_LOGS_FILE_PATH", f"{DATA_DIR}/audit.log")
|
| 778 |
# Maximum size of a file before rotating into a new log file
|
| 779 |
AUDIT_LOG_FILE_ROTATION_SIZE = os.getenv("AUDIT_LOG_FILE_ROTATION_SIZE", "10MB")
|
| 780 |
|