I'd cut him slack for "I don't like carrots" rather than "no thank you" while he's learning. (Whether it's your job to teach him what he should say is a separate question; it sounds like you and your in-laws have that under control.) Also, within the family, I think either "no, thanks, I don't like carrots" or "no thanks, I'm not hungry" is reasonable. Those are because if I'm hosting someone, it's worth knowing whether I want to offer them something else. A hungry guest should be fed if reasonably possible, which doesn't mean I'm necessarily going to offer to cook, but I can get out some bread and butter, but I don't need to offer you the carrots, the cucumber salad, and some bread and butter if you had pizza just before visiting me and aren't hungry. However, "no thank you" is okay in either case, and I the adult/host can then decide whether I should offer something else.