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
9f0c9d97
Unverified
Commit
9f0c9d97
authored
Aug 14, 2024
by
Timothy Jaeryang Baek
Committed by
GitHub
Aug 14, 2024
Browse files
Merge pull request #4597 from michaelpoluektov/cleanup
refactor: search and replace-able cleanup
parents
1597e33a
0470146d
Changes
42
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
103 additions
and
102 deletions
+103
-102
backend/apps/webui/models/memories.py
backend/apps/webui/models/memories.py
+10
-10
backend/apps/webui/models/models.py
backend/apps/webui/models/models.py
+3
-3
backend/apps/webui/models/prompts.py
backend/apps/webui/models/prompts.py
+5
-5
backend/apps/webui/models/tags.py
backend/apps/webui/models/tags.py
+8
-8
backend/apps/webui/models/tools.py
backend/apps/webui/models/tools.py
+8
-8
backend/apps/webui/models/users.py
backend/apps/webui/models/users.py
+12
-12
backend/apps/webui/routers/chats.py
backend/apps/webui/routers/chats.py
+11
-11
backend/apps/webui/routers/configs.py
backend/apps/webui/routers/configs.py
+7
-7
backend/apps/webui/routers/documents.py
backend/apps/webui/routers/documents.py
+4
-4
backend/apps/webui/routers/files.py
backend/apps/webui/routers/files.py
+2
-2
backend/apps/webui/routers/functions.py
backend/apps/webui/routers/functions.py
+5
-5
backend/apps/webui/routers/memories.py
backend/apps/webui/routers/memories.py
+2
-2
backend/apps/webui/routers/models.py
backend/apps/webui/routers/models.py
+2
-2
backend/apps/webui/routers/prompts.py
backend/apps/webui/routers/prompts.py
+3
-3
backend/apps/webui/routers/tools.py
backend/apps/webui/routers/tools.py
+3
-3
backend/apps/webui/routers/users.py
backend/apps/webui/routers/users.py
+2
-2
backend/apps/webui/routers/utils.py
backend/apps/webui/routers/utils.py
+2
-2
backend/apps/webui/utils.py
backend/apps/webui/utils.py
+3
-2
backend/config.py
backend/config.py
+8
-8
backend/main.py
backend/main.py
+3
-3
No files found.
backend/apps/webui/models/memories.py
View file @
9f0c9d97
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
sqlalchemy
import
Column
,
String
,
BigInteger
,
Text
...
...
@@ -80,25 +80,25 @@ class MemoriesTable:
)
db
.
commit
()
return
self
.
get_memory_by_id
(
id
)
except
:
except
Exception
:
return
None
def
get_memories
(
self
)
->
L
ist
[
MemoryModel
]:
def
get_memories
(
self
)
->
l
ist
[
MemoryModel
]:
with
get_db
()
as
db
:
try
:
memories
=
db
.
query
(
Memory
).
all
()
return
[
MemoryModel
.
model_validate
(
memory
)
for
memory
in
memories
]
except
:
except
Exception
:
return
None
def
get_memories_by_user_id
(
self
,
user_id
:
str
)
->
L
ist
[
MemoryModel
]:
def
get_memories_by_user_id
(
self
,
user_id
:
str
)
->
l
ist
[
MemoryModel
]:
with
get_db
()
as
db
:
try
:
memories
=
db
.
query
(
Memory
).
filter_by
(
user_id
=
user_id
).
all
()
return
[
MemoryModel
.
model_validate
(
memory
)
for
memory
in
memories
]
except
:
except
Exception
:
return
None
def
get_memory_by_id
(
self
,
id
:
str
)
->
Optional
[
MemoryModel
]:
...
...
@@ -107,7 +107,7 @@ class MemoriesTable:
try
:
memory
=
db
.
get
(
Memory
,
id
)
return
MemoryModel
.
model_validate
(
memory
)
except
:
except
Exception
:
return
None
def
delete_memory_by_id
(
self
,
id
:
str
)
->
bool
:
...
...
@@ -119,7 +119,7 @@ class MemoriesTable:
return
True
except
:
except
Exception
:
return
False
def
delete_memories_by_user_id
(
self
,
user_id
:
str
)
->
bool
:
...
...
@@ -130,7 +130,7 @@ class MemoriesTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
def
delete_memory_by_id_and_user_id
(
self
,
id
:
str
,
user_id
:
str
)
->
bool
:
...
...
@@ -141,7 +141,7 @@ class MemoriesTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/models.py
View file @
9f0c9d97
...
...
@@ -137,7 +137,7 @@ class ModelsTable:
print
(
e
)
return
None
def
get_all_models
(
self
)
->
L
ist
[
ModelModel
]:
def
get_all_models
(
self
)
->
l
ist
[
ModelModel
]:
with
get_db
()
as
db
:
return
[
ModelModel
.
model_validate
(
model
)
for
model
in
db
.
query
(
Model
).
all
()]
...
...
@@ -146,7 +146,7 @@ class ModelsTable:
with
get_db
()
as
db
:
model
=
db
.
get
(
Model
,
id
)
return
ModelModel
.
model_validate
(
model
)
except
:
except
Exception
:
return
None
def
update_model_by_id
(
self
,
id
:
str
,
model
:
ModelForm
)
->
Optional
[
ModelModel
]:
...
...
@@ -175,7 +175,7 @@ class ModelsTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/prompts.py
View file @
9f0c9d97
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Optional
from
typing
import
Optional
import
time
from
sqlalchemy
import
String
,
Column
,
BigInteger
,
Text
...
...
@@ -79,10 +79,10 @@ class PromptsTable:
prompt
=
db
.
query
(
Prompt
).
filter_by
(
command
=
command
).
first
()
return
PromptModel
.
model_validate
(
prompt
)
except
:
except
Exception
:
return
None
def
get_prompts
(
self
)
->
L
ist
[
PromptModel
]:
def
get_prompts
(
self
)
->
l
ist
[
PromptModel
]:
with
get_db
()
as
db
:
return
[
...
...
@@ -101,7 +101,7 @@ class PromptsTable:
prompt
.
timestamp
=
int
(
time
.
time
())
db
.
commit
()
return
PromptModel
.
model_validate
(
prompt
)
except
:
except
Exception
:
return
None
def
delete_prompt_by_command
(
self
,
command
:
str
)
->
bool
:
...
...
@@ -112,7 +112,7 @@ class PromptsTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/tags.py
View file @
9f0c9d97
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Optional
from
typing
import
Optional
import
json
import
uuid
...
...
@@ -69,11 +69,11 @@ class ChatIdTagForm(BaseModel):
class
TagChatIdsResponse
(
BaseModel
):
chat_ids
:
L
ist
[
str
]
chat_ids
:
l
ist
[
str
]
class
ChatTagsResponse
(
BaseModel
):
tags
:
L
ist
[
str
]
tags
:
l
ist
[
str
]
class
TagTable
:
...
...
@@ -109,7 +109,7 @@ class TagTable:
self
,
user_id
:
str
,
form_data
:
ChatIdTagForm
)
->
Optional
[
ChatIdTagModel
]:
tag
=
self
.
get_tag_by_name_and_user_id
(
form_data
.
tag_name
,
user_id
)
if
tag
==
None
:
if
tag
is
None
:
tag
=
self
.
insert_new_tag
(
form_data
.
tag_name
,
user_id
)
id
=
str
(
uuid
.
uuid4
())
...
...
@@ -132,10 +132,10 @@ class TagTable:
return
ChatIdTagModel
.
model_validate
(
result
)
else
:
return
None
except
:
except
Exception
:
return
None
def
get_tags_by_user_id
(
self
,
user_id
:
str
)
->
L
ist
[
TagModel
]:
def
get_tags_by_user_id
(
self
,
user_id
:
str
)
->
l
ist
[
TagModel
]:
with
get_db
()
as
db
:
tag_names
=
[
chat_id_tag
.
tag_name
...
...
@@ -159,7 +159,7 @@ class TagTable:
def
get_tags_by_chat_id_and_user_id
(
self
,
chat_id
:
str
,
user_id
:
str
)
->
L
ist
[
TagModel
]:
)
->
l
ist
[
TagModel
]:
with
get_db
()
as
db
:
tag_names
=
[
...
...
@@ -184,7 +184,7 @@ class TagTable:
def
get_chat_ids_by_tag_name_and_user_id
(
self
,
tag_name
:
str
,
user_id
:
str
)
->
L
ist
[
ChatIdTagModel
]:
)
->
l
ist
[
ChatIdTagModel
]:
with
get_db
()
as
db
:
return
[
...
...
backend/apps/webui/models/tools.py
View file @
9f0c9d97
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Optional
from
typing
import
Optional
import
time
import
logging
from
sqlalchemy
import
String
,
Column
,
BigInteger
,
Text
...
...
@@ -45,7 +45,7 @@ class ToolModel(BaseModel):
user_id
:
str
name
:
str
content
:
str
specs
:
L
ist
[
dict
]
specs
:
l
ist
[
dict
]
meta
:
ToolMeta
updated_at
:
int
# timestamp in epoch
created_at
:
int
# timestamp in epoch
...
...
@@ -81,7 +81,7 @@ class ToolValves(BaseModel):
class
ToolsTable
:
def
insert_new_tool
(
self
,
user_id
:
str
,
form_data
:
ToolForm
,
specs
:
L
ist
[
dict
]
self
,
user_id
:
str
,
form_data
:
ToolForm
,
specs
:
l
ist
[
dict
]
)
->
Optional
[
ToolModel
]:
with
get_db
()
as
db
:
...
...
@@ -115,10 +115,10 @@ class ToolsTable:
tool
=
db
.
get
(
Tool
,
id
)
return
ToolModel
.
model_validate
(
tool
)
except
:
except
Exception
:
return
None
def
get_tools
(
self
)
->
L
ist
[
ToolModel
]:
def
get_tools
(
self
)
->
l
ist
[
ToolModel
]:
with
get_db
()
as
db
:
return
[
ToolModel
.
model_validate
(
tool
)
for
tool
in
db
.
query
(
Tool
).
all
()]
...
...
@@ -141,7 +141,7 @@ class ToolsTable:
)
db
.
commit
()
return
self
.
get_tool_by_id
(
id
)
except
:
except
Exception
:
return
None
def
get_user_valves_by_id_and_user_id
(
...
...
@@ -196,7 +196,7 @@ class ToolsTable:
tool
=
db
.
query
(
Tool
).
get
(
id
)
db
.
refresh
(
tool
)
return
ToolModel
.
model_validate
(
tool
)
except
:
except
Exception
:
return
None
def
delete_tool_by_id
(
self
,
id
:
str
)
->
bool
:
...
...
@@ -206,7 +206,7 @@ class ToolsTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/users.py
View file @
9f0c9d97
from
pydantic
import
BaseModel
,
ConfigDict
,
parse_obj_as
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
import
time
from
sqlalchemy
import
String
,
Column
,
BigInteger
,
Text
...
...
@@ -125,7 +125,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
api_key
=
api_key
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
get_user_by_email
(
self
,
email
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -134,7 +134,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
email
=
email
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
get_user_by_oauth_sub
(
self
,
sub
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -143,10 +143,10 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
oauth_sub
=
sub
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
get_users
(
self
,
skip
:
int
=
0
,
limit
:
int
=
50
)
->
L
ist
[
UserModel
]:
def
get_users
(
self
,
skip
:
int
=
0
,
limit
:
int
=
50
)
->
l
ist
[
UserModel
]:
with
get_db
()
as
db
:
users
=
(
db
.
query
(
User
)
...
...
@@ -164,7 +164,7 @@ class UsersTable:
with
get_db
()
as
db
:
user
=
db
.
query
(
User
).
order_by
(
User
.
created_at
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_role_by_id
(
self
,
id
:
str
,
role
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -174,7 +174,7 @@ class UsersTable:
db
.
commit
()
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_profile_image_url_by_id
(
...
...
@@ -189,7 +189,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_last_active_by_id
(
self
,
id
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -203,7 +203,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_oauth_sub_by_id
(
...
...
@@ -216,7 +216,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_by_id
(
self
,
id
:
str
,
updated
:
dict
)
->
Optional
[
UserModel
]:
...
...
@@ -245,7 +245,7 @@ class UsersTable:
return
True
else
:
return
False
except
:
except
Exception
:
return
False
def
update_user_api_key_by_id
(
self
,
id
:
str
,
api_key
:
str
)
->
str
:
...
...
@@ -254,7 +254,7 @@ class UsersTable:
result
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
update
({
"api_key"
:
api_key
})
db
.
commit
()
return
True
if
result
==
1
else
False
except
:
except
Exception
:
return
False
def
get_user_api_key_by_id
(
self
,
id
:
str
)
->
Optional
[
str
]:
...
...
backend/apps/webui/routers/chats.py
View file @
9f0c9d97
from
fastapi
import
Depends
,
Request
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
utils.utils
import
get_verified_user
,
get_admin_user
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -40,8 +40,8 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/list"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/list"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_session_user_chat_list
(
user
=
Depends
(
get_verified_user
),
page
:
Optional
[
int
]
=
None
):
...
...
@@ -80,7 +80,7 @@ async def delete_all_user_chats(request: Request, user=Depends(get_verified_user
############################
@
router
.
get
(
"/list/user/{user_id}"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/list/user/{user_id}"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_user_chat_list_by_user_id
(
user_id
:
str
,
user
=
Depends
(
get_admin_user
),
...
...
@@ -119,7 +119,7 @@ async def create_new_chat(form_data: ChatForm, user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/all"
,
response_model
=
L
ist
[
ChatResponse
])
@
router
.
get
(
"/all"
,
response_model
=
l
ist
[
ChatResponse
])
async
def
get_user_chats
(
user
=
Depends
(
get_verified_user
)):
return
[
ChatResponse
(
**
{
**
chat
.
model_dump
(),
"chat"
:
json
.
loads
(
chat
.
chat
)})
...
...
@@ -132,7 +132,7 @@ async def get_user_chats(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/all/archived"
,
response_model
=
L
ist
[
ChatResponse
])
@
router
.
get
(
"/all/archived"
,
response_model
=
l
ist
[
ChatResponse
])
async
def
get_user_archived_chats
(
user
=
Depends
(
get_verified_user
)):
return
[
ChatResponse
(
**
{
**
chat
.
model_dump
(),
"chat"
:
json
.
loads
(
chat
.
chat
)})
...
...
@@ -145,7 +145,7 @@ async def get_user_archived_chats(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/all/db"
,
response_model
=
L
ist
[
ChatResponse
])
@
router
.
get
(
"/all/db"
,
response_model
=
l
ist
[
ChatResponse
])
async
def
get_all_user_chats_in_db
(
user
=
Depends
(
get_admin_user
)):
if
not
ENABLE_ADMIN_EXPORT
:
raise
HTTPException
(
...
...
@@ -163,7 +163,7 @@ async def get_all_user_chats_in_db(user=Depends(get_admin_user)):
############################
@
router
.
get
(
"/archived"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/archived"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_archived_session_user_chat_list
(
user
=
Depends
(
get_verified_user
),
skip
:
int
=
0
,
limit
:
int
=
50
):
...
...
@@ -216,7 +216,7 @@ class TagNameForm(BaseModel):
limit
:
Optional
[
int
]
=
50
@
router
.
post
(
"/tags"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
post
(
"/tags"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_user_chat_list_by_tag_name
(
form_data
:
TagNameForm
,
user
=
Depends
(
get_verified_user
)
):
...
...
@@ -241,7 +241,7 @@ async def get_user_chat_list_by_tag_name(
############################
@
router
.
get
(
"/tags/all"
,
response_model
=
L
ist
[
TagModel
])
@
router
.
get
(
"/tags/all"
,
response_model
=
l
ist
[
TagModel
])
async
def
get_all_tags
(
user
=
Depends
(
get_verified_user
)):
try
:
tags
=
Tags
.
get_tags_by_user_id
(
user
.
id
)
...
...
@@ -417,7 +417,7 @@ async def delete_shared_chat_by_id(id: str, user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/{id}/tags"
,
response_model
=
L
ist
[
TagModel
])
@
router
.
get
(
"/{id}/tags"
,
response_model
=
l
ist
[
TagModel
])
async
def
get_chat_tags_by_id
(
id
:
str
,
user
=
Depends
(
get_verified_user
)):
tags
=
Tags
.
get_tags_by_chat_id_and_user_id
(
id
,
user
.
id
)
...
...
backend/apps/webui/routers/configs.py
View file @
9f0c9d97
from
fastapi
import
Response
,
Request
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
from
typing
import
Union
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -29,12 +29,12 @@ class SetDefaultModelsForm(BaseModel):
class
PromptSuggestion
(
BaseModel
):
title
:
L
ist
[
str
]
title
:
l
ist
[
str
]
content
:
str
class
SetDefaultSuggestionsForm
(
BaseModel
):
suggestions
:
L
ist
[
PromptSuggestion
]
suggestions
:
l
ist
[
PromptSuggestion
]
############################
...
...
@@ -50,7 +50,7 @@ async def set_global_default_models(
return
request
.
app
.
state
.
config
.
DEFAULT_MODELS
@
router
.
post
(
"/default/suggestions"
,
response_model
=
L
ist
[
PromptSuggestion
])
@
router
.
post
(
"/default/suggestions"
,
response_model
=
l
ist
[
PromptSuggestion
])
async
def
set_global_default_suggestions
(
request
:
Request
,
form_data
:
SetDefaultSuggestionsForm
,
...
...
@@ -67,10 +67,10 @@ async def set_global_default_suggestions(
class
SetBannersForm
(
BaseModel
):
banners
:
L
ist
[
BannerModel
]
banners
:
l
ist
[
BannerModel
]
@
router
.
post
(
"/banners"
,
response_model
=
L
ist
[
BannerModel
])
@
router
.
post
(
"/banners"
,
response_model
=
l
ist
[
BannerModel
])
async
def
set_banners
(
request
:
Request
,
form_data
:
SetBannersForm
,
...
...
@@ -81,7 +81,7 @@ async def set_banners(
return
request
.
app
.
state
.
config
.
BANNERS
@
router
.
get
(
"/banners"
,
response_model
=
L
ist
[
BannerModel
])
@
router
.
get
(
"/banners"
,
response_model
=
l
ist
[
BannerModel
])
async
def
get_banners
(
request
:
Request
,
user
=
Depends
(
get_verified_user
),
...
...
backend/apps/webui/routers/documents.py
View file @
9f0c9d97
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -24,7 +24,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
DocumentResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
DocumentResponse
])
async
def
get_documents
(
user
=
Depends
(
get_verified_user
)):
docs
=
[
DocumentResponse
(
...
...
@@ -46,7 +46,7 @@ async def get_documents(user=Depends(get_verified_user)):
@
router
.
post
(
"/create"
,
response_model
=
Optional
[
DocumentResponse
])
async
def
create_new_doc
(
form_data
:
DocumentForm
,
user
=
Depends
(
get_admin_user
)):
doc
=
Documents
.
get_doc_by_name
(
form_data
.
name
)
if
doc
==
None
:
if
doc
is
None
:
doc
=
Documents
.
insert_new_doc
(
user
.
id
,
form_data
)
if
doc
:
...
...
@@ -102,7 +102,7 @@ class TagItem(BaseModel):
class
TagDocumentForm
(
BaseModel
):
name
:
str
tags
:
L
ist
[
dict
]
tags
:
l
ist
[
dict
]
@
router
.
post
(
"/doc/tags"
,
response_model
=
Optional
[
DocumentResponse
])
...
...
backend/apps/webui/routers/files.py
View file @
9f0c9d97
...
...
@@ -11,7 +11,7 @@ from fastapi import (
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
pathlib
import
Path
from
fastapi
import
APIRouter
...
...
@@ -104,7 +104,7 @@ def upload_file(file: UploadFile = File(...), user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
FileModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
FileModel
])
async
def
list_files
(
user
=
Depends
(
get_verified_user
)):
files
=
Files
.
get_files
()
return
files
...
...
backend/apps/webui/routers/functions.py
View file @
9f0c9d97
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
,
Request
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -30,7 +30,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
FunctionResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
FunctionResponse
])
async
def
get_functions
(
user
=
Depends
(
get_verified_user
)):
return
Functions
.
get_functions
()
...
...
@@ -40,7 +40,7 @@ async def get_functions(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/export"
,
response_model
=
L
ist
[
FunctionModel
])
@
router
.
get
(
"/export"
,
response_model
=
l
ist
[
FunctionModel
])
async
def
get_functions
(
user
=
Depends
(
get_admin_user
)):
return
Functions
.
get_functions
()
...
...
@@ -63,7 +63,7 @@ async def create_new_function(
form_data
.
id
=
form_data
.
id
.
lower
()
function
=
Functions
.
get_function_by_id
(
form_data
.
id
)
if
function
==
None
:
if
function
is
None
:
function_path
=
os
.
path
.
join
(
FUNCTIONS_DIR
,
f
"
{
form_data
.
id
}
.py"
)
try
:
with
open
(
function_path
,
"w"
)
as
function_file
:
...
...
@@ -235,7 +235,7 @@ async def delete_function_by_id(
function_path
=
os
.
path
.
join
(
FUNCTIONS_DIR
,
f
"
{
id
}
.py"
)
try
:
os
.
remove
(
function_path
)
except
:
except
Exception
:
pass
return
result
...
...
backend/apps/webui/routers/memories.py
View file @
9f0c9d97
from
fastapi
import
Response
,
Request
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -30,7 +30,7 @@ async def get_embeddings(request: Request):
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
MemoryModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
MemoryModel
])
async
def
get_memories
(
user
=
Depends
(
get_verified_user
)):
return
Memories
.
get_memories_by_user_id
(
user
.
id
)
...
...
backend/apps/webui/routers/models.py
View file @
9f0c9d97
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
,
Request
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -18,7 +18,7 @@ router = APIRouter()
###########################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
ModelResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
ModelResponse
])
async
def
get_models
(
user
=
Depends
(
get_verified_user
)):
return
Models
.
get_all_models
()
...
...
backend/apps/webui/routers/prompts.py
View file @
9f0c9d97
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -18,7 +18,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
PromptModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
PromptModel
])
async
def
get_prompts
(
user
=
Depends
(
get_verified_user
)):
return
Prompts
.
get_prompts
()
...
...
@@ -31,7 +31,7 @@ async def get_prompts(user=Depends(get_verified_user)):
@
router
.
post
(
"/create"
,
response_model
=
Optional
[
PromptModel
])
async
def
create_new_prompt
(
form_data
:
PromptForm
,
user
=
Depends
(
get_admin_user
)):
prompt
=
Prompts
.
get_prompt_by_command
(
form_data
.
command
)
if
prompt
==
None
:
if
prompt
is
None
:
prompt
=
Prompts
.
insert_new_prompt
(
user
.
id
,
form_data
)
if
prompt
:
...
...
backend/apps/webui/routers/tools.py
View file @
9f0c9d97
from
fastapi
import
Depends
,
HTTPException
,
status
,
Request
from
typing
import
List
,
Optional
from
typing
import
Optional
from
fastapi
import
APIRouter
...
...
@@ -27,7 +27,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
ToolResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
ToolResponse
])
async
def
get_toolkits
(
user
=
Depends
(
get_verified_user
)):
toolkits
=
[
toolkit
for
toolkit
in
Tools
.
get_tools
()]
return
toolkits
...
...
@@ -38,7 +38,7 @@ async def get_toolkits(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/export"
,
response_model
=
L
ist
[
ToolModel
])
@
router
.
get
(
"/export"
,
response_model
=
l
ist
[
ToolModel
])
async
def
get_toolkits
(
user
=
Depends
(
get_admin_user
)):
toolkits
=
[
toolkit
for
toolkit
in
Tools
.
get_tools
()]
return
toolkits
...
...
backend/apps/webui/routers/users.py
View file @
9f0c9d97
from
fastapi
import
Response
,
Request
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -39,7 +39,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
UserModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
UserModel
])
async
def
get_users
(
skip
:
int
=
0
,
limit
:
int
=
50
,
user
=
Depends
(
get_admin_user
)):
return
Users
.
get_users
(
skip
,
limit
)
...
...
backend/apps/webui/routers/utils.py
View file @
9f0c9d97
...
...
@@ -17,7 +17,7 @@ from utils.misc import calculate_sha256, get_gravatar_url
from
config
import
OLLAMA_BASE_URLS
,
DATA_DIR
,
UPLOAD_DIR
,
ENABLE_ADMIN_EXPORT
from
constants
import
ERROR_MESSAGES
from
typing
import
List
router
=
APIRouter
()
...
...
@@ -57,7 +57,7 @@ async def get_html_from_markdown(
class
ChatForm
(
BaseModel
):
title
:
str
messages
:
L
ist
[
dict
]
messages
:
l
ist
[
dict
]
@
router
.
post
(
"/pdf"
)
...
...
backend/apps/webui/utils.py
View file @
9f0c9d97
...
...
@@ -93,11 +93,12 @@ def load_function_module_by_id(function_id):
os
.
rename
(
function_path
,
f
"
{
function_path
}
.error"
)
raise
e
def
install_frontmatter_requirements
(
requirements
):
if
requirements
:
req_list
=
[
req
.
strip
()
for
req
in
requirements
.
split
(
','
)]
req_list
=
[
req
.
strip
()
for
req
in
requirements
.
split
(
","
)]
for
req
in
req_list
:
print
(
f
"Installing requirement:
{
req
}
"
)
subprocess
.
check_call
([
sys
.
executable
,
"-m"
,
"pip"
,
"install"
,
req
])
else
:
print
(
"No requirements found in frontmatter."
)
\ No newline at end of file
print
(
"No requirements found in frontmatter."
)
backend/config.py
View file @
9f0c9d97
...
...
@@ -104,7 +104,7 @@ ENV = os.environ.get("ENV", "dev")
try
:
PACKAGE_DATA
=
json
.
loads
((
BASE_DIR
/
"package.json"
).
read_text
())
except
:
except
Exception
:
try
:
PACKAGE_DATA
=
{
"version"
:
importlib
.
metadata
.
version
(
"open-webui"
)}
except
importlib
.
metadata
.
PackageNotFoundError
:
...
...
@@ -137,7 +137,7 @@ try:
with
open
(
str
(
changelog_path
.
absolute
()),
"r"
,
encoding
=
"utf8"
)
as
file
:
changelog_content
=
file
.
read
()
except
:
except
Exception
:
changelog_content
=
(
pkgutil
.
get_data
(
"open_webui"
,
"CHANGELOG.md"
)
or
b
""
).
decode
()
...
...
@@ -202,12 +202,12 @@ if RESET_CONFIG_ON_START:
os
.
remove
(
f
"
{
DATA_DIR
}
/config.json"
)
with
open
(
f
"
{
DATA_DIR
}
/config.json"
,
"w"
)
as
f
:
f
.
write
(
"{}"
)
except
:
except
Exception
:
pass
try
:
CONFIG_DATA
=
json
.
loads
((
DATA_DIR
/
"config.json"
).
read_text
())
except
:
except
Exception
:
CONFIG_DATA
=
{}
...
...
@@ -647,7 +647,7 @@ if AIOHTTP_CLIENT_TIMEOUT == "":
else
:
try
:
AIOHTTP_CLIENT_TIMEOUT
=
int
(
AIOHTTP_CLIENT_TIMEOUT
)
except
:
except
Exception
:
AIOHTTP_CLIENT_TIMEOUT
=
300
...
...
@@ -727,7 +727,7 @@ try:
OPENAI_API_KEY
=
OPENAI_API_KEYS
.
value
[
OPENAI_API_BASE_URLS
.
value
.
index
(
"https://api.openai.com/v1"
)
]
except
:
except
Exception
:
pass
OPENAI_API_BASE_URL
=
"https://api.openai.com/v1"
...
...
@@ -1043,7 +1043,7 @@ RAG_EMBEDDING_MODEL = PersistentConfig(
"rag.embedding_model"
,
os
.
environ
.
get
(
"RAG_EMBEDDING_MODEL"
,
"sentence-transformers/all-MiniLM-L6-v2"
),
)
log
.
info
(
f
"Embedding model set:
{
RAG_EMBEDDING_MODEL
.
value
}
"
)
,
log
.
info
(
f
"Embedding model set:
{
RAG_EMBEDDING_MODEL
.
value
}
"
)
RAG_EMBEDDING_MODEL_AUTO_UPDATE
=
(
os
.
environ
.
get
(
"RAG_EMBEDDING_MODEL_AUTO_UPDATE"
,
""
).
lower
()
==
"true"
...
...
@@ -1065,7 +1065,7 @@ RAG_RERANKING_MODEL = PersistentConfig(
os
.
environ
.
get
(
"RAG_RERANKING_MODEL"
,
""
),
)
if
RAG_RERANKING_MODEL
.
value
!=
""
:
log
.
info
(
f
"Reranking model set:
{
RAG_RERANKING_MODEL
.
value
}
"
)
,
log
.
info
(
f
"Reranking model set:
{
RAG_RERANKING_MODEL
.
value
}
"
)
RAG_RERANKING_MODEL_AUTO_UPDATE
=
(
os
.
environ
.
get
(
"RAG_RERANKING_MODEL_AUTO_UPDATE"
,
""
).
lower
()
==
"true"
...
...
backend/main.py
View file @
9f0c9d97
...
...
@@ -51,7 +51,7 @@ from apps.webui.internal.db import Session
from
pydantic
import
BaseModel
from
typing
import
List
,
Optional
from
typing
import
Optional
from
apps.webui.models.auths
import
Auths
from
apps.webui.models.models
import
Models
...
...
@@ -1883,7 +1883,7 @@ async def get_pipeline_valves(
res
=
r
.
json
()
if
"detail"
in
res
:
detail
=
res
[
"detail"
]
except
:
except
Exception
:
pass
raise
HTTPException
(
...
...
@@ -2027,7 +2027,7 @@ async def get_model_filter_config(user=Depends(get_admin_user)):
class
ModelFilterConfigForm
(
BaseModel
):
enabled
:
bool
models
:
L
ist
[
str
]
models
:
l
ist
[
str
]
@
app
.
post
(
"/api/config/model/filter"
)
...
...
Prev
1
2
3
Next
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