diff --git a/dashboard/src/composables/useProviderSources.ts b/dashboard/src/composables/useProviderSources.ts index a85ef2ae52..e3113f1821 100644 --- a/dashboard/src/composables/useProviderSources.ts +++ b/dashboard/src/composables/useProviderSources.ts @@ -134,11 +134,26 @@ export function useProviderSources(options: UseProviderSourcesOptions) { }) }) + function buildMetadataFromProvider(provider: any) { + if (!provider) return null + const mods = provider.modalities || [] + if (!mods.length && !provider.max_context_tokens) return null + const input: string[] = [] + if (mods.includes('image')) input.push('image') + if (mods.includes('audio')) input.push('audio') + return { + modalities: { input }, + tool_call: mods.includes('tool_use'), + reasoning: Boolean(provider.reasoning), + limit: { context: provider.max_context_tokens || 0 } + } + } + const mergedModelEntries = computed(() => { const configuredEntries = (sourceProviders.value || []).map((provider: any) => ({ type: 'configured', provider, - metadata: getModelMetadata(provider.model) + metadata: getModelMetadata(provider.model) || buildMetadataFromProvider(provider) })) const availableEntries = (sortedAvailableModels.value || []) @@ -575,7 +590,8 @@ export function useProviderSources(options: UseProviderSourcesOptions) { model: modelName, modalities, custom_extra_body: {}, - max_context_tokens: max_context_tokens + max_context_tokens: max_context_tokens, + reasoning: supportsReasoning(metadata) } } diff --git a/dashboard/src/views/knowledge-base/components/DocumentsTab.vue b/dashboard/src/views/knowledge-base/components/DocumentsTab.vue index 5bff7cd713..4a28f7d678 100644 --- a/dashboard/src/views/knowledge-base/components/DocumentsTab.vue +++ b/dashboard/src/views/knowledge-base/components/DocumentsTab.vue @@ -341,7 +341,10 @@ const loadDocuments = async () => { loading.value = true try { const response = await axios.get('/api/kb/document/list', { - params: { kb_id: props.kbId } + params: { + kb_id: props.kbId, + page_size: props.kb?.doc_count || 10000 + } }) if (response.data.status === 'ok') { documents.value = response.data.data.items || []