'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm, useWatch } from 'react-hook-form'; import { z } from 'zod'; import { CrossLanguageFormField } from '@/components/cross-language-form-field'; import { FormContainer } from '@/components/form-container'; import { initialTopKValue, RerankFormFields, topKSchema, } from '@/components/rerank'; import { initialKeywordsSimilarityWeightValue, initialSimilarityThresholdValue, keywordsSimilarityWeightSchema, SimilaritySliderFormField, similarityThresholdSchema, } from '@/components/similarity-slider'; import { ButtonLoading } from '@/components/ui/button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form'; import { Textarea } from '@/components/ui/textarea'; import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-item'; import { useTestRetrieval } from '@/hooks/use-knowledge-request'; import { trim } from 'lodash'; import { CirclePlay } from 'lucide-react'; import { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; type TestingFormProps = Pick< ReturnType, 'loading' | 'refetch' | 'setValues' >; export default function TestingForm({ loading, refetch, setValues, }: TestingFormProps) { const { t } = useTranslation(); const formSchema = z.object({ question: z.string().min(1, { message: t('knowledgeDetails.testTextPlaceholder'), }), ...similarityThresholdSchema, ...keywordsSimilarityWeightSchema, ...topKSchema, }); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { ...initialSimilarityThresholdValue, ...initialKeywordsSimilarityWeightValue, ...initialTopKValue, }, }); const question = form.watch('question'); const values = useWatch({ control: form.control }); useEffect(() => { setValues(values as Required>); }, [setValues, values]); function onSubmit() { refetch(); } return (
( {t('knowledgeDetails.testText')} )} />
{!loading && } {t('knowledgeDetails.testingLabel')}
); }