@@ -269,11 +269,36 @@ def __init__(self, flow: Flow, params, work_flow_post_handler: WorkFlowPostHandl
269
269
self .child_node = child_node
270
270
self .future_list = []
271
271
self .lock = threading .Lock ()
272
+ self .field_list = []
273
+ self .global_field_list = []
274
+ self .init_fields ()
272
275
if start_node_id is not None :
273
276
self .load_node (chat_record , start_node_id , start_node_data )
274
277
else :
275
278
self .node_context = []
276
279
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
+
277
302
def append_answer (self , content ):
278
303
self .answer += content
279
304
self .answer_list [- 1 ] += content
@@ -739,23 +764,15 @@ def get_workflow_content(self):
739
764
740
765
def reset_prompt (self , prompt : str ):
741
766
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 )
759
776
return prompt
760
777
761
778
def generate_prompt (self , prompt : str ):
0 commit comments