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

Function purify_graph

toolbench/tooleval/convert_to_answer_format.py:126–158  ·  view source on GitHub ↗
(node:ExecutionNode)

Source from the content-addressed store, hash-verified

124
125 # purify the graph
126 def purify_graph(node:ExecutionNode):
127 if node.role == 'Action':
128 adj_nodes = eg.get_adjacent_node(node)
129 for adj_node in adj_nodes:
130 adj_node = eg[adj_node]
131 if adj_node.role == 'Action Input':
132 node.role = 'tool'
133 node.message = {
134 'name':node.message['description'],
135 'arguments':(adj_node.message['description']),
136 'response':(adj_node.message['observation'])
137
138 }
139 # remove adj_node
140 adj_node = eg.pop_node(adj_node)
141 to_nodes = eg.edges.pop(adj_node.node_id,{})
142 eg.edges[node.node_id].update(to_nodes)
143 eg.edges[node.node_id].pop(adj_node.node_id)
144 node.out_degree += len(to_nodes)
145 break
146 elif node.role == 'Thought':
147 node.role = 'assistant'
148 node.message = node.message['description']
149 elif node.role == 'Action Input':
150 print('Founding Extra Action Input Node')
151 pass
152 elif node.role =='system' or node.role=='user':
153 pass
154 else:
155 raise Exception('Unknown role {}'.format(node.role))
156 adj_nodes = eg.get_adjacent_node(node)
157 for adj_node in adj_nodes:
158 purify_graph(eg[adj_node])
159
160 purify_graph(last_node)
161 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