diff --git a/web/src/interfaces/database/chat.ts b/web/src/interfaces/database/chat.ts
index 021ecaf2a..7c46c02f5 100644
--- a/web/src/interfaces/database/chat.ts
+++ b/web/src/interfaces/database/chat.ts
@@ -6,6 +6,10 @@ export interface PromptConfig {
prologue: string;
system: string;
tts?: boolean;
+ quote: boolean;
+ keyword: boolean;
+ refine_multiturn: boolean;
+ use_kg: boolean;
}
export interface Parameter {
@@ -26,6 +30,7 @@ export interface Variable {
presence_penalty?: number;
temperature?: number;
top_p?: number;
+ llm_id?: string;
}
export interface IDialog {
@@ -50,6 +55,8 @@ export interface IDialog {
update_time: number;
vector_similarity_weight: number;
similarity_threshold: number;
+ top_k: number;
+ top_n: number;
}
export interface IConversation {
diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts
index a2b069b96..df297aaa8 100644
--- a/web/src/locales/en.ts
+++ b/web/src/locales/en.ts
@@ -563,9 +563,16 @@ This auto-tagging feature enhances retrieval by adding another layer of domain-s
crossLanguage: 'Cross-language search',
crossLanguageTip: `Select one or more languages for cross‑language search. If no language is selected, the system searches with the original query.`,
createChat: 'Create chat',
- metadata: 'Metadata',
- metadataTip: 'Metadata',
+ metadata: 'Meta Data',
+ metadataTip:
+ 'Metadata filtering is the process of using metadata attributes (such as tags, categories, or access permissions) to refine and control the retrieval of relevant information within a system.',
conditions: 'Conditions',
+ addCondition: 'Add Condition',
+ meta: {
+ disabled: 'Disabled',
+ automatic: 'Automatic',
+ manual: 'Manual',
+ },
},
setting: {
profile: 'Profile',
diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts
index 6223f248b..031e22496 100644
--- a/web/src/locales/zh.ts
+++ b/web/src/locales/zh.ts
@@ -558,6 +558,16 @@ General:实体和关系提取提示来自 GitHub - microsoft/graphrag:基于
tavilyApiKeyHelp: '如何获取?',
crossLanguage: '跨语言搜索',
crossLanguageTip: `选择一种或多种语言进行跨语言搜索。如果未选择任何语言,系统将使用原始查询进行搜索。`,
+ metadata: '元数据',
+ metadataTip:
+ '元数据过滤是使用元数据属性(例如标签、类别或访问权限)来优化和控制系统内相关信息检索的过程。',
+ conditions: '条件',
+ addCondition: '增加条件',
+ meta: {
+ disabled: '禁用',
+ automatic: '自动',
+ manual: '手动',
+ },
},
setting: {
profile: '概要',
diff --git a/web/src/pages/agent/form/switch-form/index.tsx b/web/src/pages/agent/form/switch-form/index.tsx
index a37b2b8f8..00a156600 100644
--- a/web/src/pages/agent/form/switch-form/index.tsx
+++ b/web/src/pages/agent/form/switch-form/index.tsx
@@ -59,7 +59,7 @@ export const LogicalOperatorIcon = function OperatorIcon({
return icon;
};
-function useBuildSwitchOperatorOptions() {
+export function useBuildSwitchOperatorOptions() {
const { t } = useTranslation();
const switchOperatorOptions = useMemo(() => {
diff --git a/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx b/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx
index 776dfa2c7..500f2359e 100644
--- a/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx
+++ b/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx
@@ -14,19 +14,6 @@ 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,
@@ -35,7 +22,14 @@ const AssistantSetting = ({
const { t } = useTranslate('chat');
const { data } = useFetchTenantInfo(true);
- const metadata = Form.useWatch(['meta_data_filter', 'auto'], form);
+ const MetadataOptions = Object.values(DatasetMetadata).map((x) => {
+ return {
+ value: x,
+ label: t(`meta.${x}`),
+ };
+ });
+
+ const metadata = Form.useWatch(['meta_data_filter', 'method'], form);
const kbIds = Form.useWatch(['kb_ids'], form);
const hasKnowledge = Array.isArray(kbIds) && kbIds.length > 0;
@@ -176,8 +170,9 @@ const AssistantSetting = ({
{hasKnowledge && (
diff --git a/web/src/pages/chat/chat-configuration-modal/metadata-filter-conditions.tsx b/web/src/pages/chat/chat-configuration-modal/metadata-filter-conditions.tsx
index 5cc1ac562..c34b8b8b9 100644
--- a/web/src/pages/chat/chat-configuration-modal/metadata-filter-conditions.tsx
+++ b/web/src/pages/chat/chat-configuration-modal/metadata-filter-conditions.tsx
@@ -1,5 +1,6 @@
import { useFetchKnowledgeMetadata } from '@/hooks/use-knowledge-request';
import { SwitchOperatorOptions } from '@/pages/agent/constant';
+import { useBuildSwitchOperatorOptions } from '@/pages/agent/form/switch-form';
import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';
import {
Button,
@@ -12,9 +13,12 @@ import {
Space,
} from 'antd';
import { useCallback } from 'react';
+import { useTranslation } from 'react-i18next';
export function MetadataFilterConditions({ kbIds }: { kbIds: string[] }) {
const metadata = useFetchKnowledgeMetadata(kbIds);
+ const { t } = useTranslation();
+ const switchOperatorOptions = useBuildSwitchOperatorOptions();
const renderItems = useCallback(
(add: FormListOperation['add']) => {
@@ -50,22 +54,22 @@ export function MetadataFilterConditions({ kbIds }: { kbIds: string[] }) {
-
+
-
+
remove(name)} />
@@ -73,7 +77,7 @@ export function MetadataFilterConditions({ kbIds }: { kbIds: string[] }) {
}>
- Add Condition
+ {t('chat.addCondition')}
diff --git a/web/src/pages/next-chats/chat/app-settings/chat-basic-settings.tsx b/web/src/pages/next-chats/chat/app-settings/chat-basic-settings.tsx
index afc2f1d80..a67217ed9 100644
--- a/web/src/pages/next-chats/chat/app-settings/chat-basic-settings.tsx
+++ b/web/src/pages/next-chats/chat/app-settings/chat-basic-settings.tsx
@@ -11,108 +11,101 @@ import {
FormMessage,
} from '@/components/ui/form';
import { Input } from '@/components/ui/input';
+import { Textarea } from '@/components/ui/textarea';
import { useTranslate } from '@/hooks/common-hooks';
import { useFormContext } from 'react-hook-form';
-import { Subhead } from './subhead';
export default function ChatBasicSetting() {
const { t } = useTranslate('chat');
const form = useFormContext();
return (
-
- Basic settings
-
);
}
diff --git a/web/src/pages/next-chats/chat/app-settings/chat-model-settings.tsx b/web/src/pages/next-chats/chat/app-settings/chat-model-settings.tsx
index 92c79c122..c8d54d03a 100644
--- a/web/src/pages/next-chats/chat/app-settings/chat-model-settings.tsx
+++ b/web/src/pages/next-chats/chat/app-settings/chat-model-settings.tsx
@@ -9,35 +9,31 @@ import {
import { Textarea } from '@/components/ui/textarea';
import { useTranslate } from '@/hooks/common-hooks';
import { useFormContext } from 'react-hook-form';
-import { Subhead } from './subhead';
export function ChatModelSettings() {
const { t } = useTranslate('chat');
const form = useFormContext();
return (
-
- Model Setting
-
- (
-
- {t('system')}
-
-
-
-
-
- )}
- />
-
-
-
+
+ (
+
+ {t('system')}
+
+
+
+
+
+ )}
+ />
+
+
);
}
diff --git a/web/src/pages/next-chats/chat/app-settings/chat-prompt-engine.tsx b/web/src/pages/next-chats/chat/app-settings/chat-prompt-engine.tsx
index c2ced5fdd..ec7ed8235 100644
--- a/web/src/pages/next-chats/chat/app-settings/chat-prompt-engine.tsx
+++ b/web/src/pages/next-chats/chat/app-settings/chat-prompt-engine.tsx
@@ -15,42 +15,38 @@ import { Textarea } from '@/components/ui/textarea';
import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-item';
import { useTranslate } from '@/hooks/common-hooks';
import { useFormContext } from 'react-hook-form';
-import { Subhead } from './subhead';
export function ChatPromptEngine() {
const { t } = useTranslate('chat');
const form = useFormContext();
return (
-
- Prompt engine
-
- (
-
- {t('system')}
-
-
-
-
-
- )}
- />
-
-
-
-
-
-
-
+
+ (
+
+ {t('system')}
+
+
+
+
+
+ )}
+ />
+
+
+
+
+
+
);
}
diff --git a/web/src/pages/next-chats/chat/app-settings/chat-settings-sheet.tsx b/web/src/pages/next-chats/chat/app-settings/chat-settings-sheet.tsx
deleted file mode 100644
index e5343e75a..000000000
--- a/web/src/pages/next-chats/chat/app-settings/chat-settings-sheet.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import {
- Sheet,
- SheetContent,
- SheetHeader,
- SheetTitle,
- SheetTrigger,
-} from '@/components/ui/sheet';
-import { PropsWithChildren } from 'react';
-import { ChatSettings } from './chat-settings';
-
-export function ChatSettingSheet({ children }: PropsWithChildren) {
- return (
-
- {children}
-
-
- Chat Settings
-
-
-
-
- );
-}
diff --git a/web/src/pages/next-chats/chat/app-settings/chat-settings.tsx b/web/src/pages/next-chats/chat/app-settings/chat-settings.tsx
index b824ed0d4..d2a86cf96 100644
--- a/web/src/pages/next-chats/chat/app-settings/chat-settings.tsx
+++ b/web/src/pages/next-chats/chat/app-settings/chat-settings.tsx
@@ -1,6 +1,10 @@
import { Button } from '@/components/ui/button';
+import { Separator } from '@/components/ui/separator';
+import { useFetchDialog } from '@/hooks/use-chat-request';
+import { transformBase64ToFile } from '@/utils/file-util';
import { zodResolver } from '@hookform/resolvers/zod';
import { PanelRightClose } from 'lucide-react';
+import { useEffect } from 'react';
import { FormProvider, useForm } from 'react-hook-form';
import { z } from 'zod';
import ChatBasicSetting from './chat-basic-settings';
@@ -11,6 +15,7 @@ import { useChatSettingSchema } from './use-chat-setting-schema';
type ChatSettingsProps = { switchSettingVisible(): void };
export function ChatSettings({ switchSettingVisible }: ChatSettingsProps) {
const formSchema = useChatSettingSchema();
+ const { data } = useFetchDialog();
const form = useForm>({
resolver: zodResolver(formSchema),
@@ -34,6 +39,14 @@ export function ChatSettings({ switchSettingVisible }: ChatSettingsProps) {
console.log(values);
}
+ useEffect(() => {
+ const nextData = {
+ ...data,
+ icon: data.icon ? [transformBase64ToFile(data.icon)] : [],
+ };
+ form.reset(nextData as z.infer);
+ }, [data, form]);
+
return (
@@ -49,7 +62,9 @@ export function ChatSettings({ switchSettingVisible }: ChatSettingsProps) {
className="space-y-6 overflow-auto max-h-[87vh] pr-4"
>
+
+
diff --git a/web/src/pages/next-chats/chat/app-settings/subhead.tsx b/web/src/pages/next-chats/chat/app-settings/subhead.tsx
deleted file mode 100644
index 23cd42453..000000000
--- a/web/src/pages/next-chats/chat/app-settings/subhead.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { PropsWithChildren } from 'react';
-
-export function Subhead({ children }: PropsWithChildren) {
- return (
-
- {children}
-
- );
-}
diff --git a/web/src/pages/next-chats/chat/app-settings/use-chat-setting-schema.tsx b/web/src/pages/next-chats/chat/app-settings/use-chat-setting-schema.tsx
index 199d75830..f53615514 100644
--- a/web/src/pages/next-chats/chat/app-settings/use-chat-setting-schema.tsx
+++ b/web/src/pages/next-chats/chat/app-settings/use-chat-setting-schema.tsx
@@ -1,3 +1,4 @@
+import { LlmSettingSchema } from '@/components/llm-setting-items/next';
import { useTranslate } from '@/hooks/common-hooks';
import { z } from 'zod';
@@ -31,6 +32,7 @@ export function useChatSettingSchema() {
top_n: z.number(),
vector_similarity_weight: z.number(),
top_k: z.number(),
+ llm_setting: z.object(LlmSettingSchema),
});
return formSchema;
diff --git a/web/src/pages/next-chats/chat/sessions.tsx b/web/src/pages/next-chats/chat/sessions.tsx
index 3f4d7aa08..6bc59f412 100644
--- a/web/src/pages/next-chats/chat/sessions.tsx
+++ b/web/src/pages/next-chats/chat/sessions.tsx
@@ -2,6 +2,7 @@ import { MoreButton } from '@/components/more-button';
import { RAGFlowAvatar } from '@/components/ragflow-avatar';
import { Button } from '@/components/ui/button';
import { Card, CardContent } from '@/components/ui/card';
+import { SearchInput } from '@/components/ui/input';
import { useSetModalState } from '@/hooks/common-hooks';
import {
useFetchDialog,
@@ -9,7 +10,7 @@ import {
} from '@/hooks/use-chat-request';
import { cn } from '@/lib/utils';
import { PanelLeftClose, PanelRightClose, Plus } from 'lucide-react';
-import { useCallback } from 'react';
+import { useCallback, useState } from 'react';
import { useHandleClickConversationCard } from '../hooks/use-click-card';
import { useSelectDerivedConversationList } from '../hooks/use-select-conversation-list';
@@ -25,6 +26,7 @@ export function Sessions({
useSelectDerivedConversationList();
const { data } = useFetchDialog();
const { visible, switchVisible } = useSetModalState(true);
+ const [searchStr, setSearchStr] = useState('');
const handleCardClick = useCallback(
(conversationId: string, isNew: boolean) => () => {
@@ -61,11 +63,17 @@ export function Sessions({
/>
-
Conversations
+
Conversations
+
+ setSearchStr(e.target.value)}
+ value={searchStr}
+ >
+
{conversationList.map((x) => (