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
5d3eddf7
"...git@developer.sourcefind.cn:chenpangpang/open-webui.git" did not exist on "4bae43096b719208027e866a7a367d2c18b612c1"
Commit
5d3eddf7
authored
May 17, 2024
by
Jun Siang Cheah
Browse files
feat: update to persistent config
parent
06657034
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
89 additions
and
8 deletions
+89
-8
backend/apps/litellm/main.py
backend/apps/litellm/main.py
+1
-1
backend/apps/ollama/main.py
backend/apps/ollama/main.py
+1
-1
backend/apps/openai/main.py
backend/apps/openai/main.py
+1
-1
backend/apps/web/internal/migrations/008_add_models.py
backend/apps/web/internal/migrations/008_add_models.py
+79
-0
backend/apps/web/models/models.py
backend/apps/web/models/models.py
+0
-0
backend/config.py
backend/config.py
+3
-1
backend/main.py
backend/main.py
+4
-4
No files found.
backend/apps/litellm/main.py
View file @
5d3eddf7
...
@@ -77,7 +77,7 @@ with open(LITELLM_CONFIG_DIR, "r") as file:
...
@@ -77,7 +77,7 @@ with open(LITELLM_CONFIG_DIR, "r") as file:
app
.
state
.
ENABLE
=
ENABLE_LITELLM
app
.
state
.
ENABLE
=
ENABLE_LITELLM
app
.
state
.
CONFIG
=
litellm_config
app
.
state
.
CONFIG
=
litellm_config
app
.
state
.
MODEL_CONFIG
=
MODEL_CONFIG
.
get
(
"litellm"
,
[])
app
.
state
.
MODEL_CONFIG
=
MODEL_CONFIG
.
value
.
get
(
"litellm"
,
[])
# Global variable to store the subprocess reference
# Global variable to store the subprocess reference
background_process
=
None
background_process
=
None
...
...
backend/apps/ollama/main.py
View file @
5d3eddf7
...
@@ -67,7 +67,7 @@ app.state.config = AppConfig()
...
@@ -67,7 +67,7 @@ app.state.config = AppConfig()
app
.
state
.
ENABLE_MODEL_FILTER
=
ENABLE_MODEL_FILTER
app
.
state
.
ENABLE_MODEL_FILTER
=
ENABLE_MODEL_FILTER
app
.
state
.
MODEL_FILTER_LIST
=
MODEL_FILTER_LIST
app
.
state
.
MODEL_FILTER_LIST
=
MODEL_FILTER_LIST
app
.
state
.
MODEL_CONFIG
=
MODEL_CONFIG
.
get
(
"ollama"
,
[])
app
.
state
.
MODEL_CONFIG
=
MODEL_CONFIG
.
value
.
get
(
"ollama"
,
[])
app
.
state
.
config
.
OLLAMA_BASE_URLS
=
OLLAMA_BASE_URLS
app
.
state
.
config
.
OLLAMA_BASE_URLS
=
OLLAMA_BASE_URLS
app
.
state
.
MODELS
=
{}
app
.
state
.
MODELS
=
{}
...
...
backend/apps/openai/main.py
View file @
5d3eddf7
...
@@ -51,7 +51,7 @@ app.state.config = AppConfig()
...
@@ -51,7 +51,7 @@ app.state.config = AppConfig()
app
.
state
.
ENABLE_MODEL_FILTER
=
ENABLE_MODEL_FILTER
app
.
state
.
ENABLE_MODEL_FILTER
=
ENABLE_MODEL_FILTER
app
.
state
.
MODEL_FILTER_LIST
=
MODEL_FILTER_LIST
app
.
state
.
MODEL_FILTER_LIST
=
MODEL_FILTER_LIST
app
.
state
.
MODEL_CONFIG
=
MODEL_CONFIG
.
get
(
"openai"
,
[])
app
.
state
.
MODEL_CONFIG
=
MODEL_CONFIG
.
value
.
get
(
"openai"
,
[])
app
.
state
.
config
.
OPENAI_API_BASE_URLS
=
OPENAI_API_BASE_URLS
app
.
state
.
config
.
OPENAI_API_BASE_URLS
=
OPENAI_API_BASE_URLS
app
.
state
.
config
.
OPENAI_API_KEYS
=
OPENAI_API_KEYS
app
.
state
.
config
.
OPENAI_API_KEYS
=
OPENAI_API_KEYS
...
...
backend/apps/web/internal/migrations/008_add_models.py
0 → 100644
View file @
5d3eddf7
"""Peewee migrations -- 002_add_local_sharing.py.
Some examples (model - class or model name)::
> Model = migrator.orm['table_name'] # Return model in current state by name
> Model = migrator.ModelClass # Return model in current state by name
> migrator.sql(sql) # Run custom SQL
> migrator.run(func, *args, **kwargs) # Run python function with the given args
> migrator.create_model(Model) # Create a model (could be used as decorator)
> migrator.remove_model(model, cascade=True) # Remove a model
> migrator.add_fields(model, **fields) # Add fields to a model
> migrator.change_fields(model, **fields) # Change fields
> migrator.remove_fields(model, *field_names, cascade=True)
> migrator.rename_field(model, old_field_name, new_field_name)
> migrator.rename_table(model, new_table_name)
> migrator.add_index(model, *col_names, unique=False)
> migrator.add_not_null(model, *field_names)
> migrator.add_default(model, field_name, default)
> migrator.add_constraint(model, name, sql)
> migrator.drop_index(model, *col_names)
> migrator.drop_not_null(model, *field_names)
> migrator.drop_constraints(model, *constraints)
"""
from
contextlib
import
suppress
import
peewee
as
pw
from
peewee_migrate
import
Migrator
with
suppress
(
ImportError
):
import
playhouse.postgres_ext
as
pw_pext
def
migrate
(
migrator
:
Migrator
,
database
:
pw
.
Database
,
*
,
fake
=
False
):
"""Write your migrations here."""
# Adding fields created_at and updated_at to the 'user' table
migrator
.
add_fields
(
"user"
,
created_at
=
pw
.
BigIntegerField
(
null
=
True
),
# Allow null for transition
updated_at
=
pw
.
BigIntegerField
(
null
=
True
),
# Allow null for transition
last_active_at
=
pw
.
BigIntegerField
(
null
=
True
),
# Allow null for transition
)
# Populate the new fields from an existing 'timestamp' field
migrator
.
sql
(
'UPDATE "user" SET created_at = timestamp, updated_at = timestamp, last_active_at = timestamp WHERE timestamp IS NOT NULL'
)
# Now that the data has been copied, remove the original 'timestamp' field
migrator
.
remove_fields
(
"user"
,
"timestamp"
)
# Update the fields to be not null now that they are populated
migrator
.
change_fields
(
"user"
,
created_at
=
pw
.
BigIntegerField
(
null
=
False
),
updated_at
=
pw
.
BigIntegerField
(
null
=
False
),
last_active_at
=
pw
.
BigIntegerField
(
null
=
False
),
)
def
rollback
(
migrator
:
Migrator
,
database
:
pw
.
Database
,
*
,
fake
=
False
):
"""Write your rollback migrations here."""
# Recreate the timestamp field initially allowing null values for safe transition
migrator
.
add_fields
(
"user"
,
timestamp
=
pw
.
BigIntegerField
(
null
=
True
))
# Copy the earliest created_at date back into the new timestamp field
# This assumes created_at was originally a copy of timestamp
migrator
.
sql
(
'UPDATE "user" SET timestamp = created_at'
)
# Remove the created_at and updated_at fields
migrator
.
remove_fields
(
"user"
,
"created_at"
,
"updated_at"
,
"last_active_at"
)
# Finally, alter the timestamp field to not allow nulls if that was the original setting
migrator
.
change_fields
(
"user"
,
timestamp
=
pw
.
BigIntegerField
(
null
=
False
))
backend/apps/web/models/models.py
0 → 100644
View file @
5d3eddf7
backend/config.py
View file @
5d3eddf7
...
@@ -541,7 +541,9 @@ WEBHOOK_URL = PersistentConfig(
...
@@ -541,7 +541,9 @@ WEBHOOK_URL = PersistentConfig(
ENABLE_ADMIN_EXPORT
=
os
.
environ
.
get
(
"ENABLE_ADMIN_EXPORT"
,
"True"
).
lower
()
==
"true"
ENABLE_ADMIN_EXPORT
=
os
.
environ
.
get
(
"ENABLE_ADMIN_EXPORT"
,
"True"
).
lower
()
==
"true"
MODEL_CONFIG
=
CONFIG_DATA
.
get
(
"models"
,
{
"ollama"
:
[],
"litellm"
:
[],
"openai"
:
[]})
MODEL_CONFIG
=
PersistentConfig
(
"CONFIG_DATA"
,
"models"
,
{
"ollama"
:
[],
"litellm"
:
[],
"openai"
:
[]}
)
####################################
####################################
# WEBUI_SECRET_KEY
# WEBUI_SECRET_KEY
...
...
backend/main.py
View file @
5d3eddf7
...
@@ -113,7 +113,7 @@ app.state.config = AppConfig()
...
@@ -113,7 +113,7 @@ app.state.config = AppConfig()
app
.
state
.
config
.
ENABLE_MODEL_FILTER
=
ENABLE_MODEL_FILTER
app
.
state
.
config
.
ENABLE_MODEL_FILTER
=
ENABLE_MODEL_FILTER
app
.
state
.
config
.
MODEL_FILTER_LIST
=
MODEL_FILTER_LIST
app
.
state
.
config
.
MODEL_FILTER_LIST
=
MODEL_FILTER_LIST
app
.
state
.
MODEL_CONFIG
=
MODEL_CONFIG
app
.
state
.
config
.
MODEL_CONFIG
=
MODEL_CONFIG
app
.
state
.
config
.
WEBHOOK_URL
=
WEBHOOK_URL
app
.
state
.
config
.
WEBHOOK_URL
=
WEBHOOK_URL
...
@@ -323,18 +323,18 @@ async def update_model_config(
...
@@ -323,18 +323,18 @@ async def update_model_config(
litellm_app
.
state
.
MODEL_CONFIG
=
data
.
get
(
"litellm"
,
[])
litellm_app
.
state
.
MODEL_CONFIG
=
data
.
get
(
"litellm"
,
[])
app
.
state
.
MODEL_CONFIG
=
{
app
.
state
.
config
.
MODEL_CONFIG
=
{
"ollama"
:
ollama_app
.
state
.
MODEL_CONFIG
,
"ollama"
:
ollama_app
.
state
.
MODEL_CONFIG
,
"openai"
:
openai_app
.
state
.
MODEL_CONFIG
,
"openai"
:
openai_app
.
state
.
MODEL_CONFIG
,
"litellm"
:
litellm_app
.
state
.
MODEL_CONFIG
,
"litellm"
:
litellm_app
.
state
.
MODEL_CONFIG
,
}
}
return
{
"models"
:
app
.
state
.
MODEL_CONFIG
}
return
{
"models"
:
app
.
state
.
config
.
MODEL_CONFIG
}
@
app
.
get
(
"/api/config/models"
)
@
app
.
get
(
"/api/config/models"
)
async
def
get_model_config
(
user
=
Depends
(
get_admin_user
)):
async
def
get_model_config
(
user
=
Depends
(
get_admin_user
)):
return
{
"models"
:
app
.
state
.
MODEL_CONFIG
}
return
{
"models"
:
app
.
state
.
config
.
MODEL_CONFIG
}
@
app
.
get
(
"/api/webhook"
)
@
app
.
get
(
"/api/webhook"
)
...
...
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