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
6307adfb
Commit
6307adfb
authored
Mar 25, 2024
by
Timothy J. Baek
Browse files
feat: better error handling
parent
c91a5d8b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
58 additions
and
43 deletions
+58
-43
backend/apps/rag/main.py
backend/apps/rag/main.py
+56
-43
backend/constants.py
backend/constants.py
+2
-0
No files found.
backend/apps/rag/main.py
View file @
6307adfb
...
@@ -115,6 +115,7 @@ class CollectionNameForm(BaseModel):
...
@@ -115,6 +115,7 @@ class CollectionNameForm(BaseModel):
class
StoreWebForm
(
CollectionNameForm
):
class
StoreWebForm
(
CollectionNameForm
):
url
:
str
url
:
str
@
app
.
get
(
"/"
)
@
app
.
get
(
"/"
)
async
def
get_status
():
async
def
get_status
():
return
{
return
{
...
@@ -297,13 +298,18 @@ def store_web(form_data: StoreWebForm, user=Depends(get_current_user)):
...
@@ -297,13 +298,18 @@ def store_web(form_data: StoreWebForm, user=Depends(get_current_user)):
def
store_data_in_vector_db
(
data
,
collection_name
,
overwrite
:
bool
=
False
)
->
bool
:
def
store_data_in_vector_db
(
data
,
collection_name
,
overwrite
:
bool
=
False
)
->
bool
:
text_splitter
=
RecursiveCharacterTextSplitter
(
text_splitter
=
RecursiveCharacterTextSplitter
(
chunk_size
=
app
.
state
.
CHUNK_SIZE
,
chunk_size
=
app
.
state
.
CHUNK_SIZE
,
chunk_overlap
=
app
.
state
.
CHUNK_OVERLAP
,
chunk_overlap
=
app
.
state
.
CHUNK_OVERLAP
,
add_start_index
=
True
,
add_start_index
=
True
,
)
)
docs
=
text_splitter
.
split_documents
(
data
)
docs
=
text_splitter
.
split_documents
(
data
)
return
store_docs_in_vector_db
(
docs
,
collection_name
,
overwrite
)
if
len
(
docs
)
>
0
:
return
store_docs_in_vector_db
(
docs
,
collection_name
,
overwrite
),
None
else
:
raise
ValueError
(
ERROR_MESSAGES
.
EMPTY_CONTENT
)
def
store_text_in_vector_db
(
def
store_text_in_vector_db
(
...
@@ -319,6 +325,7 @@ def store_text_in_vector_db(
...
@@ -319,6 +325,7 @@ def store_text_in_vector_db(
def
store_docs_in_vector_db
(
docs
,
collection_name
,
overwrite
:
bool
=
False
)
->
bool
:
def
store_docs_in_vector_db
(
docs
,
collection_name
,
overwrite
:
bool
=
False
)
->
bool
:
texts
=
[
doc
.
page_content
for
doc
in
docs
]
texts
=
[
doc
.
page_content
for
doc
in
docs
]
metadatas
=
[
doc
.
metadata
for
doc
in
docs
]
metadatas
=
[
doc
.
metadata
for
doc
in
docs
]
...
@@ -455,19 +462,21 @@ def store_doc(
...
@@ -455,19 +462,21 @@ def store_doc(
loader
,
known_type
=
get_loader
(
file
.
filename
,
file
.
content_type
,
file_path
)
loader
,
known_type
=
get_loader
(
file
.
filename
,
file
.
content_type
,
file_path
)
data
=
loader
.
load
()
data
=
loader
.
load
()
result
=
store_data_in_vector_db
(
data
,
collection_name
)
try
:
if
result
:
result
=
store_data_in_vector_db
(
data
,
collection_name
)
return
{
"status"
:
True
,
if
result
:
"collection_name"
:
collection_name
,
return
{
"filename"
:
filename
,
"status"
:
True
,
"known_type"
:
known_type
,
"collection_name"
:
collection_name
,
}
"filename"
:
filename
,
else
:
"known_type"
:
known_type
,
}
except
Exception
as
e
:
raise
HTTPException
(
raise
HTTPException
(
status_code
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
,
status_code
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
,
detail
=
ERROR_MESSAGES
.
DEFAULT
()
,
detail
=
e
,
)
)
except
Exception
as
e
:
except
Exception
as
e
:
log
.
exception
(
e
)
log
.
exception
(
e
)
...
@@ -532,38 +541,42 @@ def scan_docs_dir(user=Depends(get_admin_user)):
...
@@ -532,38 +541,42 @@ def scan_docs_dir(user=Depends(get_admin_user)):
)
)
data
=
loader
.
load
()
data
=
loader
.
load
()
result
=
store_data_in_vector_db
(
data
,
collection_name
)
try
:
result
=
store_data_in_vector_db
(
data
,
collection_name
)
if
result
:
sanitized_filename
=
sanitize_filename
(
filename
)
if
result
:
doc
=
Documents
.
get_doc_by_name
(
sanitized_filename
)
sanitized_filename
=
sanitize_filename
(
filename
)
doc
=
Documents
.
get_doc_by_name
(
sanitized_filename
)
if
doc
==
None
:
doc
=
Documents
.
insert_new_doc
(
if
doc
==
None
:
user
.
id
,
doc
=
Documents
.
insert_new_doc
(
DocumentForm
(
user
.
id
,
**
{
DocumentForm
(
"name"
:
sanitized_filename
,
**
{
"title"
:
filename
,
"name"
:
sanitized_filename
,
"collection_name"
:
collection_name
,
"title"
:
filename
,
"filename"
:
filename
,
"collection_name"
:
collection_name
,
"content"
:
(
"filename"
:
filename
,
json
.
dumps
(
"content"
:
(
{
json
.
dumps
(
"tags"
:
list
(
{
map
(
"tags"
:
list
(
lambda
name
:
{
"name"
:
name
},
map
(
tags
,
lambda
name
:
{
"name"
:
name
},
tags
,
)
)
)
)
}
}
)
)
if
len
(
tags
)
if
len
(
tags
)
else
"{}"
else
"{}"
),
),
}
}
),
),
)
)
except
Exception
as
e
:
print
(
e
)
pass
except
Exception
as
e
:
except
Exception
as
e
:
log
.
exception
(
e
)
log
.
exception
(
e
)
...
...
backend/constants.py
View file @
6307adfb
...
@@ -60,3 +60,5 @@ class ERROR_MESSAGES(str, Enum):
...
@@ -60,3 +60,5 @@ class ERROR_MESSAGES(str, Enum):
MODEL_NOT_FOUND
=
lambda
name
=
""
:
f
"Model '
{
name
}
' was not found"
MODEL_NOT_FOUND
=
lambda
name
=
""
:
f
"Model '
{
name
}
' was not found"
OPENAI_NOT_FOUND
=
lambda
name
=
""
:
f
"OpenAI API was not found"
OPENAI_NOT_FOUND
=
lambda
name
=
""
:
f
"OpenAI API was not found"
OLLAMA_NOT_FOUND
=
"WebUI could not connect to Ollama"
OLLAMA_NOT_FOUND
=
"WebUI could not connect to Ollama"
EMPTY_CONTENT
=
"The content provided is empty. Please ensure that there is text or data present before proceeding."
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