Feat: Allow chat to use meta data #3221 (#9393)

### What problem does this PR solve?

Feat:  Allow chat to use meta data #3221

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
balibabu
2025-08-12 10:15:10 +08:00
committed by GitHub
parent 9433f64fe2
commit 76118000c1
13 changed files with 240 additions and 31 deletions

View File

@ -8,10 +8,25 @@ import classNames from 'classnames';
import { useCallback } from 'react';
import { ISegmentedContentProps } from '../interface';
import { DatasetMetadata } from '../constants';
import styles from './index.less';
import { MetadataFilterConditions } from './metadata-filter-conditions';
const emptyResponseField = ['prompt_config', 'empty_response'];
const MetadataOptions = Object.values(DatasetMetadata).map((x) => {
let value: DatasetMetadata | boolean = x;
if (x === DatasetMetadata.Disabled) {
value = false;
} else if (x === DatasetMetadata.Automatic) {
value = true;
}
return {
value,
label: x,
};
});
const AssistantSetting = ({
show,
form,
@ -20,6 +35,11 @@ const AssistantSetting = ({
const { t } = useTranslate('chat');
const { data } = useFetchTenantInfo(true);
const metadata = Form.useWatch(['meta_data_filter', 'auto'], form);
const kbIds = Form.useWatch(['kb_ids'], form);
const hasKnowledge = Array.isArray(kbIds) && kbIds.length > 0;
const handleChange = useCallback(() => {
const kbIds = form.getFieldValue('kb_ids');
const emptyResponse = form.getFieldValue(emptyResponseField);
@ -153,6 +173,24 @@ const AssistantSetting = ({
required={false}
onChange={handleChange}
></KnowledgeBaseItem>
{hasKnowledge && (
<Form.Item
label={t('metadata')}
name={['meta_data_filter', 'auto']}
tooltip={t('metadataTip')}
>
<Select options={MetadataOptions} />
</Form.Item>
)}
{hasKnowledge && metadata === DatasetMetadata.Manual && (
<Form.Item
label={t('conditions')}
tooltip={t('ttsTip')}
initialValue={false}
>
<MetadataFilterConditions kbIds={kbIds}></MetadataFilterConditions>
</Form.Item>
)}
</section>
);
};