mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-16 11:57:51 +01:00
refac: collection query status
This commit is contained in:
@@ -416,9 +416,12 @@ async def process_chat_payload(request, form_data, metadata, user, model):
|
||||
form_data = apply_params_to_form_data(form_data, model)
|
||||
log.debug(f"form_data: {form_data}")
|
||||
|
||||
event_emitter = get_event_emitter(metadata)
|
||||
event_call = get_event_call(metadata)
|
||||
|
||||
extra_params = {
|
||||
"__event_emitter__": get_event_emitter(metadata),
|
||||
"__event_call__": get_event_call(metadata),
|
||||
"__event_emitter__": event_emitter,
|
||||
"__event_call__": event_call,
|
||||
"__user__": {
|
||||
"id": user.id,
|
||||
"email": user.email,
|
||||
@@ -432,9 +435,52 @@ async def process_chat_payload(request, form_data, metadata, user, model):
|
||||
# Initialize events to store additional event to be sent to the client
|
||||
# Initialize contexts and citation
|
||||
models = request.app.state.MODELS
|
||||
|
||||
events = []
|
||||
sources = []
|
||||
|
||||
user_message = get_last_user_message(form_data["messages"])
|
||||
model_knowledge = model.get("info", {}).get("meta", {}).get("knowledge", False)
|
||||
|
||||
if model_knowledge:
|
||||
await event_emitter(
|
||||
{
|
||||
"type": "status",
|
||||
"data": {
|
||||
"action": "knowledge_search",
|
||||
"query": user_message,
|
||||
"done": False,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
knowledge_files = []
|
||||
for item in model_knowledge:
|
||||
print(item)
|
||||
if item.get("collection_name"):
|
||||
knowledge_files.append(
|
||||
{
|
||||
"id": item.get("collection_name"),
|
||||
"name": item.get("name"),
|
||||
"legacy": True,
|
||||
}
|
||||
)
|
||||
elif item.get("collection_names"):
|
||||
knowledge_files.append(
|
||||
{
|
||||
"name": item.get("name"),
|
||||
"type": "collection",
|
||||
"collection_names": item.get("collection_names"),
|
||||
"legacy": True,
|
||||
}
|
||||
)
|
||||
else:
|
||||
knowledge_files.append(item)
|
||||
|
||||
files = form_data.get("files", [])
|
||||
files.extend(knowledge_files)
|
||||
form_data["files"] = files
|
||||
|
||||
try:
|
||||
form_data, flags = await chat_completion_filter_functions_handler(
|
||||
request, form_data, model, extra_params
|
||||
@@ -445,6 +491,9 @@ async def process_chat_payload(request, form_data, metadata, user, model):
|
||||
tool_ids = form_data.pop("tool_ids", None)
|
||||
files = form_data.pop("files", None)
|
||||
|
||||
# Remove files duplicates
|
||||
files = list({json.dumps(f, sort_keys=True): f for f in files}.values())
|
||||
|
||||
metadata = {
|
||||
**metadata,
|
||||
"tool_ids": tool_ids,
|
||||
@@ -522,6 +571,19 @@ async def process_chat_payload(request, form_data, metadata, user, model):
|
||||
if len(sources) > 0:
|
||||
events.append({"sources": sources})
|
||||
|
||||
if model_knowledge:
|
||||
await event_emitter(
|
||||
{
|
||||
"type": "status",
|
||||
"data": {
|
||||
"action": "knowledge_search",
|
||||
"query": user_message,
|
||||
"done": True,
|
||||
"hidden": True,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
return form_data, events
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user