Large language models, explained