feat: Retain llm setting for agent node (#21842)
This commit is contained in:
@@ -25,6 +25,8 @@ import LLMParamsPanel from './llm-params-panel'
|
|||||||
import TTSParamsPanel from './tts-params-panel'
|
import TTSParamsPanel from './tts-params-panel'
|
||||||
import { useProviderContext } from '@/context/provider-context'
|
import { useProviderContext } from '@/context/provider-context'
|
||||||
import cn from '@/utils/classnames'
|
import cn from '@/utils/classnames'
|
||||||
|
import Toast from '@/app/components/base/toast'
|
||||||
|
import { fetchAndMergeValidCompletionParams } from '@/utils/completion-params'
|
||||||
|
|
||||||
export type ModelParameterModalProps = {
|
export type ModelParameterModalProps = {
|
||||||
popupClassName?: string
|
popupClassName?: string
|
||||||
@@ -121,17 +123,42 @@ const ModelParameterModal: FC<ModelParameterModalProps> = ({
|
|||||||
return !isAPIKeySet || hasDeprecated || modelDisabled
|
return !isAPIKeySet || hasDeprecated || modelDisabled
|
||||||
}, [hasDeprecated, isAPIKeySet, modelDisabled])
|
}, [hasDeprecated, isAPIKeySet, modelDisabled])
|
||||||
|
|
||||||
const handleChangeModel = ({ provider, model }: DefaultModel) => {
|
const handleChangeModel = async ({ provider, model }: DefaultModel) => {
|
||||||
const targetProvider = scopedModelList.find(modelItem => modelItem.provider === provider)
|
const targetProvider = scopedModelList.find(modelItem => modelItem.provider === provider)
|
||||||
const targetModelItem = targetProvider?.models.find((modelItem: { model: string }) => modelItem.model === model)
|
const targetModelItem = targetProvider?.models.find((modelItem: { model: string }) => modelItem.model === model)
|
||||||
const model_type = targetModelItem?.model_type as string
|
const model_type = targetModelItem?.model_type as string
|
||||||
|
|
||||||
|
let nextCompletionParams: FormValue = {}
|
||||||
|
|
||||||
|
if (model_type === ModelTypeEnum.textGeneration) {
|
||||||
|
try {
|
||||||
|
const { params: filtered, removedDetails } = await fetchAndMergeValidCompletionParams(
|
||||||
|
provider,
|
||||||
|
model,
|
||||||
|
value?.completion_params,
|
||||||
|
)
|
||||||
|
nextCompletionParams = filtered
|
||||||
|
|
||||||
|
const keys = Object.keys(removedDetails || {})
|
||||||
|
if (keys.length) {
|
||||||
|
Toast.notify({
|
||||||
|
type: 'warning',
|
||||||
|
message: `${t('common.modelProvider.parametersInvalidRemoved')}: ${keys.map(k => `${k} (${removedDetails[k]})`).join(', ')}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
Toast.notify({ type: 'error', message: t('common.error') })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setModel({
|
setModel({
|
||||||
provider,
|
provider,
|
||||||
model,
|
model,
|
||||||
model_type,
|
model_type,
|
||||||
...(model_type === ModelTypeEnum.textGeneration ? {
|
...(model_type === ModelTypeEnum.textGeneration ? {
|
||||||
mode: targetModelItem?.model_properties.mode as string,
|
mode: targetModelItem?.model_properties.mode as string,
|
||||||
completion_params: {},
|
completion_params: nextCompletionParams,
|
||||||
} : {}),
|
} : {}),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user