mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 19:03:09 +00:00 
			
		
		
		
	fix(api/nodes): Fallback to get_any in some nodes that use object or array. (#6566)
				
					
				
			This commit is contained in:
		
							parent
							
								
									6b5fac3004
								
							
						
					
					
						commit
						cfc408095c
					
				| @ -59,8 +59,9 @@ class CodeNode(BaseNode): | |||||||
|         variables = {} |         variables = {} | ||||||
|         for variable_selector in node_data.variables: |         for variable_selector in node_data.variables: | ||||||
|             variable = variable_selector.variable |             variable = variable_selector.variable | ||||||
|             value = variable_pool.get(variable_selector.value_selector) |             value = variable_pool.get_any(variable_selector.value_selector) | ||||||
|             variables[variable] = value.value if value else None | 
 | ||||||
|  |             variables[variable] = value | ||||||
|         # Run code |         # Run code | ||||||
|         try: |         try: | ||||||
|             result = CodeExecutor.execute_workflow_code_template( |             result = CodeExecutor.execute_workflow_code_template( | ||||||
|  | |||||||
| @ -24,8 +24,8 @@ class EndNode(BaseNode): | |||||||
| 
 | 
 | ||||||
|         outputs = {} |         outputs = {} | ||||||
|         for variable_selector in output_variables: |         for variable_selector in output_variables: | ||||||
|             value = variable_pool.get(variable_selector.value_selector) |             value = variable_pool.get_any(variable_selector.value_selector) | ||||||
|             outputs[variable_selector.variable] = value.value if value else None |             outputs[variable_selector.variable] = value | ||||||
| 
 | 
 | ||||||
|         return NodeRunResult( |         return NodeRunResult( | ||||||
|             status=WorkflowNodeExecutionStatus.SUCCEEDED, |             status=WorkflowNodeExecutionStatus.SUCCEEDED, | ||||||
|  | |||||||
| @ -333,13 +333,13 @@ class HttpExecutor: | |||||||
|         if variable_pool: |         if variable_pool: | ||||||
|             variable_value_mapping = {} |             variable_value_mapping = {} | ||||||
|             for variable_selector in variable_selectors: |             for variable_selector in variable_selectors: | ||||||
|                 variable = variable_pool.get(variable_selector.value_selector) |                 variable = variable_pool.get_any(variable_selector.value_selector) | ||||||
|                 if variable is None: |                 if variable is None: | ||||||
|                     raise ValueError(f'Variable {variable_selector.variable} not found') |                     raise ValueError(f'Variable {variable_selector.variable} not found') | ||||||
|                 if escape_quotes and isinstance(variable.value, str): |                 if escape_quotes and isinstance(variable, str): | ||||||
|                     value = variable.value.replace('"', '\\"') |                     value = variable.replace('"', '\\"') | ||||||
|                 else: |                 else: | ||||||
|                     value = variable.value |                     value = variable | ||||||
|                 variable_value_mapping[variable_selector.variable] = value |                 variable_value_mapping[variable_selector.variable] = value | ||||||
| 
 | 
 | ||||||
|             return variable_template_parser.format(variable_value_mapping), variable_selectors |             return variable_template_parser.format(variable_value_mapping), variable_selectors | ||||||
|  | |||||||
| @ -41,8 +41,8 @@ class KnowledgeRetrievalNode(BaseNode): | |||||||
|         node_data: KnowledgeRetrievalNodeData = cast(self._node_data_cls, self.node_data) |         node_data: KnowledgeRetrievalNodeData = cast(self._node_data_cls, self.node_data) | ||||||
| 
 | 
 | ||||||
|         # extract variables |         # extract variables | ||||||
|         variable = variable_pool.get(node_data.query_variable_selector) |         variable = variable_pool.get_any(node_data.query_variable_selector) | ||||||
|         query = variable.value if variable else None |         query = variable | ||||||
|         variables = { |         variables = { | ||||||
|             'query': query |             'query': query | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -71,10 +71,10 @@ class ParameterExtractorNode(LLMNode): | |||||||
|         Run the node. |         Run the node. | ||||||
|         """ |         """ | ||||||
|         node_data = cast(ParameterExtractorNodeData, self.node_data) |         node_data = cast(ParameterExtractorNodeData, self.node_data) | ||||||
|         variable = variable_pool.get(node_data.query) |         variable = variable_pool.get_any(node_data.query) | ||||||
|         if not variable: |         if not variable: | ||||||
|             raise ValueError("Input variable content not found or is empty") |             raise ValueError("Input variable content not found or is empty") | ||||||
|         query = variable.value |         query = variable | ||||||
| 
 | 
 | ||||||
|         inputs = { |         inputs = { | ||||||
|             'query': query, |             'query': query, | ||||||
| @ -565,8 +565,8 @@ class ParameterExtractorNode(LLMNode): | |||||||
|         variable_template_parser = VariableTemplateParser(instruction) |         variable_template_parser = VariableTemplateParser(instruction) | ||||||
|         inputs = {} |         inputs = {} | ||||||
|         for selector in variable_template_parser.extract_variable_selectors(): |         for selector in variable_template_parser.extract_variable_selectors(): | ||||||
|             variable = variable_pool.get(selector.value_selector) |             variable = variable_pool.get_any(selector.value_selector) | ||||||
|             inputs[selector.variable] = variable.value if variable else None |             inputs[selector.variable] = variable | ||||||
| 
 | 
 | ||||||
|         return variable_template_parser.format(inputs) |         return variable_template_parser.format(inputs) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -20,26 +20,26 @@ class VariableAggregatorNode(BaseNode): | |||||||
| 
 | 
 | ||||||
|         if not node_data.advanced_settings or not node_data.advanced_settings.group_enabled: |         if not node_data.advanced_settings or not node_data.advanced_settings.group_enabled: | ||||||
|             for selector in node_data.variables: |             for selector in node_data.variables: | ||||||
|                 variable = variable_pool.get(selector) |                 variable = variable_pool.get_any(selector) | ||||||
|                 if variable is not None: |                 if variable is not None: | ||||||
|                     outputs = { |                     outputs = { | ||||||
|                         "output": variable.value |                         "output": variable | ||||||
|                     } |                     } | ||||||
| 
 | 
 | ||||||
|                     inputs = { |                     inputs = { | ||||||
|                         '.'.join(selector[1:]): variable.value |                         '.'.join(selector[1:]): variable | ||||||
|                     } |                     } | ||||||
|                     break |                     break | ||||||
|         else: |         else: | ||||||
|             for group in node_data.advanced_settings.groups: |             for group in node_data.advanced_settings.groups: | ||||||
|                 for selector in group.variables: |                 for selector in group.variables: | ||||||
|                     variable = variable_pool.get(selector) |                     variable = variable_pool.get_any(selector) | ||||||
| 
 | 
 | ||||||
|                     if variable is not None: |                     if variable is not None: | ||||||
|                         outputs[group.group_name] = { |                         outputs[group.group_name] = { | ||||||
|                             'output': variable.value |                             'output': variable | ||||||
|                         } |                         } | ||||||
|                         inputs['.'.join(selector[1:])] = variable.value |                         inputs['.'.join(selector[1:])] = variable | ||||||
|                         break |                         break | ||||||
| 
 | 
 | ||||||
|         return NodeRunResult( |         return NodeRunResult( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 -LAN-
						-LAN-