MCPcopy Index your code
hub / github.com/OpenBMB/ToolBench / purify_graph

Function purify_graph

toolbench/tooleval/utils.py:151–183  ·  view source on GitHub ↗
(node:ExecutionNode)

Source from the content-addressed store, hash-verified

149
150 # purify the graph
151 def purify_graph(node:ExecutionNode):
152 if node.role == 'Action':
153 adj_nodes = eg.get_adjacent_node(node)
154 for adj_node in adj_nodes:
155 adj_node = eg[adj_node]
156 if adj_node.role == 'Action Input':
157 node.role = 'tool'
158 node.message = {
159 'name':node.message['description'],
160 'arguments':(adj_node.message['description']),
161 'response':(adj_node.message['observation'])
162
163 }
164 # remove adj_node
165 adj_node = eg.pop_node(adj_node)
166 to_nodes = eg.edges.pop(adj_node.node_id,{})
167 eg.edges[node.node_id].update(to_nodes)
168 eg.edges[node.node_id].pop(adj_node.node_id)
169 node.out_degree += len(to_nodes)
170 break
171 elif node.role == 'Thought':
172 node.role = 'assistant'
173 node.message = node.message['description']
174 elif node.role == 'Action Input':
175 print('Founding Extra Action Input Node')
176 pass
177 elif node.role =='system' or node.role=='user':
178 pass
179 else:
180 raise Exception('Unknown role {}'.format(node.role))
181 adj_nodes = eg.get_adjacent_node(node)
182 for adj_node in adj_nodes:
183 purify_graph(eg[adj_node])
184
185 purify_graph(last_node)
186 eg = eg.reduce_graph_to_sequence()

Callers 1

process_invalid_dataFunction · 0.70

Calls 2

get_adjacent_nodeMethod · 0.80
pop_nodeMethod · 0.80

Tested by

no test coverage detected