import { FormLayout } from '@/constants/form'; import { DocumentParserType } from '@/constants/knowledge'; import { useTranslate } from '@/hooks/common-hooks'; import random from 'lodash/random'; import { Plus } from 'lucide-react'; import { useCallback } from 'react'; import { useFormContext, useWatch } from 'react-hook-form'; import { SliderInputFormField } from '../slider-input-form-field'; import { Button } from '../ui/button'; import { FormControl, FormField, FormItem, FormLabel, FormMessage, } from '../ui/form'; import { Input } from '../ui/input'; import { Switch } from '../ui/switch'; import { Textarea } from '../ui/textarea'; export const excludedParseMethods = [ DocumentParserType.Table, DocumentParserType.Resume, DocumentParserType.One, DocumentParserType.Picture, DocumentParserType.KnowledgeGraph, DocumentParserType.Qa, DocumentParserType.Tag, ]; export const showRaptorParseConfiguration = ( parserId: DocumentParserType | undefined, ) => { return !excludedParseMethods.some((x) => x === parserId); }; export const excludedTagParseMethods = [ DocumentParserType.Table, DocumentParserType.KnowledgeGraph, DocumentParserType.Tag, ]; export const showTagItems = (parserId: DocumentParserType) => { return !excludedTagParseMethods.includes(parserId); }; const UseRaptorField = 'parser_config.raptor.use_raptor'; const RandomSeedField = 'parser_config.raptor.random_seed'; const MaxTokenField = 'parser_config.raptor.max_token'; const ThresholdField = 'parser_config.raptor.threshold'; const MaxCluster = 'parser_config.raptor.max_cluster'; const Prompt = 'parser_config.raptor.prompt'; // The three types "table", "resume" and "one" do not display this configuration. const RaptorFormFields = () => { const form = useFormContext(); const { t } = useTranslate('knowledgeConfiguration'); const useRaptor = useWatch({ name: UseRaptorField }); const changeRaptor = useCallback( (isUseRaptor: boolean) => { if (isUseRaptor) { form.setValue(MaxTokenField, 256); form.setValue(ThresholdField, 0.1); form.setValue(MaxCluster, 64); form.setValue(RandomSeedField, 0); form.setValue(Prompt, t('promptText')); } }, [form], ); const handleGenerate = useCallback(() => { form.setValue(RandomSeedField, random(10000)); }, [form]); return ( <> { // if (typeof field.value === 'undefined') { // // default value set // form.setValue('parser_config.raptor.use_raptor', false); // } return (
{t('useRaptor')}
{ changeRaptor(e); field.onChange(e); }} >
); }} /> {useRaptor && (
{ return (
{t('prompt')}