@@ -71,7 +71,7 @@ def write_context(node_variable: Dict, workflow_variable: Dict, node: INode, wor
7171 _write_context (node_variable , workflow_variable , node , workflow , content , reasoning_content )
7272
7373
74- def loop_number (number : int , loop_body , workflow_manage_new_instance , workflow ):
74+ def loop_number (number : int , workflow_manage_new_instance , node : INode ):
7575 loop_global_data = {}
7676 for index in range (number ):
7777 """
@@ -91,31 +91,29 @@ def loop_number(number: int, loop_body, workflow_manage_new_instance, workflow):
9191 loop_global_data = instance .context
9292
9393
94- def loop_array (array , loop_body , workflow_manage_new_instance , workflow ):
94+ def loop_array (array , workflow_manage_new_instance , node : INode ):
9595 loop_global_data = {}
96+ loop_execute_details = []
9697 for item , index in zip (array , range (len (array ))):
9798 """
9899 指定次数循环
99100 @return:
100101 """
101102 instance = workflow_manage_new_instance ({'index' : index , 'item' : item }, loop_global_data )
102103 response = instance .stream ()
103- answer = ''
104- reasoning_content = ''
105104 for chunk in response :
106- content_chunk = chunk .get ('content' , '' )
107- reasoning_content_chunk = chunk .get ('reasoning_content' , '' )
108- reasoning_content += reasoning_content_chunk
109- answer += content_chunk
110105 yield chunk
111106 loop_global_data = instance .context
107+ runtime_details = instance .get_runtime_details ()
108+ loop_execute_details .append (runtime_details )
109+ node .context ['loop_execute_details' ] = loop_execute_details
112110
113111
114112def get_write_context (loop_type , array , number , loop_body , stream ):
115113 def inner_write_context (node_variable : Dict , workflow_variable : Dict , node : INode , workflow ):
116114 if loop_type == 'ARRAY' :
117- return loop_array (array , loop_body , node_variable ['workflow_manage_new_instance' ], workflow )
118- return loop_number (number , loop_body , node_variable ['workflow_manage_new_instance' ], workflow )
115+ return loop_array (array , node_variable ['workflow_manage_new_instance' ], node )
116+ return loop_number (number , node_variable ['workflow_manage_new_instance' ], node )
119117
120118 return inner_write_context
121119
@@ -138,8 +136,7 @@ def execute(self, loop_type, array, number, loop_body, stream, **kwargs) -> Node
138136 def workflow_manage_new_instance (start_data , global_data ):
139137 workflow_manage = WorkflowManage (Flow .new_instance (loop_body ), self .workflow_manage .params ,
140138 LoopWorkFlowPostHandler (
141- self .workflow_manage .work_flow_post_handler .chat_info
142- ,
139+ self .workflow_manage .work_flow_post_handler .chat_info ,
143140 self .workflow_manage .work_flow_post_handler .client_id ,
144141 self .workflow_manage .work_flow_post_handler .client_type )
145142 , base_to_response = LoopToResponse (),
0 commit comments