Large Language Models: From Theory to Practice