According to your two problems:
performing spell checks does not give entire string as an output
sometimes repeats the phrases of the given review
I think you can adjust two arguments ( max_length, no_repeat_ngram_size ) for model.generate() to improve two problems:
Enlarge max_length size to solve problem-1.
Add no_repeat_ngram_size argument to reduce problem-2 error.