enh: file context model setting

This commit is contained in:
Tim Baek
2026-01-09 03:41:43 -05:00
parent 1138929f4d
commit daccf0713e
3 changed files with 31 additions and 8 deletions
+16 -7
View File
@@ -1854,13 +1854,22 @@ async def process_chat_payload(request, form_data, user, metadata, model):
except Exception as e: except Exception as e:
log.exception(e) log.exception(e)
try: # Check if file context extraction is enabled for this model (default True)
form_data, flags = await chat_completion_files_handler( file_context_enabled = (
request, form_data, extra_params, user model.get("info", {})
) .get("meta", {})
sources.extend(flags.get("sources", [])) .get("capabilities", {})
except Exception as e: .get("file_context", True)
log.exception(e) )
if file_context_enabled:
try:
form_data, flags = await chat_completion_files_handler(
request, form_data, extra_params, user
)
sources.extend(flags.get("sources", []))
except Exception as e:
log.exception(e)
# If context is not empty, insert it into the messages # If context is not empty, insert it into the messages
if sources and prompt: if sources and prompt:
@@ -15,6 +15,10 @@
label: $i18n.t('File Upload'), label: $i18n.t('File Upload'),
description: $i18n.t('Model accepts file inputs') description: $i18n.t('Model accepts file inputs')
}, },
file_context: {
label: $i18n.t('File Context'),
description: $i18n.t('Inject file content into conversation context')
},
web_search: { web_search: {
label: $i18n.t('Web Search'), label: $i18n.t('Web Search'),
description: $i18n.t('Model can search the web for information') description: $i18n.t('Model can search the web for information')
@@ -50,6 +54,7 @@
}; };
export let capabilities: { export let capabilities: {
file_context?: boolean;
vision?: boolean; vision?: boolean;
file_upload?: boolean; file_upload?: boolean;
web_search?: boolean; web_search?: boolean;
@@ -60,6 +65,14 @@
status_updates?: boolean; status_updates?: boolean;
builtin_tools?: boolean; builtin_tools?: boolean;
} = {}; } = {};
// Hide file_context when file_upload is disabled
$: visibleCapabilities = Object.keys(capabilityLabels).filter((cap) => {
if (cap === 'file_context' && !capabilities.file_upload) {
return false;
}
return true;
});
</script> </script>
<div> <div>
@@ -67,7 +80,7 @@
<div class=" self-center text-xs font-medium text-gray-500">{$i18n.t('Capabilities')}</div> <div class=" self-center text-xs font-medium text-gray-500">{$i18n.t('Capabilities')}</div>
</div> </div>
<div class="flex items-center mt-2 flex-wrap"> <div class="flex items-center mt-2 flex-wrap">
{#each Object.keys(capabilityLabels) as capability} {#each visibleCapabilities as capability}
<div class=" flex items-center gap-2 mr-3"> <div class=" flex items-center gap-2 mr-3">
<Checkbox <Checkbox
state={capabilities[capability] ? 'checked' : 'unchecked'} state={capabilities[capability] ? 'checked' : 'unchecked'}
@@ -92,6 +92,7 @@
let defaultFilterIds = []; let defaultFilterIds = [];
let capabilities = { let capabilities = {
file_context: true,
vision: true, vision: true,
file_upload: true, file_upload: true,
web_search: true, web_search: true,