| 
					
				 | 
			
			
				@@ -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, 
			 |