diff --git a/web/src/components/cross-language-form-field.tsx b/web/src/components/cross-language-form-field.tsx new file mode 100644 index 000000000..120326190 --- /dev/null +++ b/web/src/components/cross-language-form-field.tsx @@ -0,0 +1,67 @@ +import { + FormControl, + FormField, + FormItem, + FormLabel, +} from '@/components/ui/form'; +import { MultiSelect } from '@/components/ui/multi-select'; +import { cn } from '@/lib/utils'; +import { useFormContext } from 'react-hook-form'; +import { useTranslation } from 'react-i18next'; + +const Languages = [ + 'English', + 'Chinese', + 'Spanish', + 'French', + 'German', + 'Japanese', + 'Korean', + 'Vietnamese', +]; + +const options = Languages.map((x) => ({ label: x, value: x })); + +type CrossLanguageItemProps = { + name?: string; + vertical?: boolean; +}; + +export const CrossLanguageFormField = ({ + name = 'prompt_config.cross_languages', + vertical = true, +}: CrossLanguageItemProps) => { + const { t } = useTranslation(); + const form = useFormContext(); + + return ( + ( + + + {t('chat.crossLanguage')} + + + + + + )} + /> + ); +}; diff --git a/web/src/components/cross-language-item-ui.tsx b/web/src/components/cross-language-item-ui.tsx deleted file mode 100644 index 1801c097e..000000000 --- a/web/src/components/cross-language-item-ui.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { FormLabel } from '@/components/ui/form'; -import { MultiSelect } from '@/components/ui/multi-select'; -import { useTranslation } from 'react-i18next'; - -const Languages = [ - 'English', - 'Chinese', - 'Spanish', - 'French', - 'German', - 'Japanese', - 'Korean', - 'Vietnamese', -]; - -const options = Languages.map((x) => ({ label: x, value: x })); - -type CrossLanguageItemProps = { - name?: string | Array; - onChange: (arg: string[]) => void; -}; - -export const CrossLanguageItem = ({ - name = ['prompt_config', 'cross_languages'], - onChange = () => {}, -}: CrossLanguageItemProps) => { - const { t } = useTranslation(); - - return ( -
-
- - {t('chat.crossLanguage')} - -
- { - onChange(val); - }} - // defaultValue={field.value} - placeholder={t('fileManager.pleaseSelect')} - maxCount={100} - // {...field} - modalPopover - /> -
- ); -}; diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index f32957879..882dc6cb5 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -1298,6 +1298,10 @@ This delimiter is used to split the input text into several text pieces echo of stringTransform: 'String transform', userFillUp: 'Input', codeExec: 'Code', + tavilySearch: 'Tavily Search', + tavilySearchDescription: 'Search results via Tavily service.', + tavilyExtract: 'Tavily Extract', + tavilyExtractDescription: 'Tavily Extract', }, llmTools: { bad_calculator: { diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index e5403cea5..b37e6e2c3 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -1251,6 +1251,10 @@ General:实体和关系提取提示来自 GitHub - microsoft/graphrag:基于 stringTransform: '文本处理', userFillUp: '等待输入', codeExec: '代码', + tavilySearch: 'Tavily Search', + tavilySearchDescription: '通过 Tavily 服务搜索结果', + tavilyExtract: 'Tavily Extract', + tavilyExtractDescription: 'Tavily Extract', }, footer: { profile: 'All rights reserved @ React', diff --git a/web/src/pages/agent/constant.tsx b/web/src/pages/agent/constant.tsx index 390ea9d7b..520a064ec 100644 --- a/web/src/pages/agent/constant.tsx +++ b/web/src/pages/agent/constant.tsx @@ -265,6 +265,8 @@ export const initialRetrievalValues = { empty_response: '', ...initialSimilarityThresholdValue, ...initialKeywordsSimilarityWeightValue, + use_kg: false, + cross_languages: [], outputs: { formalized_content: { type: 'string', diff --git a/web/src/pages/agent/form/retrieval-form/next.tsx b/web/src/pages/agent/form/retrieval-form/next.tsx index ac5ba4f35..cbd216430 100644 --- a/web/src/pages/agent/form/retrieval-form/next.tsx +++ b/web/src/pages/agent/form/retrieval-form/next.tsx @@ -1,3 +1,4 @@ +import { CrossLanguageFormField } from '@/components/cross-language-form-field'; import { FormContainer } from '@/components/form-container'; import { KnowledgeBaseFormField } from '@/components/knowledge-base-item'; import { RerankFormFields } from '@/components/rerank'; @@ -12,6 +13,7 @@ import { FormMessage, } from '@/components/ui/form'; import { Textarea } from '@/components/ui/textarea'; +import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-item'; import { zodResolver } from '@hookform/resolvers/zod'; import { memo, useMemo } from 'react'; import { useForm, useFormContext } from 'react-hook-form'; @@ -32,6 +34,8 @@ export const RetrievalPartialSchema = { kb_ids: z.array(z.string()), rerank_id: z.string(), empty_response: z.string(), + cross_languages: z.array(z.string()), + use_kg: z.boolean(), }; export const FormSchema = z.object({ @@ -106,6 +110,8 @@ function RetrievalForm({ node }: INextOperatorForm) { + + diff --git a/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx b/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx index bf2fcfe70..fce2991d7 100644 --- a/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx +++ b/web/src/pages/agent/form/tool-form/retrieval-form/index.tsx @@ -1,9 +1,11 @@ +import { CrossLanguageFormField } from '@/components/cross-language-form-field'; import { FormContainer } from '@/components/form-container'; import { KnowledgeBaseFormField } from '@/components/knowledge-base-item'; import { RerankFormFields } from '@/components/rerank'; import { SimilaritySliderFormField } from '@/components/similarity-slider'; import { TopNFormField } from '@/components/top-n-item'; import { Form } from '@/components/ui/form'; +import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-item'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; @@ -50,6 +52,8 @@ const RetrievalForm = () => { + + diff --git a/web/src/pages/dataset/testing/testing-form.tsx b/web/src/pages/dataset/testing/testing-form.tsx index eb24edcf6..0bb68c6c8 100644 --- a/web/src/pages/dataset/testing/testing-form.tsx +++ b/web/src/pages/dataset/testing/testing-form.tsx @@ -4,7 +4,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { useForm, useWatch } from 'react-hook-form'; import { z } from 'zod'; -import { CrossLanguageItem } from '@/components/cross-language-item-ui'; +import { CrossLanguageFormField } from '@/components/cross-language-form-field'; import { FormContainer } from '@/components/form-container'; import { initialTopKValue, @@ -32,7 +32,7 @@ import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-ite import { useTestRetrieval } from '@/hooks/use-knowledge-request'; import { trim } from 'lodash'; import { CirclePlay } from 'lucide-react'; -import { useEffect, useState } from 'react'; +import { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; type TestingFormProps = Pick< @@ -46,7 +46,6 @@ export default function TestingForm({ setValues, }: TestingFormProps) { const { t } = useTranslation(); - const [cross_languages, setCrossLangArr] = useState([]); const formSchema = z.object({ question: z.string().min(1, { @@ -71,9 +70,8 @@ export default function TestingForm({ const values = useWatch({ control: form.control }); useEffect(() => { - // setValues(values as Required>); - setValues({ ...values, cross_languages }); - }, [setValues, values, cross_languages]); + setValues(values as Required>); + }, [setValues, values]); function onSubmit() { refetch(); @@ -89,12 +87,9 @@ export default function TestingForm({ > - { - setCrossLangArr(valArr); - }} - > + >