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
d936353d
Commit
d936353d
authored
Mar 08, 2024
by
Timothy J. Baek
Browse files
fix: message type edge case
parent
9f58ed5a
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
73 additions
and
24 deletions
+73
-24
backend/main.py
backend/main.py
+35
-6
src/routes/(app)/+page.svelte
src/routes/(app)/+page.svelte
+19
-9
src/routes/(app)/c/[id]/+page.svelte
src/routes/(app)/c/[id]/+page.svelte
+19
-9
No files found.
backend/main.py
View file @
d936353d
...
@@ -85,7 +85,24 @@ class RAGMiddleware(BaseHTTPMiddleware):
...
@@ -85,7 +85,24 @@ class RAGMiddleware(BaseHTTPMiddleware):
last_user_message_idx
=
i
last_user_message_idx
=
i
break
break
query
=
data
[
"messages"
][
last_user_message_idx
][
"content"
]
user_message
=
data
[
"messages"
][
last_user_message_idx
]
if
isinstance
(
user_message
[
"content"
],
list
):
# Handle list content input
content_type
=
"list"
query
=
""
for
content_item
in
user_message
[
"content"
]:
if
content_item
[
"type"
]
==
"text"
:
query
=
content_item
[
"text"
]
break
elif
isinstance
(
user_message
[
"content"
],
str
):
# Handle text content input
content_type
=
"text"
query
=
user_message
[
"content"
]
else
:
# Fallback in case the input does not match expected types
content_type
=
None
query
=
""
relevant_contexts
=
[]
relevant_contexts
=
[]
...
@@ -112,16 +129,28 @@ class RAGMiddleware(BaseHTTPMiddleware):
...
@@ -112,16 +129,28 @@ class RAGMiddleware(BaseHTTPMiddleware):
if
context
:
if
context
:
context_string
+=
" "
.
join
(
context
[
"documents"
][
0
])
+
"
\n
"
context_string
+=
" "
.
join
(
context
[
"documents"
][
0
])
+
"
\n
"
content
=
rag_template
(
ra_
content
=
rag_template
(
template
=
rag_app
.
state
.
RAG_TEMPLATE
,
template
=
rag_app
.
state
.
RAG_TEMPLATE
,
context
=
context_string
,
context
=
context_string
,
query
=
query
,
query
=
query
,
)
)
if
content_type
==
"list"
:
new_content
=
[]
for
content_item
in
user_message
[
"content"
]:
if
content_item
[
"type"
]
==
"text"
:
# Update the text item's content with ra_content
new_content
.
append
({
"type"
:
"text"
,
"text"
:
ra_content
})
else
:
# Keep other types of content as they are
new_content
.
append
(
content_item
)
new_user_message
=
{
**
user_message
,
"content"
:
new_content
}
else
:
new_user_message
=
{
new_user_message
=
{
**
data
[
"messages"
][
last_
user_message
_idx
]
,
**
user_message
,
"content"
:
content
,
"content"
:
ra_
content
,
}
}
data
[
"messages"
][
last_user_message_idx
]
=
new_user_message
data
[
"messages"
][
last_user_message_idx
]
=
new_user_message
del
data
[
"docs"
]
del
data
[
"docs"
]
...
...
src/routes/(app)/+page.svelte
View file @
d936353d
...
@@ -295,15 +295,25 @@
...
@@ -295,15 +295,25 @@
...
messages
...
messages
]
]
.
filter
((
message
)
=>
message
)
.
filter
((
message
)
=>
message
)
.
map
((
message
,
idx
,
arr
)
=>
({
.
map
((
message
,
idx
,
arr
)
=>
{
//
Prepare
the
base
message
object
const
baseMessage
=
{
role
:
message
.
role
,
role
:
message
.
role
,
content
:
arr
.
length
-
2
!== idx ? message.content : message?.raContent ?? message.content,
content
:
arr
.
length
-
2
!== idx ? message.content : message?.raContent ?? message.content
...(
message
.
files
&&
{
};
images
:
message
.
files
.
filter
((
file
)
=>
file
.
type
===
'image'
)
//
Extract
and
format
image
URLs
if
any
exist
.
map
((
file
)
=>
file
.
url
.
slice
(
file
.
url
.
indexOf
(
','
)
+
1
))
const
imageUrls
=
message
.
files
})
?.
filter
((
file
)
=>
file
.
type
===
'image'
)
}));
.
map
((
file
)
=>
file
.
url
.
slice
(
file
.
url
.
indexOf
(
','
)
+
1
));
//
Add
images
array
only
if
it
contains
elements
if
(
imageUrls
&&
imageUrls
.
length
>
0
)
{
baseMessage
.
images
=
imageUrls
;
}
return
baseMessage
;
});
let
lastImageIndex
=
-
1
;
let
lastImageIndex
=
-
1
;
...
...
src/routes/(app)/c/[id]/+page.svelte
View file @
d936353d
...
@@ -308,15 +308,25 @@
...
@@ -308,15 +308,25 @@
...
messages
...
messages
]
]
.
filter
((
message
)
=>
message
)
.
filter
((
message
)
=>
message
)
.
map
((
message
,
idx
,
arr
)
=>
({
.
map
((
message
,
idx
,
arr
)
=>
{
//
Prepare
the
base
message
object
const
baseMessage
=
{
role
:
message
.
role
,
role
:
message
.
role
,
content
:
arr
.
length
-
2
!== idx ? message.content : message?.raContent ?? message.content,
content
:
arr
.
length
-
2
!== idx ? message.content : message?.raContent ?? message.content
...(
message
.
files
&&
{
};
images
:
message
.
files
.
filter
((
file
)
=>
file
.
type
===
'image'
)
//
Extract
and
format
image
URLs
if
any
exist
.
map
((
file
)
=>
file
.
url
.
slice
(
file
.
url
.
indexOf
(
','
)
+
1
))
const
imageUrls
=
message
.
files
})
?.
filter
((
file
)
=>
file
.
type
===
'image'
)
}));
.
map
((
file
)
=>
file
.
url
.
slice
(
file
.
url
.
indexOf
(
','
)
+
1
));
//
Add
images
array
only
if
it
contains
elements
if
(
imageUrls
&&
imageUrls
.
length
>
0
)
{
baseMessage
.
images
=
imageUrls
;
}
return
baseMessage
;
});
let
lastImageIndex
=
-
1
;
let
lastImageIndex
=
-
1
;
...
...
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