Teacher forcing is not intrinsic to the model but how you use the model. So eval() and train() has nothing to do with. Sure, if you make inferences, you should always set a model to eval().
If you check the PyTorch Seq2Seq tutorial 6, teacher forcing is only a thing in the train() method, but not in the evaluate() method for making inferences. Here, you simply have no ground truth, so the prediction of the next word depends on the last predicted word.