Designing Large Language Model Applications (A Holistic Approach to LLMs)