Defending Large Language Models against Jailbreak Attacks via Semantic Smoothing