function agent_step(user_request, tools):

   if request_needs_external_data(user_request):
      tool = choose_tool(user_request, tools) # e.g. search, calculator,
 database
      result = tool.call(user_request)
      return generate_response(user_request, result)
   return generate_response(user_request) # answer from knowledge al
 one
