Fix: Remove the model from the wiki template. (#18119)

This commit is contained in:
balibabu
2026-08-11 20:29:08 +08:00
committed by GitHub
parent 1d81ca27cc
commit ec63ab37b1
7 changed files with 9 additions and 80 deletions

View File

@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { ModelTreeSelectFormField } from '@/components/model-tree-select';
import { SelectWithSearch } from '@/components/originui/select-with-search';
import { RAGFlowFormItem } from '@/components/ragflow-form';
import { SwitchFormField } from '@/components/switch-fom-field';
@@ -176,12 +175,6 @@ export function TemplateConfiguration({
/>
</RAGFlowFormItem>
<ModelTreeSelectFormField
name={`templates.${selectedTemplateIndex}.llm_id`}
label={t('setting.llmForExtraction')}
required
/>
<RAGFlowFormItem
name={`templates.${selectedTemplateIndex}.kind`}
label={t('knowledgeCompilation.builtinTemplates')}

View File

@@ -28,11 +28,9 @@ export const DefaultTemplateValues: TemplateSchemaType = {
id: undefined,
name: '',
description: '',
llm_id: '',
kind: '',
config: {
kind: '',
llm_id: '',
global_rules: '',
example: '',
instruction: '',

View File

@@ -15,14 +15,11 @@
*/
import { zodResolver } from '@hookform/resolvers/zod';
import { useEffect, useMemo } from 'react';
import { useEffect } from 'react';
import { useForm } from 'react-hook-form';
import { useTranslation } from 'react-i18next';
import { ModelTypeMap } from '@/components/model-tree-select';
import { useFetchAllAddedModels } from '@/hooks/use-llm-request';
import { ICompilationTemplateGroup } from '@/interfaces/database/compilation-template';
import { buildValidModelIds } from '@/utils/llm-util';
import { buildFormSchema, FormSchemaType } from '../schema';
import { DefaultValues } from '../constant';
@@ -30,40 +27,15 @@ import { transformGroupDetailToForm } from '../utils';
type UseCompilationTemplateGroupFormOptions = {
detail?: ICompilationTemplateGroup;
defaultLlmId?: string;
isCreate: boolean;
};
export const useCompilationTemplateGroupForm = ({
detail,
defaultLlmId,
isCreate,
}: UseCompilationTemplateGroupFormOptions) => {
const { t } = useTranslation();
const {
data: allAddedModels,
isFetched: modelsFetched,
isError: modelsError,
} = useFetchAllAddedModels();
// null until the model list has actually loaded (or if it failed) — while
// unknown, any persisted id is accepted as-is so validation never judges
// against the empty placeholder list.
const validModelIds = useMemo(
() =>
modelsFetched && !modelsError
? buildValidModelIds(allAddedModels, ModelTypeMap.llm_id)
: null,
[allAddedModels, modelsFetched, modelsError],
);
const form = useForm<FormSchemaType>({
// useForm refreshes its options (including the resolver) on every render,
// so this closure always validates against the latest validModelIds.
resolver: zodResolver(
buildFormSchema(t, (id) => validModelIds?.has(id) ?? true),
),
resolver: zodResolver(buildFormSchema(t)),
defaultValues: DefaultValues,
mode: 'onChange',
});
@@ -71,14 +43,8 @@ export const useCompilationTemplateGroupForm = ({
useEffect(() => {
if (detail) {
form.reset(transformGroupDetailToForm(detail));
} else if (
isCreate &&
defaultLlmId &&
!form.getValues('templates.0.llm_id')
) {
form.setValue('templates.0.llm_id', defaultLlmId);
}
}, [defaultLlmId, detail, form, isCreate]);
}, [detail, form]);
return { form };
};

View File

@@ -21,7 +21,6 @@ import {
useUpdateCompilationTemplateGroup,
} from '@/hooks/use-compilation-template-group-request';
import { useFetchBuiltinCompilationTemplates } from '@/hooks/use-compilation-template-request';
import { useFetchDefaultModelDictionary } from '@/hooks/use-llm-request';
import { isCreateCompilationTemplateGroup } from '@/utils/compilation-template-util';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
@@ -48,7 +47,6 @@ export const useEditNextCompilationTemplateGroup = ({
const { data: detail } = useFetchCompilationTemplateGroup();
const { data: builtins, kindOptions: builtinKindOptions } =
useFetchBuiltinCompilationTemplates();
const defaultModelDictionary = useFetchDefaultModelDictionary();
const { createGroup, loading: createLoading } =
useCreateCompilationTemplateGroup();
@@ -64,11 +62,7 @@ export const useEditNextCompilationTemplateGroup = ({
[builtinKindOptions, t],
);
const { form } = useCompilationTemplateGroupForm({
detail,
defaultLlmId: defaultModelDictionary.llm_id,
isCreate,
});
const { form } = useCompilationTemplateGroupForm({ detail });
const { onSubmit } = useCompilationTemplateGroupSubmit({
isCreate,

View File

@@ -44,11 +44,7 @@ export const useTemplateKindChange = ({
if (builtinTemplate) {
form.setValue(
`templates.${index}.config`,
buildConfigFromBuiltin(
builtinTemplate,
value,
form.getValues(`templates.${index}.llm_id`),
),
buildConfigFromBuiltin(builtinTemplate, value),
{ shouldValidate: false },
);
}

View File

@@ -42,20 +42,11 @@ export const buildSynthesisSchema = () =>
})
.passthrough();
export const buildTemplateSchema = (
t: (key: string) => string,
isModelAvailable?: (id: string) => boolean,
) =>
export const buildTemplateSchema = (t: (key: string) => string) =>
z.object({
id: z.string().optional(),
name: z.string().min(1, t('setting.templateNameRequired')),
description: z.string().optional(),
llm_id: z
.string()
.min(1, t('setting.llmForExtractionRequired'))
.refine((val) => !val || (isModelAvailable?.(val) ?? true), {
message: t('setting.llmForExtractionUnavailable'),
}),
kind: z.string().min(1, t('setting.templateKindRequired')),
config: z.record(
z.union([
@@ -68,15 +59,12 @@ export const buildTemplateSchema = (
),
});
export const buildFormSchema = (
t: (key: string) => string,
isModelAvailable?: (id: string) => boolean,
) =>
export const buildFormSchema = (t: (key: string) => string) =>
z.object({
name: z.string().optional(),
description: z.string().optional(),
avatar: z.string().optional(),
templates: z.array(buildTemplateSchema(t, isModelAvailable)).min(1),
templates: z.array(buildTemplateSchema(t)).min(1),
});
export type TemplateSchemaType = z.infer<

View File

@@ -80,7 +80,6 @@ export const normalizeSection = (
export const buildConfigFromBuiltin = (
builtinTemplate: ICompilationTemplateBuiltin,
kind: string,
llmId: string,
): TemplateSchemaType['config'] => {
const instruction =
typeof builtinTemplate.config?.instruction === 'string'
@@ -92,7 +91,6 @@ export const buildConfigFromBuiltin = (
: '';
const sections: TemplateSchemaType['config'] = {
kind,
llm_id: llmId,
global_rules:
typeof builtinTemplate.config?.global_rules === 'string'
? builtinTemplate.config.global_rules
@@ -172,7 +170,6 @@ export const transformDetailToForm = (
);
const base: TemplateSchemaType['config'] = {
kind: config.kind ?? '',
llm_id: config.llm_id ?? '',
global_rules: config.global_rules ?? '',
example: storedExample,
...(typeof config.synthesis === 'object' && config.synthesis !== null
@@ -209,7 +206,6 @@ export const transformDetailToForm = (
id: detail.id,
name: detail.name ?? '',
description: detail.description ?? '',
llm_id: config.llm_id ?? '',
kind: detail.kind ?? '',
config: {
...base,
@@ -235,7 +231,6 @@ export const transformDetailToForm = (
id: detail.id,
name: detail.name ?? '',
description: detail.description ?? '',
llm_id: config.llm_id ?? '',
kind: detail.kind ?? '',
config: base,
};
@@ -259,11 +254,10 @@ export const transformGroupDetailToForm = (
export const transformTemplateToPayload = (template: TemplateSchemaType) => {
const config: ICompilationTemplateConfigRequest = {
kind: template.kind,
llm_id: template.llm_id,
};
Object.entries(template.config).forEach(([key, value]) => {
if (key === 'kind' || key === 'llm_id') return;
if (key === 'kind') return;
if (key === 'example' || key === 'instruction') return;
if (key === 'synthesis') {
config[key] = value as ICompilationTemplateConfigRequest[string];