refac
This commit is contained in:
@@ -2241,10 +2241,34 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||||||
folder.data["system_prompt"], form_data, metadata, user
|
folder.data["system_prompt"], form_data, metadata, user
|
||||||
)
|
)
|
||||||
if "files" in folder.data:
|
if "files" in folder.data:
|
||||||
form_data["files"] = [
|
folder_files = folder.data["files"]
|
||||||
*folder.data["files"],
|
if (
|
||||||
*form_data.get("files", []),
|
metadata.get("params", {}).get("function_calling")
|
||||||
]
|
== "native"
|
||||||
|
):
|
||||||
|
# Native FC: knowledge files will be handled by the
|
||||||
|
# builtin query_knowledge_files tool, not RAG.
|
||||||
|
knowledge_files = [
|
||||||
|
f
|
||||||
|
for f in folder_files
|
||||||
|
if f.get("type") == "collection"
|
||||||
|
or f.get("collection_names")
|
||||||
|
]
|
||||||
|
attachment_files = [
|
||||||
|
f
|
||||||
|
for f in folder_files
|
||||||
|
if f not in knowledge_files
|
||||||
|
]
|
||||||
|
form_data["files"] = [
|
||||||
|
*attachment_files,
|
||||||
|
*form_data.get("files", []),
|
||||||
|
]
|
||||||
|
metadata["folder_knowledge"] = knowledge_files
|
||||||
|
else:
|
||||||
|
form_data["files"] = [
|
||||||
|
*folder_files,
|
||||||
|
*form_data.get("files", []),
|
||||||
|
]
|
||||||
|
|
||||||
# Model "Knowledge" handling
|
# Model "Knowledge" handling
|
||||||
user_message = get_last_user_message(form_data["messages"])
|
user_message = get_last_user_message(form_data["messages"])
|
||||||
|
|||||||
@@ -432,6 +432,10 @@ def get_builtin_tools(
|
|||||||
# If model has attached knowledge (any type), only provide query_knowledge_files
|
# If model has attached knowledge (any type), only provide query_knowledge_files
|
||||||
# Otherwise, provide all KB browsing tools
|
# Otherwise, provide all KB browsing tools
|
||||||
model_knowledge = model.get("info", {}).get("meta", {}).get("knowledge", [])
|
model_knowledge = model.get("info", {}).get("meta", {}).get("knowledge", [])
|
||||||
|
# Merge folder-attached knowledge so builtin tools can search it
|
||||||
|
folder_knowledge = extra_params.get("__metadata__", {}).get("folder_knowledge")
|
||||||
|
if folder_knowledge:
|
||||||
|
model_knowledge = list(model_knowledge or []) + list(folder_knowledge)
|
||||||
if is_builtin_tool_enabled("knowledge"):
|
if is_builtin_tool_enabled("knowledge"):
|
||||||
if model_knowledge:
|
if model_knowledge:
|
||||||
# Model has attached knowledge - only allow semantic search within it
|
# Model has attached knowledge - only allow semantic search within it
|
||||||
|
|||||||
Reference in New Issue
Block a user