|
|
|
|
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps |
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps |
|
|
}, [defaultConfig, isChatModel]) |
|
|
}, [defaultConfig, isChatModel]) |
|
|
|
|
|
|
|
|
|
|
|
const [modelChanged, setModelChanged] = useState(false) |
|
|
const { |
|
|
const { |
|
|
currentProvider, |
|
|
currentProvider, |
|
|
currentModel, |
|
|
currentModel, |
|
|
|
|
|
|
|
|
appendDefaultPromptConfig(draft, defaultConfig, model.mode === 'chat') |
|
|
appendDefaultPromptConfig(draft, defaultConfig, model.mode === 'chat') |
|
|
}) |
|
|
}) |
|
|
setInputs(newInputs) |
|
|
setInputs(newInputs) |
|
|
|
|
|
setModelChanged(true) |
|
|
}, [setInputs, defaultConfig, appendDefaultPromptConfig]) |
|
|
}, [setInputs, defaultConfig, appendDefaultPromptConfig]) |
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
useEffect(() => { |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
) |
|
|
) |
|
|
const isShowVisionConfig = !!currModel?.features?.includes(ModelFeatureEnum.vision) |
|
|
const isShowVisionConfig = !!currModel?.features?.includes(ModelFeatureEnum.vision) |
|
|
|
|
|
|
|
|
|
|
|
// change to vision model to set vision enabled, else disabled |
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
if (!modelChanged) |
|
|
|
|
|
return |
|
|
|
|
|
setModelChanged(false) |
|
|
|
|
|
if (!isShowVisionConfig) { |
|
|
|
|
|
const newInputs = produce(inputs, (draft) => { |
|
|
|
|
|
draft.vision = { |
|
|
|
|
|
enabled: false, |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
setInputs(newInputs) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if (!inputs.vision?.enabled) { |
|
|
|
|
|
const newInputs = produce(inputs, (draft) => { |
|
|
|
|
|
if (!draft.vision?.enabled) { |
|
|
|
|
|
draft.vision = { |
|
|
|
|
|
enabled: true, |
|
|
|
|
|
configs: { |
|
|
|
|
|
detail: Resolution.high, |
|
|
|
|
|
}, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
setInputs(newInputs) |
|
|
|
|
|
} |
|
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps |
|
|
|
|
|
}, [isShowVisionConfig, modelChanged]) |
|
|
// variables |
|
|
// variables |
|
|
const { handleVarListChange, handleAddVariable } = useVarList<LLMNodeType>({ |
|
|
const { handleVarListChange, handleAddVariable } = useVarList<LLMNodeType>({ |
|
|
inputs, |
|
|
inputs, |
|
|
|
|
|
|
|
|
setInputs(newInputs) |
|
|
setInputs(newInputs) |
|
|
}, [inputs, setInputs]) |
|
|
}, [inputs, setInputs]) |
|
|
|
|
|
|
|
|
|
|
|
const handleVisionResolutionEnabledChange = useCallback((enabled: boolean) => { |
|
|
|
|
|
const newInputs = produce(inputs, (draft) => { |
|
|
|
|
|
if (!draft.vision) { |
|
|
|
|
|
draft.vision = { |
|
|
|
|
|
enabled, |
|
|
|
|
|
configs: { |
|
|
|
|
|
detail: Resolution.high, |
|
|
|
|
|
}, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
draft.vision.enabled = enabled |
|
|
|
|
|
if (!draft.vision.configs) { |
|
|
|
|
|
draft.vision.configs = { |
|
|
|
|
|
detail: Resolution.high, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
setInputs(newInputs) |
|
|
|
|
|
}, [inputs, setInputs]) |
|
|
|
|
|
|
|
|
const handleVisionResolutionChange = useCallback((newResolution: Resolution) => { |
|
|
const handleVisionResolutionChange = useCallback((newResolution: Resolution) => { |
|
|
const newInputs = produce(inputs, (draft) => { |
|
|
const newInputs = produce(inputs, (draft) => { |
|
|
if (!draft.vision.configs) { |
|
|
if (!draft.vision.configs) { |
|
|
|
|
|
|
|
|
filterVar, |
|
|
filterVar, |
|
|
handlePromptChange, |
|
|
handlePromptChange, |
|
|
handleMemoryChange, |
|
|
handleMemoryChange, |
|
|
|
|
|
handleVisionResolutionEnabledChange, |
|
|
handleVisionResolutionChange, |
|
|
handleVisionResolutionChange, |
|
|
isShowSingleRun, |
|
|
isShowSingleRun, |
|
|
hideSingleRun, |
|
|
hideSingleRun, |