Aligning LLMs with Direct Preference Optimization