A comprehensive guide to prompt engineering, a crucial aspect of working with large language models (LLMs)