import { FormLayout } from '@/constants/form'; import { useTranslate } from '@/hooks/common-hooks'; import { cn } from '@/lib/utils'; import { Form, Slider } from 'antd'; import { useFormContext } from 'react-hook-form'; import { z } from 'zod'; import { SliderInputFormField } from '../slider-input-form-field'; import { SingleFormSlider } from '../ui/dual-range-slider'; import { FormControl, FormField, FormItem, FormLabel, FormMessage, } from '../ui/form'; import { NumberInput } from '../ui/input'; type FieldType = { similarity_threshold?: number; // vector_similarity_weight?: number; }; interface IProps { isTooltipShown?: boolean; vectorSimilarityWeightName?: string; } const SimilaritySlider = ({ isTooltipShown = false, vectorSimilarityWeightName = 'vector_similarity_weight', }: IProps) => { const { t } = useTranslate('knowledgeDetails'); return ( <> label={t('similarityThreshold')} name={'similarity_threshold'} tooltip={isTooltipShown && t('similarityThresholdTip')} initialValue={0.2} > ); }; export default SimilaritySlider; interface SimilaritySliderFormFieldProps { similarityName?: string; vectorSimilarityWeightName?: string; isTooltipShown?: boolean; numberInputClassName?: string; } export const initialSimilarityThresholdValue = { similarity_threshold: 0.2, }; export const initialKeywordsSimilarityWeightValue = { keywords_similarity_weight: 0.7, }; export const similarityThresholdSchema = { similarity_threshold: z.number() }; export const keywordsSimilarityWeightSchema = { keywords_similarity_weight: z.number(), }; export const vectorSimilarityWeightSchema = { vector_similarity_weight: z.number(), }; export const initialVectorSimilarityWeightValue = { vector_similarity_weight: 0.3, }; export function SimilaritySliderFormField({ similarityName = 'similarity_threshold', vectorSimilarityWeightName = 'vector_similarity_weight', isTooltipShown, numberInputClassName, }: SimilaritySliderFormFieldProps) { const { t } = useTranslate('knowledgeDetails'); const form = useFormContext(); const isVector = vectorSimilarityWeightName.indexOf('vector_similarity_weight') > -1; return ( <> ( {t( isVector ? 'vectorSimilarityWeight' : 'keywordSimilarityWeight', )}
{field.value.toFixed(2)}
{(1 - field.value).toFixed(2)}
)} /> ); }