Human players are controlled in the user interface.
First bot always chooses the lowest-numbered positions, so you can easily beat it.
Random bot chooses whatever it “feels like”, even if it is a bad choice. If you don’t like its choice, you can undo your move and redo it.
Nice bot tries to lose as soon as possible, tie, and then win as late as possible. If it chooses all of its moves, it never wins.
Optimal bot tries to win as soon as possible, tie, and then lose as late as possible. If it chooses all of its moves, it never loses.