in src/dfcx_scrapi/core/sessions.py [0:0]
def parse_result(self, res):
tool_call_font = "<font color='dark red'>TOOL CALL:</font></b>"
tool_res_font = "<font color='yellow'>TOOL RESULT:</font></b>"
query_font = "<font color='green'><b> USER QUERY:</font></b>"
response_font = "<font color='green'><b>AGENT RESPONSE:</font></b>"
self.printmd(f"{query_font} {res.text}")
for action in res.generative_info.action_tracing_info.actions:
if "tool_use" in action:
tool_name = action.tool_use.action
input_params = {}
output_params = {}
input_param = action.tool_use.input_action_parameters
output_param = action.tool_use.output_action_parameters
if isinstance(input_param, maps.MapComposite):
processed_input_params = self.recurse_proto_marshal_to_dict(
input_param
)
input_keys = list(processed_input_params.keys())
first_key = input_keys[0] if input_keys else None
input_params = processed_input_params.get(first_key, {})
if isinstance(output_param, maps.MapComposite):
processed_output_params = (
self.recurse_proto_marshal_to_dict(output_param)
)
output_keys = list(processed_output_params.keys())
first_key = output_keys[0] if output_keys else None
output_params = processed_output_params.get(first_key, {})
self.printmd(f"{tool_call_font} {tool_name} -> {input_params}")
self.printmd(f"{tool_res_font} {output_params}")
elif "agent_utterance" in action:
self.printmd(f"{response_font} {action.agent_utterance.text}")