Caveat straight away that I am new to Godot, but as nobody has answered I will give my 2 cents.
So I am assuming here, but let's say you want for example:
1 x 'Good_Human' (player controlled)
N x 'Bad_Human' (AI Controlled)
So to make things easier, you want them all to have the same base which presumably defines the objects mesh and basic shared parameters such as gravity and so on:
1 x Template_Human
When you create 'Good_Human' from 'Template_Human' you would add state machine logic specific to the player. As there is only one player, I don't see any harm in doing this as a one-off, but much of the code may be re-usable so I would split this into individual .gd files wherever appropriate which I can then reference in 'Bad_Human' if needed.
I would create a 'Template_Bad_Human' based off 'Template_Human' which would contain the shareable attributes of a 'Bad_Human', as in general I would not expect this to be exactly identical to the player. If it is identical fine, but this leaves room for applying modifiers separately (say you wanted a difficulty setting at some point where enemies base HP scales differently idk). Also the AI gets it's own state machine as I am assuming it differs from the player state machine code at least to some degree, because surely it would....right?
Then 'Bad_Human_N' is based on 'Temlate_Bad_Human' and has their unique attributes set as you wish, namely sprites/textures.
What I am aiming for here is hierarchical re-usability, where I segregate each set of re-usability attributes (be they mesh/code/whatever) into its own scene, then allowing inheritance to do its thing so any changes made at a given level propagate to all its dependants.
I don't think I explained myself very well but hopefully that helps? :(
Also "passing controls to AI" confused me as AI doesn't need "Controls" in the same sense as the player. I assume you just mean they share given attributes such as movement speed/gravity and so on.