|
|
|
|
@ -103,6 +103,7 @@ const useConfig = (id: string, payload: LLMNodeType) => {
|
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
|
}, [defaultConfig, isChatModel])
|
|
|
|
|
|
|
|
|
|
const [modelChanged, setModelChanged] = useState(false)
|
|
|
|
|
const {
|
|
|
|
|
currentProvider,
|
|
|
|
|
currentModel,
|
|
|
|
|
@ -118,6 +119,7 @@ const useConfig = (id: string, payload: LLMNodeType) => {
|
|
|
|
|
appendDefaultPromptConfig(draft, defaultConfig, model.mode === 'chat')
|
|
|
|
|
})
|
|
|
|
|
setInputs(newInputs)
|
|
|
|
|
setModelChanged(true)
|
|
|
|
|
}, [setInputs, defaultConfig, appendDefaultPromptConfig])
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
@ -146,7 +148,35 @@ const useConfig = (id: string, payload: LLMNodeType) => {
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
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
|
|
|
|
|
const { handleVarListChange, handleAddVariable } = useVarList<LLMNodeType>({
|
|
|
|
|
inputs,
|
|
|
|
|
@ -176,6 +206,28 @@ const useConfig = (id: string, payload: LLMNodeType) => {
|
|
|
|
|
setInputs(newInputs)
|
|
|
|
|
}, [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 newInputs = produce(inputs, (draft) => {
|
|
|
|
|
if (!draft.vision.configs) {
|
|
|
|
|
@ -296,6 +348,7 @@ const useConfig = (id: string, payload: LLMNodeType) => {
|
|
|
|
|
filterVar,
|
|
|
|
|
handlePromptChange,
|
|
|
|
|
handleMemoryChange,
|
|
|
|
|
handleVisionResolutionEnabledChange,
|
|
|
|
|
handleVisionResolutionChange,
|
|
|
|
|
isShowSingleRun,
|
|
|
|
|
hideSingleRun,
|
|
|
|
|
|