Remove parameter validation on model change in node configs

Eliminated the logic for fetching and merging valid completion parameters when changing models in parameter-extractor and question-classifier node configs. This simplifies the model change handler and removes related imports and toast notifications.
pull/21247/head
Kalo Chin 11 months ago
parent 5104fe3c5f
commit 9dabdb08c0

@ -17,9 +17,6 @@ import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-cr
import { checkHasQueryBlock } from '@/app/components/base/prompt-editor/constants' import { checkHasQueryBlock } from '@/app/components/base/prompt-editor/constants'
import useAvailableVarList from '@/app/components/workflow/nodes/_base/hooks/use-available-var-list' import useAvailableVarList from '@/app/components/workflow/nodes/_base/hooks/use-available-var-list'
import { supportFunctionCall } from '@/utils/tool-call' import { supportFunctionCall } from '@/utils/tool-call'
import { mergeValidCompletionParams } from '@/utils/completion-params'
import { fetchModelParameterRules } from '@/service/common'
import Toast from '@/app/components/base/toast'
const useConfig = (id: string, payload: ParameterExtractorNodeType) => { const useConfig = (id: string, payload: ParameterExtractorNodeType) => {
const { nodesReadOnly: readOnly } = useNodesReadOnly() const { nodesReadOnly: readOnly } = useNodesReadOnly()
@ -120,31 +117,16 @@ const useConfig = (id: string, payload: ParameterExtractorNodeType) => {
} = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.textGeneration) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.textGeneration)
const handleModelChanged = useCallback((model: { provider: string; modelId: string; mode?: string }) => { const handleModelChanged = useCallback((model: { provider: string; modelId: string; mode?: string }) => {
(async () => { const newInputs = produce(inputRef.current, (draft) => {
const newInputs = produce(inputRef.current, (draft) => { draft.model.provider = model.provider
draft.model.provider = model.provider draft.model.name = model.modelId
draft.model.name = model.modelId draft.model.mode = model.mode!
draft.model.mode = model.mode! const isModeChange = model.mode !== inputRef.current.model?.mode
const isModeChange = model.mode !== inputRef.current.model?.mode if (isModeChange && defaultConfig && Object.keys(defaultConfig).length > 0)
if (isModeChange && defaultConfig && Object.keys(defaultConfig).length > 0) appendDefaultPromptConfig(draft, defaultConfig, model.mode === 'chat')
appendDefaultPromptConfig(draft, defaultConfig, model.mode === 'chat') })
}) setInputs(newInputs)
setModelChanged(true)
// filter completion params
try {
const url = `/workspaces/current/model-providers/${model.provider}/models/parameter-rules?model=${model.modelId}`
const { data: parameterRules } = await fetchModelParameterRules(url)
const { params: filtered, removedDetails } = mergeValidCompletionParams(inputRef.current.model.completion_params, parameterRules ?? [])
if (Object.keys(removedDetails).length)
Toast.notify({ type: 'warning', message: `${t('common.modelProvider.parametersInvalidRemoved')}: ` + Object.entries(removedDetails).map(([k, reason]) => `${k} (${reason})`).join(', ') })
newInputs.model.completion_params = filtered
}
catch {
// ignore errors
}
setInputs(newInputs)
setModelChanged(true)
})()
}, [setInputs, defaultConfig, appendDefaultPromptConfig]) }, [setInputs, defaultConfig, appendDefaultPromptConfig])
useEffect(() => { useEffect(() => {

@ -15,9 +15,6 @@ import useOneStepRun from '@/app/components/workflow/nodes/_base/hooks/use-one-s
import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
import { checkHasQueryBlock } from '@/app/components/base/prompt-editor/constants' import { checkHasQueryBlock } from '@/app/components/base/prompt-editor/constants'
import { mergeValidCompletionParams } from '@/utils/completion-params'
import { fetchModelParameterRules } from '@/service/common'
import Toast from '@/app/components/base/toast'
const useConfig = (id: string, payload: QuestionClassifierNodeType) => { const useConfig = (id: string, payload: QuestionClassifierNodeType) => {
const { nodesReadOnly: readOnly } = useNodesReadOnly() const { nodesReadOnly: readOnly } = useNodesReadOnly()
@ -58,26 +55,13 @@ const useConfig = (id: string, payload: QuestionClassifierNodeType) => {
}) })
const handleModelChanged = useCallback((model: { provider: string; modelId: string; mode?: string }) => { const handleModelChanged = useCallback((model: { provider: string; modelId: string; mode?: string }) => {
(async () => { const newInputs = produce(inputRef.current, (draft) => {
const newInputs = produce(inputRef.current, (draft) => { draft.model.provider = model.provider
draft.model.provider = model.provider draft.model.name = model.modelId
draft.model.name = model.modelId draft.model.mode = model.mode!
draft.model.mode = model.mode! })
}) setInputs(newInputs)
try { setModelChanged(true)
const url = `/workspaces/current/model-providers/${model.provider}/models/parameter-rules?model=${model.modelId}`
const { data: parameterRules } = await fetchModelParameterRules(url)
const { params: filtered, removedDetails } = mergeValidCompletionParams(inputRef.current.model.completion_params, parameterRules ?? [])
if (Object.keys(removedDetails).length)
Toast.notify({ type: 'warning', message: `${t('common.modelProvider.parametersInvalidRemoved')}: ` + Object.entries(removedDetails).map(([k, reason]) => `${k} (${reason})`).join(', ') })
newInputs.model.completion_params = filtered
}
catch {
// ignore
}
setInputs(newInputs)
setModelChanged(true)
})()
}, [setInputs]) }, [setInputs])
useEffect(() => { useEffect(() => {

Loading…
Cancel
Save