This commit is contained in:
Timothy Jaeryang Baek
2026-03-07 19:31:51 -06:00
parent 8cd3bd7997
commit 967b1137dc
2 changed files with 32 additions and 4 deletions

View File

@@ -2241,10 +2241,34 @@ async def process_chat_payload(request, form_data, user, metadata, model):
folder.data["system_prompt"], form_data, metadata, user
)
if "files" in folder.data:
form_data["files"] = [
*folder.data["files"],
*form_data.get("files", []),
]
folder_files = folder.data["files"]
if (
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
user_message = get_last_user_message(form_data["messages"])

View File

@@ -432,6 +432,10 @@ def get_builtin_tools(
# If model has attached knowledge (any type), only provide query_knowledge_files
# Otherwise, provide all KB browsing tools
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 model_knowledge:
# Model has attached knowledge - only allow semantic search within it