RLHF trains a reward model on human comparisons of model outputs, then uses reinforcement learning to steer the language model toward what the reward model scores highly. It solves the problem that the behaviour people want, being helpful and refusing harmful requests, is far easier to rank than to write as a supervised target. It exists because it is what turned a raw next-token predictor into something that follows instructions, and it is the step DPO later simplified.
Direct Preference Optimization optimises a language model on pairs of preferred and rejected responses in a single supervised-style step. It solves the complexity of RLHF, which needs a separate reward model and a reinforcement learning loop that is notoriously sensitive to hyperparameters. It exists because the RLHF objective can be rewritten so the optimal policy is available in closed form, which removes the need for the reward model and the sampling loop entirely.