If you are going to have a multiplayer game over the internet, you virtually must have a way of syncing data. In general (or at least to my knowledge) this is done by making one person the host of the game and having them sound out periodic sync requests and sync data to ensure all players have the same values for their client. Otherwise things like memory hacks, our cummulative delay could have an impact on the game.
If you implemented this, it would be relatively easy for the host to create the necessary AI player clients on his machine at game startup. With an abstraction layer, it would still be easy to handle the syncing without any of the clients complaining.