This commit is contained in:
Timothy Jaeryang Baek
2026-06-16 23:48:01 +02:00
parent 4210cae68e
commit c205d3a353
+10 -8
View File
@@ -2617,7 +2617,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
# If the original caller provided tools, use them as-is (skip resolution).
# Otherwise, save any tools that filter inlets added for merging later.
inlet_filter_tools = None if payload_tools else form_data.get('tools', None)
inlet_filter_tools = None if payload_tools is not None else form_data.get('tools', None)
# Skills — extract IDs from message content (<$skillId|label> tags) so
# persisted chats work without relying on the frontend to send skill_ids.
@@ -2704,10 +2704,10 @@ async def process_chat_payload(request, form_data, user, metadata, model):
}
form_data['metadata'] = metadata
# When the caller provides an explicit OpenAI-style `tools` array in the
# request body, skip all server-side tool resolution and pass the caller's
# tools through to the model unchanged.
if not payload_tools:
# When the caller provides an explicit `tools` key in the request body,
# skip all server-side tool resolution and pass the caller's tools through
# unchanged. Sending `tools: []` explicitly opts out of builtin injection.
if payload_tools is None:
# Server side tools
tool_ids = metadata.get('tool_ids', None)
# Client side tools
@@ -2838,12 +2838,14 @@ async def process_chat_payload(request, form_data, user, metadata, model):
if mcp_clients:
metadata['mcp_clients'] = mcp_clients
# Inject builtin tools for native function calling based on enabled features and model capability
# Check if builtin_tools capability is enabled for this model (defaults to True if not specified)
# Inject builtin tools for native function calling based on enabled features and model capability.
# Only inject when the request originates from the UI (identified by session_id).
# API callers don't expect hidden tools; they can explicitly request tools via tool_ids.
builtin_tools_enabled = (model.get('info', {}).get('meta', {}).get('capabilities') or {}).get(
'builtin_tools', True
)
if metadata.get('params', {}).get('function_calling') != 'legacy' and builtin_tools_enabled:
has_session = bool(metadata.get('session_id'))
if has_session and metadata.get('params', {}).get('function_calling') != 'legacy' and builtin_tools_enabled:
# Add file context to user messages
chat_id = metadata.get('chat_id')
form_data['messages'] = await add_file_context(form_data.get('messages', []), chat_id, user)