@@ -269,11 +269,36 @@ def __init__(self, flow: Flow, params, work_flow_post_handler: WorkFlowPostHandl
269269 self .child_node = child_node
270270 self .future_list = []
271271 self .lock = threading .Lock ()
272+ self .field_list = []
273+ self .global_field_list = []
274+ self .init_fields ()
272275 if start_node_id is not None :
273276 self .load_node (chat_record , start_node_id , start_node_data )
274277 else :
275278 self .node_context = []
276279
280+ def init_fields (self ):
281+ field_list = []
282+ global_field_list = []
283+ for node in self .flow .nodes :
284+ properties = node .properties
285+ node_name = properties .get ('stepName' )
286+ node_id = node .id
287+ node_config = properties .get ('config' )
288+ if node_config is not None :
289+ fields = node_config .get ('fields' )
290+ if fields is not None :
291+ for field in fields :
292+ field_list .append ({** field , 'node_id' : node_id , 'node_name' : node_name })
293+ global_fields = node_config .get ('globalFields' )
294+ if global_fields is not None :
295+ for global_field in global_fields :
296+ global_field_list .append ({** global_field , 'node_id' : node_id , 'node_name' : node_name })
297+ field_list .sort (key = lambda f : len (f .get ('node_name' )), reverse = True )
298+ global_field_list .sort (key = lambda f : len (f .get ('node_name' )), reverse = True )
299+ self .field_list = field_list
300+ self .global_field_list = global_field_list
301+
277302 def append_answer (self , content ):
278303 self .answer += content
279304 self .answer_list [- 1 ] += content
@@ -739,23 +764,15 @@ def get_workflow_content(self):
739764
740765 def reset_prompt (self , prompt : str ):
741766 placeholder = "{}"
742- for node in self .flow .nodes :
743- properties = node .properties
744- node_config = properties .get ('config' )
745- if node_config is not None :
746- fields = node_config .get ('fields' )
747- if fields is not None :
748- for field in fields :
749- globeLabel = f"{ properties .get ('stepName' )} .{ field .get ('value' )} "
750- globeValue = f"context.get('{ node .id } ',{ placeholder } ).get('{ field .get ('value' , '' )} ','')"
751- prompt = prompt .replace (globeLabel , globeValue )
752- global_fields = node_config .get ('globalFields' )
753- if global_fields is not None :
754- for field in global_fields :
755- globeLabel = f"全局变量.{ field .get ('value' )} "
756- globeLabelNew = f"global.{ field .get ('value' )} "
757- globeValue = f"context.get('global').get('{ field .get ('value' , '' )} ','')"
758- prompt = prompt .replace (globeLabel , globeValue ).replace (globeLabelNew , globeValue )
767+ for field in self .field_list :
768+ globeLabel = f"{ field .get ('node_name' )} .{ field .get ('value' )} "
769+ globeValue = f"context.get('{ field .get ('node_id' )} ',{ placeholder } ).get('{ field .get ('value' , '' )} ','')"
770+ prompt = prompt .replace (globeLabel , globeValue )
771+ for field in self .global_field_list :
772+ globeLabel = f"全局变量.{ field .get ('value' )} "
773+ globeLabelNew = f"global.{ field .get ('value' )} "
774+ globeValue = f"context.get('global').get('{ field .get ('value' , '' )} ','')"
775+ prompt = prompt .replace (globeLabel , globeValue ).replace (globeLabelNew , globeValue )
759776 return prompt
760777
761778 def generate_prompt (self , prompt : str ):
0 commit comments