Generative AI fundamentals