mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-20 12:56:55 +08:00
Fix: Fixed the issue of empty memory parameters (#11988)
### What problem does this PR solve? Fix: Fixed the issue of empty memory parameters ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
@ -3,7 +3,6 @@
|
|||||||
import message from '@/components/ui/message';
|
import message from '@/components/ui/message';
|
||||||
import { useSetModalState } from '@/hooks/common-hooks';
|
import { useSetModalState } from '@/hooks/common-hooks';
|
||||||
import { useHandleSearchChange } from '@/hooks/logic-hooks';
|
import { useHandleSearchChange } from '@/hooks/logic-hooks';
|
||||||
import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks';
|
|
||||||
import memoryService, { updateMemoryById } from '@/services/memory-service';
|
import memoryService, { updateMemoryById } from '@/services/memory-service';
|
||||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
||||||
import { useDebounce } from 'ahooks';
|
import { useDebounce } from 'ahooks';
|
||||||
@ -25,35 +24,21 @@ import {
|
|||||||
export const useCreateMemory = () => {
|
export const useCreateMemory = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const {
|
const createMemory = useCallback(
|
||||||
data,
|
async (props: ICreateMemoryProps): Promise<CreateMemoryResponse> => {
|
||||||
isError,
|
|
||||||
mutateAsync: createMemoryMutation,
|
|
||||||
} = useMutation<CreateMemoryResponse, Error, ICreateMemoryProps>({
|
|
||||||
mutationKey: ['createMemory'],
|
|
||||||
mutationFn: async (props) => {
|
|
||||||
const { data: response } = await memoryService.createMemory(props);
|
const { data: response } = await memoryService.createMemory(props);
|
||||||
if (response.code !== 0) {
|
if (response.code !== 0) {
|
||||||
throw new Error(response.message || 'Failed to create memory');
|
throw new Error(response.message || 'Failed to create memory');
|
||||||
}
|
}
|
||||||
|
if (response.code === 0) {
|
||||||
|
message.success(t('message.created'));
|
||||||
|
}
|
||||||
return response.data;
|
return response.data;
|
||||||
},
|
},
|
||||||
onSuccess: () => {
|
[t],
|
||||||
message.success(t('message.created'));
|
|
||||||
},
|
|
||||||
onError: (error) => {
|
|
||||||
message.error(t('message.error', { error: error.message }));
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const createMemory = useCallback(
|
|
||||||
(props: ICreateMemoryProps) => {
|
|
||||||
return createMemoryMutation(props);
|
|
||||||
},
|
|
||||||
[createMemoryMutation],
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return { data, isError, createMemory };
|
return { createMemory };
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useFetchMemoryList = () => {
|
export const useFetchMemoryList = () => {
|
||||||
@ -223,7 +208,6 @@ export const useUpdateMemory = () => {
|
|||||||
|
|
||||||
export const useRenameMemory = () => {
|
export const useRenameMemory = () => {
|
||||||
const [memory, setMemory] = useState<IMemory>({} as IMemory);
|
const [memory, setMemory] = useState<IMemory>({} as IMemory);
|
||||||
const { navigateToMemory } = useNavigatePage();
|
|
||||||
const {
|
const {
|
||||||
visible: openCreateModal,
|
visible: openCreateModal,
|
||||||
hideModal: hideChatRenameModal,
|
hideModal: hideChatRenameModal,
|
||||||
@ -250,19 +234,11 @@ export const useRenameMemory = () => {
|
|||||||
|
|
||||||
const onMemoryRenameOk = useCallback(
|
const onMemoryRenameOk = useCallback(
|
||||||
async (data: ICreateMemoryProps, callBack?: () => void) => {
|
async (data: ICreateMemoryProps, callBack?: () => void) => {
|
||||||
let res;
|
// let res;
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
if (memory?.id) {
|
if (memory?.id) {
|
||||||
try {
|
try {
|
||||||
// const reponse = await memoryService.getMemoryDetail({
|
await updateMemory({
|
||||||
// id: memory?.id,
|
|
||||||
// });
|
|
||||||
// const detail = reponse.data?.data;
|
|
||||||
// console.log('detail-->', detail);
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
// const { id, created_by, update_time, ...memoryDataTemp } = detail;
|
|
||||||
res = await updateMemory({
|
|
||||||
// ...memoryDataTemp,
|
// ...memoryDataTemp,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
id: memory?.id,
|
id: memory?.id,
|
||||||
@ -271,7 +247,7 @@ export const useRenameMemory = () => {
|
|||||||
console.error('error', e);
|
console.error('error', e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
res = await createMemory(data);
|
await createMemory(data);
|
||||||
}
|
}
|
||||||
// if (res && !memory?.id) {
|
// if (res && !memory?.id) {
|
||||||
// navigateToMemory(res?.id)();
|
// navigateToMemory(res?.id)();
|
||||||
@ -280,7 +256,7 @@ export const useRenameMemory = () => {
|
|||||||
setLoading(false);
|
setLoading(false);
|
||||||
handleHideModal();
|
handleHideModal();
|
||||||
},
|
},
|
||||||
[memory, createMemory, handleHideModal, navigateToMemory, updateMemory],
|
[memory, createMemory, handleHideModal, updateMemory],
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
memoryRenameLoading: loading,
|
memoryRenameLoading: loading,
|
||||||
|
|||||||
@ -10,17 +10,17 @@ import { useState } from 'react';
|
|||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
export const advancedSettingsFormSchema = {
|
export const advancedSettingsFormSchema = {
|
||||||
permission: z.string().optional(),
|
permissions: z.string().optional(),
|
||||||
storage_type: z.enum(['table', 'graph']).optional(),
|
storage_type: z.enum(['table', 'graph']).optional(),
|
||||||
forget_policy: z.enum(['lru', 'fifo']).optional(),
|
forgetting_policy: z.enum(['lru', 'fifo']).optional(),
|
||||||
temperature: z.number().optional(),
|
temperature: z.number().optional(),
|
||||||
system_prompt: z.string().optional(),
|
system_prompt: z.string().optional(),
|
||||||
user_prompt: z.string().optional(),
|
user_prompt: z.string().optional(),
|
||||||
};
|
};
|
||||||
export const defaultAdvancedSettingsForm = {
|
export const defaultAdvancedSettingsForm = {
|
||||||
permission: 'me',
|
permissions: 'me',
|
||||||
storage_type: 'table',
|
storage_type: 'table',
|
||||||
forget_policy: 'fifo',
|
forgetting_policy: 'fifo',
|
||||||
temperature: 0.7,
|
temperature: 0.7,
|
||||||
system_prompt: '',
|
system_prompt: '',
|
||||||
user_prompt: '',
|
user_prompt: '',
|
||||||
@ -40,120 +40,120 @@ export const AdvancedSettingsForm = () => {
|
|||||||
)}
|
)}
|
||||||
{t('memory.config.advancedSettings')}
|
{t('memory.config.advancedSettings')}
|
||||||
</div>
|
</div>
|
||||||
{/* {showAdvancedSettings && ( */}
|
{showAdvancedSettings && (
|
||||||
<>
|
<>
|
||||||
<RenderField
|
<RenderField
|
||||||
field={{
|
field={{
|
||||||
name: 'permission',
|
name: 'permissions',
|
||||||
label: t('memory.config.permission'),
|
label: t('memory.config.permission'),
|
||||||
required: false,
|
required: false,
|
||||||
horizontal: true,
|
horizontal: true,
|
||||||
// hideLabel: true,
|
// hideLabel: true,
|
||||||
type: FormFieldType.Custom,
|
type: FormFieldType.Custom,
|
||||||
render: (field) => (
|
render: (field) => (
|
||||||
<RadioGroup
|
<RadioGroup
|
||||||
defaultValue="me"
|
defaultValue="me"
|
||||||
className="flex"
|
className="flex"
|
||||||
{...field}
|
|
||||||
onValueChange={(value) => {
|
|
||||||
console.log(value);
|
|
||||||
field.onChange(value);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div className="flex items-center gap-3">
|
|
||||||
<RadioGroupItem value="me" id="r1" />
|
|
||||||
<Label htmlFor="r1">{t('memory.config.onlyMe')}</Label>
|
|
||||||
</div>
|
|
||||||
<div className="flex items-center gap-3">
|
|
||||||
<RadioGroupItem value="team" id="r2" />
|
|
||||||
<Label htmlFor="r2">{t('memory.config.team')}</Label>
|
|
||||||
</div>
|
|
||||||
</RadioGroup>
|
|
||||||
),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<RenderField
|
|
||||||
field={{
|
|
||||||
name: 'storage_type',
|
|
||||||
label: t('memory.config.storageType'),
|
|
||||||
type: FormFieldType.Select,
|
|
||||||
horizontal: true,
|
|
||||||
placeholder: t('memory.config.storageTypePlaceholder'),
|
|
||||||
options: [
|
|
||||||
{ label: 'table', value: 'table' },
|
|
||||||
// { label: 'graph', value: 'graph' },
|
|
||||||
],
|
|
||||||
required: false,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<RenderField
|
|
||||||
field={{
|
|
||||||
name: 'forget_policy',
|
|
||||||
label: t('memory.config.forgetPolicy'),
|
|
||||||
type: FormFieldType.Select,
|
|
||||||
horizontal: true,
|
|
||||||
// placeholder: t('memory.config.storageTypePlaceholder'),
|
|
||||||
options: [
|
|
||||||
// { label: 'lru', value: 'lru' },
|
|
||||||
{ label: 'fifo', value: 'fifo' },
|
|
||||||
],
|
|
||||||
required: false,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<RenderField
|
|
||||||
field={{
|
|
||||||
name: 'temperature',
|
|
||||||
label: t('memory.config.temperature'),
|
|
||||||
type: FormFieldType.Custom,
|
|
||||||
horizontal: true,
|
|
||||||
required: false,
|
|
||||||
render: (field) => (
|
|
||||||
<div className="flex gap-2 items-center">
|
|
||||||
<SingleFormSlider
|
|
||||||
{...field}
|
{...field}
|
||||||
onChange={(value: number) => {
|
onValueChange={(value) => {
|
||||||
|
console.log(value);
|
||||||
field.onChange(value);
|
field.onChange(value);
|
||||||
}}
|
}}
|
||||||
max={1}
|
>
|
||||||
step={0.01}
|
<div className="flex items-center gap-3">
|
||||||
min={0}
|
<RadioGroupItem value="me" id="r1" />
|
||||||
disabled={false}
|
<Label htmlFor="r1">{t('memory.config.onlyMe')}</Label>
|
||||||
></SingleFormSlider>
|
</div>
|
||||||
<NumberInput
|
<div className="flex items-center gap-3">
|
||||||
className={cn(
|
<RadioGroupItem value="team" id="r2" />
|
||||||
'h-6 w-10 p-1 border border-border-button rounded-sm',
|
<Label htmlFor="r2">{t('memory.config.team')}</Label>
|
||||||
)}
|
</div>
|
||||||
max={1}
|
</RadioGroup>
|
||||||
step={0.01}
|
),
|
||||||
min={0}
|
}}
|
||||||
{...field}
|
/>
|
||||||
></NumberInput>
|
<RenderField
|
||||||
</div>
|
field={{
|
||||||
),
|
name: 'storage_type',
|
||||||
}}
|
label: t('memory.config.storageType'),
|
||||||
/>
|
type: FormFieldType.Select,
|
||||||
<RenderField
|
horizontal: true,
|
||||||
field={{
|
placeholder: t('memory.config.storageTypePlaceholder'),
|
||||||
name: 'system_prompt',
|
options: [
|
||||||
label: t('memory.config.systemPrompt'),
|
{ label: 'table', value: 'table' },
|
||||||
type: FormFieldType.Textarea,
|
// { label: 'graph', value: 'graph' },
|
||||||
horizontal: true,
|
],
|
||||||
placeholder: t('memory.config.systemPromptPlaceholder'),
|
required: false,
|
||||||
required: false,
|
}}
|
||||||
}}
|
/>
|
||||||
/>
|
<RenderField
|
||||||
<RenderField
|
field={{
|
||||||
field={{
|
name: 'forgetting_policy',
|
||||||
name: 'user_prompt',
|
label: t('memory.config.forgetPolicy'),
|
||||||
label: t('memory.config.userPrompt'),
|
type: FormFieldType.Select,
|
||||||
type: FormFieldType.Text,
|
horizontal: true,
|
||||||
horizontal: true,
|
// placeholder: t('memory.config.storageTypePlaceholder'),
|
||||||
placeholder: t('memory.config.userPromptPlaceholder'),
|
options: [
|
||||||
required: false,
|
// { label: 'lru', value: 'lru' },
|
||||||
}}
|
{ label: 'fifo', value: 'fifo' },
|
||||||
/>
|
],
|
||||||
</>
|
required: false,
|
||||||
{/* )} */}
|
}}
|
||||||
|
/>
|
||||||
|
<RenderField
|
||||||
|
field={{
|
||||||
|
name: 'temperature',
|
||||||
|
label: t('memory.config.temperature'),
|
||||||
|
type: FormFieldType.Custom,
|
||||||
|
horizontal: true,
|
||||||
|
required: false,
|
||||||
|
render: (field) => (
|
||||||
|
<div className="flex gap-2 items-center">
|
||||||
|
<SingleFormSlider
|
||||||
|
{...field}
|
||||||
|
onChange={(value: number) => {
|
||||||
|
field.onChange(value);
|
||||||
|
}}
|
||||||
|
max={1}
|
||||||
|
step={0.01}
|
||||||
|
min={0}
|
||||||
|
disabled={false}
|
||||||
|
></SingleFormSlider>
|
||||||
|
<NumberInput
|
||||||
|
className={cn(
|
||||||
|
'h-6 w-10 p-1 border border-border-button rounded-sm',
|
||||||
|
)}
|
||||||
|
max={1}
|
||||||
|
step={0.01}
|
||||||
|
min={0}
|
||||||
|
{...field}
|
||||||
|
></NumberInput>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<RenderField
|
||||||
|
field={{
|
||||||
|
name: 'system_prompt',
|
||||||
|
label: t('memory.config.systemPrompt'),
|
||||||
|
type: FormFieldType.Textarea,
|
||||||
|
horizontal: true,
|
||||||
|
placeholder: t('memory.config.systemPromptPlaceholder'),
|
||||||
|
required: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<RenderField
|
||||||
|
field={{
|
||||||
|
name: 'user_prompt',
|
||||||
|
label: t('memory.config.userPrompt'),
|
||||||
|
type: FormFieldType.Text,
|
||||||
|
horizontal: true,
|
||||||
|
placeholder: t('memory.config.userPromptPlaceholder'),
|
||||||
|
required: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -58,6 +58,7 @@ export default function MemoryMessage() {
|
|||||||
system_prompt: data?.system_prompt || '',
|
system_prompt: data?.system_prompt || '',
|
||||||
user_prompt: data?.user_prompt || '',
|
user_prompt: data?.user_prompt || '',
|
||||||
forgetting_policy: data?.forgetting_policy || 'fifo',
|
forgetting_policy: data?.forgetting_policy || 'fifo',
|
||||||
|
storage_type: data?.storage_type || 'table',
|
||||||
permissions: data?.permissions || 'me',
|
permissions: data?.permissions || 'me',
|
||||||
});
|
});
|
||||||
}, [data, form]);
|
}, [data, form]);
|
||||||
|
|||||||
Reference in New Issue
Block a user