Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
0c033b5b
Commit
0c033b5b
authored
May 13, 2024
by
Timothy J. Baek
Browse files
refac: rename
parent
5d64822c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
44 deletions
+46
-44
backend/config.py
backend/config.py
+46
-44
No files found.
backend/config.py
View file @
0c033b5b
...
...
@@ -201,7 +201,7 @@ def get_config_value(config_path: str):
T
=
TypeVar
(
"T"
)
class
Persiste
d
Config
(
Generic
[
T
]):
class
Persiste
nt
Config
(
Generic
[
T
]):
def
__init__
(
self
,
env_name
:
str
,
config_path
:
str
,
env_value
:
T
):
self
.
env_name
=
env_name
self
.
config_path
=
config_path
...
...
@@ -219,13 +219,13 @@ class PersistedConfig(Generic[T]):
@
property
def
__dict__
(
self
):
raise
TypeError
(
"Persiste
d
Config object cannot be converted to dict, use config_get or .value instead."
"Persiste
nt
Config object cannot be converted to dict, use config_get or .value instead."
)
def
__getattribute__
(
self
,
item
):
if
item
==
"__dict__"
:
raise
TypeError
(
"Persiste
d
Config object cannot be converted to dict, use config_get or .value instead."
"Persiste
nt
Config object cannot be converted to dict, use config_get or .value instead."
)
return
super
().
__getattribute__
(
item
)
...
...
@@ -247,13 +247,13 @@ class PersistedConfig(Generic[T]):
class
AppConfig
:
_state
:
dict
[
str
,
Persiste
d
Config
]
_state
:
dict
[
str
,
Persiste
nt
Config
]
def
__init__
(
self
):
super
().
__setattr__
(
"_state"
,
{})
def
__setattr__
(
self
,
key
,
value
):
if
isinstance
(
value
,
Persiste
d
Config
):
if
isinstance
(
value
,
Persiste
nt
Config
):
self
.
_state
[
key
]
=
value
else
:
self
.
_state
[
key
].
value
=
value
...
...
@@ -271,7 +271,7 @@ WEBUI_AUTH = os.environ.get("WEBUI_AUTH", "True").lower() == "true"
WEBUI_AUTH_TRUSTED_EMAIL_HEADER
=
os
.
environ
.
get
(
"WEBUI_AUTH_TRUSTED_EMAIL_HEADER"
,
None
)
JWT_EXPIRES_IN
=
Persiste
d
Config
(
JWT_EXPIRES_IN
=
Persiste
nt
Config
(
"JWT_EXPIRES_IN"
,
"auth.jwt_expiry"
,
os
.
environ
.
get
(
"JWT_EXPIRES_IN"
,
"-1"
)
)
...
...
@@ -409,7 +409,7 @@ OLLAMA_BASE_URLS = os.environ.get("OLLAMA_BASE_URLS", "")
OLLAMA_BASE_URLS
=
OLLAMA_BASE_URLS
if
OLLAMA_BASE_URLS
!=
""
else
OLLAMA_BASE_URL
OLLAMA_BASE_URLS
=
[
url
.
strip
()
for
url
in
OLLAMA_BASE_URLS
.
split
(
";"
)]
OLLAMA_BASE_URLS
=
Persiste
d
Config
(
OLLAMA_BASE_URLS
=
Persiste
nt
Config
(
"OLLAMA_BASE_URLS"
,
"ollama.base_urls"
,
OLLAMA_BASE_URLS
)
...
...
@@ -428,7 +428,9 @@ OPENAI_API_KEYS = os.environ.get("OPENAI_API_KEYS", "")
OPENAI_API_KEYS
=
OPENAI_API_KEYS
if
OPENAI_API_KEYS
!=
""
else
OPENAI_API_KEY
OPENAI_API_KEYS
=
[
url
.
strip
()
for
url
in
OPENAI_API_KEYS
.
split
(
";"
)]
OPENAI_API_KEYS
=
PersistedConfig
(
"OPENAI_API_KEYS"
,
"openai.api_keys"
,
OPENAI_API_KEYS
)
OPENAI_API_KEYS
=
PersistentConfig
(
"OPENAI_API_KEYS"
,
"openai.api_keys"
,
OPENAI_API_KEYS
)
OPENAI_API_BASE_URLS
=
os
.
environ
.
get
(
"OPENAI_API_BASE_URLS"
,
""
)
OPENAI_API_BASE_URLS
=
(
...
...
@@ -439,7 +441,7 @@ OPENAI_API_BASE_URLS = [
url
.
strip
()
if
url
!=
""
else
"https://api.openai.com/v1"
for
url
in
OPENAI_API_BASE_URLS
.
split
(
";"
)
]
OPENAI_API_BASE_URLS
=
Persiste
d
Config
(
OPENAI_API_BASE_URLS
=
Persiste
nt
Config
(
"OPENAI_API_BASE_URLS"
,
"openai.api_base_urls"
,
OPENAI_API_BASE_URLS
)
...
...
@@ -458,7 +460,7 @@ OPENAI_API_BASE_URL = "https://api.openai.com/v1"
# WEBUI
####################################
ENABLE_SIGNUP
=
Persiste
d
Config
(
ENABLE_SIGNUP
=
Persiste
nt
Config
(
"ENABLE_SIGNUP"
,
"ui.enable_signup"
,
(
...
...
@@ -467,11 +469,11 @@ ENABLE_SIGNUP = PersistedConfig(
else
os
.
environ
.
get
(
"ENABLE_SIGNUP"
,
"True"
).
lower
()
==
"true"
),
)
DEFAULT_MODELS
=
Persiste
d
Config
(
DEFAULT_MODELS
=
Persiste
nt
Config
(
"DEFAULT_MODELS"
,
"ui.default_models"
,
os
.
environ
.
get
(
"DEFAULT_MODELS"
,
None
)
)
DEFAULT_PROMPT_SUGGESTIONS
=
Persiste
d
Config
(
DEFAULT_PROMPT_SUGGESTIONS
=
Persiste
nt
Config
(
"DEFAULT_PROMPT_SUGGESTIONS"
,
"ui.prompt_suggestions"
,
[
...
...
@@ -505,7 +507,7 @@ DEFAULT_PROMPT_SUGGESTIONS = PersistedConfig(
],
)
DEFAULT_USER_ROLE
=
Persiste
d
Config
(
DEFAULT_USER_ROLE
=
Persiste
nt
Config
(
"DEFAULT_USER_ROLE"
,
"ui.default_user_role"
,
os
.
getenv
(
"DEFAULT_USER_ROLE"
,
"pending"
),
...
...
@@ -515,25 +517,25 @@ USER_PERMISSIONS_CHAT_DELETION = (
os
.
environ
.
get
(
"USER_PERMISSIONS_CHAT_DELETION"
,
"True"
).
lower
()
==
"true"
)
USER_PERMISSIONS
=
Persiste
d
Config
(
USER_PERMISSIONS
=
Persiste
nt
Config
(
"USER_PERMISSIONS"
,
"ui.user_permissions"
,
{
"chat"
:
{
"deletion"
:
USER_PERMISSIONS_CHAT_DELETION
}},
)
ENABLE_MODEL_FILTER
=
Persiste
d
Config
(
ENABLE_MODEL_FILTER
=
Persiste
nt
Config
(
"ENABLE_MODEL_FILTER"
,
"model_filter.enable"
,
os
.
environ
.
get
(
"ENABLE_MODEL_FILTER"
,
"False"
).
lower
()
==
"true"
,
)
MODEL_FILTER_LIST
=
os
.
environ
.
get
(
"MODEL_FILTER_LIST"
,
""
)
MODEL_FILTER_LIST
=
Persiste
d
Config
(
MODEL_FILTER_LIST
=
Persiste
nt
Config
(
"MODEL_FILTER_LIST"
,
"model_filter.list"
,
[
model
.
strip
()
for
model
in
MODEL_FILTER_LIST
.
split
(
";"
)],
)
WEBHOOK_URL
=
Persiste
d
Config
(
WEBHOOK_URL
=
Persiste
nt
Config
(
"WEBHOOK_URL"
,
"webhook_url"
,
os
.
environ
.
get
(
"WEBHOOK_URL"
,
""
)
)
...
...
@@ -573,40 +575,40 @@ else:
CHROMA_HTTP_SSL
=
os
.
environ
.
get
(
"CHROMA_HTTP_SSL"
,
"false"
).
lower
()
==
"true"
# this uses the model defined in the Dockerfile ENV variable. If you dont use docker or docker based deployments such as k8s, the default embedding model will be used (sentence-transformers/all-MiniLM-L6-v2)
RAG_TOP_K
=
Persiste
d
Config
(
RAG_TOP_K
=
Persiste
nt
Config
(
"RAG_TOP_K"
,
"rag.top_k"
,
int
(
os
.
environ
.
get
(
"RAG_TOP_K"
,
"5"
))
)
RAG_RELEVANCE_THRESHOLD
=
Persiste
d
Config
(
RAG_RELEVANCE_THRESHOLD
=
Persiste
nt
Config
(
"RAG_RELEVANCE_THRESHOLD"
,
"rag.relevance_threshold"
,
float
(
os
.
environ
.
get
(
"RAG_RELEVANCE_THRESHOLD"
,
"0.0"
)),
)
ENABLE_RAG_HYBRID_SEARCH
=
Persiste
d
Config
(
ENABLE_RAG_HYBRID_SEARCH
=
Persiste
nt
Config
(
"ENABLE_RAG_HYBRID_SEARCH"
,
"rag.enable_hybrid_search"
,
os
.
environ
.
get
(
"ENABLE_RAG_HYBRID_SEARCH"
,
""
).
lower
()
==
"true"
,
)
ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION
=
Persiste
d
Config
(
ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION
=
Persiste
nt
Config
(
"ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION"
,
"rag.enable_web_loader_ssl_verification"
,
os
.
environ
.
get
(
"ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION"
,
"True"
).
lower
()
==
"true"
,
)
RAG_EMBEDDING_ENGINE
=
Persiste
d
Config
(
RAG_EMBEDDING_ENGINE
=
Persiste
nt
Config
(
"RAG_EMBEDDING_ENGINE"
,
"rag.embedding_engine"
,
os
.
environ
.
get
(
"RAG_EMBEDDING_ENGINE"
,
""
),
)
PDF_EXTRACT_IMAGES
=
Persiste
d
Config
(
PDF_EXTRACT_IMAGES
=
Persiste
nt
Config
(
"PDF_EXTRACT_IMAGES"
,
"rag.pdf_extract_images"
,
os
.
environ
.
get
(
"PDF_EXTRACT_IMAGES"
,
"False"
).
lower
()
==
"true"
,
)
RAG_EMBEDDING_MODEL
=
Persiste
d
Config
(
RAG_EMBEDDING_MODEL
=
Persiste
nt
Config
(
"RAG_EMBEDDING_MODEL"
,
"rag.embedding_model"
,
os
.
environ
.
get
(
"RAG_EMBEDDING_MODEL"
,
"sentence-transformers/all-MiniLM-L6-v2"
),
...
...
@@ -621,7 +623,7 @@ RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE = (
os
.
environ
.
get
(
"RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE"
,
""
).
lower
()
==
"true"
)
RAG_RERANKING_MODEL
=
Persiste
d
Config
(
RAG_RERANKING_MODEL
=
Persiste
nt
Config
(
"RAG_RERANKING_MODEL"
,
"rag.reranking_model"
,
os
.
environ
.
get
(
"RAG_RERANKING_MODEL"
,
""
),
...
...
@@ -665,10 +667,10 @@ if USE_CUDA.lower() == "true":
else
:
DEVICE_TYPE
=
"cpu"
CHUNK_SIZE
=
Persiste
d
Config
(
CHUNK_SIZE
=
Persiste
nt
Config
(
"CHUNK_SIZE"
,
"rag.chunk_size"
,
int
(
os
.
environ
.
get
(
"CHUNK_SIZE"
,
"1500"
))
)
CHUNK_OVERLAP
=
Persiste
d
Config
(
CHUNK_OVERLAP
=
Persiste
nt
Config
(
"CHUNK_OVERLAP"
,
"rag.chunk_overlap"
,
int
(
os
.
environ
.
get
(
"CHUNK_OVERLAP"
,
"100"
)),
...
...
@@ -688,18 +690,18 @@ And answer according to the language of the user's question.
Given the context information, answer the query.
Query: [query]"""
RAG_TEMPLATE
=
Persiste
d
Config
(
RAG_TEMPLATE
=
Persiste
nt
Config
(
"RAG_TEMPLATE"
,
"rag.template"
,
os
.
environ
.
get
(
"RAG_TEMPLATE"
,
DEFAULT_RAG_TEMPLATE
),
)
RAG_OPENAI_API_BASE_URL
=
Persiste
d
Config
(
RAG_OPENAI_API_BASE_URL
=
Persiste
nt
Config
(
"RAG_OPENAI_API_BASE_URL"
,
"rag.openai_api_base_url"
,
os
.
getenv
(
"RAG_OPENAI_API_BASE_URL"
,
OPENAI_API_BASE_URL
),
)
RAG_OPENAI_API_KEY
=
Persiste
d
Config
(
RAG_OPENAI_API_KEY
=
Persiste
nt
Config
(
"RAG_OPENAI_API_KEY"
,
"rag.openai_api_key"
,
os
.
getenv
(
"RAG_OPENAI_API_KEY"
,
OPENAI_API_KEY
),
...
...
@@ -709,7 +711,7 @@ ENABLE_RAG_LOCAL_WEB_FETCH = (
os
.
getenv
(
"ENABLE_RAG_LOCAL_WEB_FETCH"
,
"False"
).
lower
()
==
"true"
)
YOUTUBE_LOADER_LANGUAGE
=
Persiste
d
Config
(
YOUTUBE_LOADER_LANGUAGE
=
Persiste
nt
Config
(
"YOUTUBE_LOADER_LANGUAGE"
,
"rag.youtube_loader_language"
,
os
.
getenv
(
"YOUTUBE_LOADER_LANGUAGE"
,
"en"
).
split
(
","
),
...
...
@@ -730,49 +732,49 @@ WHISPER_MODEL_AUTO_UPDATE = (
# Images
####################################
IMAGE_GENERATION_ENGINE
=
Persiste
d
Config
(
IMAGE_GENERATION_ENGINE
=
Persiste
nt
Config
(
"IMAGE_GENERATION_ENGINE"
,
"image_generation.engine"
,
os
.
getenv
(
"IMAGE_GENERATION_ENGINE"
,
""
),
)
ENABLE_IMAGE_GENERATION
=
Persiste
d
Config
(
ENABLE_IMAGE_GENERATION
=
Persiste
nt
Config
(
"ENABLE_IMAGE_GENERATION"
,
"image_generation.enable"
,
os
.
environ
.
get
(
"ENABLE_IMAGE_GENERATION"
,
""
).
lower
()
==
"true"
,
)
AUTOMATIC1111_BASE_URL
=
Persiste
d
Config
(
AUTOMATIC1111_BASE_URL
=
Persiste
nt
Config
(
"AUTOMATIC1111_BASE_URL"
,
"image_generation.automatic1111.base_url"
,
os
.
getenv
(
"AUTOMATIC1111_BASE_URL"
,
""
),
)
COMFYUI_BASE_URL
=
Persiste
d
Config
(
COMFYUI_BASE_URL
=
Persiste
nt
Config
(
"COMFYUI_BASE_URL"
,
"image_generation.comfyui.base_url"
,
os
.
getenv
(
"COMFYUI_BASE_URL"
,
""
),
)
IMAGES_OPENAI_API_BASE_URL
=
Persiste
d
Config
(
IMAGES_OPENAI_API_BASE_URL
=
Persiste
nt
Config
(
"IMAGES_OPENAI_API_BASE_URL"
,
"image_generation.openai.api_base_url"
,
os
.
getenv
(
"IMAGES_OPENAI_API_BASE_URL"
,
OPENAI_API_BASE_URL
),
)
IMAGES_OPENAI_API_KEY
=
Persiste
d
Config
(
IMAGES_OPENAI_API_KEY
=
Persiste
nt
Config
(
"IMAGES_OPENAI_API_KEY"
,
"image_generation.openai.api_key"
,
os
.
getenv
(
"IMAGES_OPENAI_API_KEY"
,
OPENAI_API_KEY
),
)
IMAGE_SIZE
=
Persiste
d
Config
(
IMAGE_SIZE
=
Persiste
nt
Config
(
"IMAGE_SIZE"
,
"image_generation.size"
,
os
.
getenv
(
"IMAGE_SIZE"
,
"512x512"
)
)
IMAGE_STEPS
=
Persiste
d
Config
(
IMAGE_STEPS
=
Persiste
nt
Config
(
"IMAGE_STEPS"
,
"image_generation.steps"
,
int
(
os
.
getenv
(
"IMAGE_STEPS"
,
50
))
)
IMAGE_GENERATION_MODEL
=
Persiste
d
Config
(
IMAGE_GENERATION_MODEL
=
Persiste
nt
Config
(
"IMAGE_GENERATION_MODEL"
,
"image_generation.model"
,
os
.
getenv
(
"IMAGE_GENERATION_MODEL"
,
""
),
...
...
@@ -782,22 +784,22 @@ IMAGE_GENERATION_MODEL = PersistedConfig(
# Audio
####################################
AUDIO_OPENAI_API_BASE_URL
=
Persiste
d
Config
(
AUDIO_OPENAI_API_BASE_URL
=
Persiste
nt
Config
(
"AUDIO_OPENAI_API_BASE_URL"
,
"audio.openai.api_base_url"
,
os
.
getenv
(
"AUDIO_OPENAI_API_BASE_URL"
,
OPENAI_API_BASE_URL
),
)
AUDIO_OPENAI_API_KEY
=
Persiste
d
Config
(
AUDIO_OPENAI_API_KEY
=
Persiste
nt
Config
(
"AUDIO_OPENAI_API_KEY"
,
"audio.openai.api_key"
,
os
.
getenv
(
"AUDIO_OPENAI_API_KEY"
,
OPENAI_API_KEY
),
)
AUDIO_OPENAI_API_MODEL
=
Persiste
d
Config
(
AUDIO_OPENAI_API_MODEL
=
Persiste
nt
Config
(
"AUDIO_OPENAI_API_MODEL"
,
"audio.openai.api_model"
,
os
.
getenv
(
"AUDIO_OPENAI_API_MODEL"
,
"tts-1"
),
)
AUDIO_OPENAI_API_VOICE
=
Persiste
d
Config
(
AUDIO_OPENAI_API_VOICE
=
Persiste
nt
Config
(
"AUDIO_OPENAI_API_VOICE"
,
"audio.openai.api_voice"
,
os
.
getenv
(
"AUDIO_OPENAI_API_VOICE"
,
"alloy"
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment