One mistake I often see from new AI engineers is thinking that making API calls is the same as real engineering. Sending a text to OpenAI and printing the response is simple, but it does not mean you truly understand Large Language Models. When I switched from traditional machine learning to Generative AI, I realized I needed a clear plan to avoid getting stuck in endless tutorials. In this article, I will share the framework I used to learn LLMs, showing how I went from learning the basics to building AI agents ready for real-world use.
The Framework I Used to Learn LLMs
If you feel overwhelmed by all the AI content available, this project-based framework can help you link theory to real-world industry uses.
Milestone 1: Core Concepts and the Transformer Architecture
Before I wrote any code, I made sure I understood why LLMs exist and how they handle information. The field changed a lot in 2017 when the Transformer architecture was introduced.
Rather than just reading summaries, I learned how self-attention lets models process words at the same time and decide which words in a sentence matter most.
To learn about the Transformer architecture, I built a Large Language Model from scratch in PyTorch. I created the main parts myself, like token embeddings, positional encoding, multi-head self-attention, feed-forward layers, and causal masking. Building everything step by step helped me really understand how Transformers handle context and create text.
Milestone 2: Embeddings and Prompt Engineering
After learning the architecture, I wanted to know how we interact with it. Many people think prompt engineering is just typing instructions, but in real projects, it means carefully formatting inputs so the model gives consistent and reliable outputs.
At the same time, I started learning about embeddings. Embeddings are mathematical vectors that capture the meaning of text, and they let computers understand language in a mathematical way.
To learn about embeddings, I built a smart search engine in Python. Instead of just matching keywords, it tries to understand what a query really means. I turned text into embeddings and used semantic similarity to find the best results. This project showed me how embeddings reveal connections between words and ideas, and how semantic search can make finding information smarter.
Milestone 3: Retrieval-Augmented Generation
This is where theory meets real-world needs. You cannot trust an LLM’s memory for facts or company details because it can make things up. Retrieval-Augmented Generation (RAG) solves this by first finding the right information in documents, then giving it to the model to answer questions.
I focused a lot on RAG because it is a top skill in enterprise AI today. I remember working on a project where I had to set up a RAG-based app and AI Agents on a Linux server for a client. Switching from a local Jupyter notebook to deploying on a server with SFTP and SCP taught me a lot about managing environments and keeping pipelines stable.
To learn RAG, I built a full pipeline that lets an LLM answer questions based on the real content of PDF documents, not just its training data. The pipeline has two main parts: a retriever that finds the right sections in the document, and a generator that uses those sections to give accurate answers.
Milestone 4: Fine-Tuning and Systematic Evaluation
RAG helps fill in knowledge gaps, but sometimes you need the model to use a certain style, follow a strict JSON format, or do a special task. That is when fine-tuning is needed.
I learned about Parameter-Efficient Fine-Tuning (PEFT) methods, especially LoRA (Low-Rank Adaptation). These let me fine-tune big models on regular hardware by only changing a small part of the model’s weights.
To learn fine-tuning, I worked with an open-source base model (Llama 3) and trained it to answer technical questions in a clear, direct way. I used QLoRA with the Unsloth library, which made it efficient enough to train on a free-tier GPU.
Milestone 5: APIs, Local Models, and AI Agents
The last part of my framework was moving from just generating text to building systems that can take action. I learned how to run local models like Llama and Mistral on my own computer, which meant I had to understand quantization, making model weights smaller so they fit in limited RAM.
Next, I started building AI Agents. These go beyond LLMs by letting them use tools, connect to APIs, run code, or search the web to solve complex problems on their own.
To learn about AI Agents, I built a system with several agents using CrewAI. This helped me move past single-prompt LLM apps and design setups where different agents work together to finish a task.
Continue Learning: LLMs and Generative AI
If you want to keep learning, my book, Hands-on GenAI, LLMs and AI Agents, offers a practical, project-based way to explore Generative AI, LLMs, RAG, and AI agents. It is meant to help you turn what you learn into real projects.
If you prefer a structured course, I suggest Generative AI with Large Language Models by DeepLearning.AI and AWS. It covers how LLMs work, the Generative AI process, fine-tuning, evaluation, and hands-on ways to build LLM-powered apps.
With these resources, you can go from just learning LLM concepts to actually building useful Generative AI systems.
The Takeaway
Learning LLMs is not about chasing every new model on Hugging Face. The tools will change, but the core ideas, like attention, vector math, retrieval pipelines, and careful evaluation, will stay the same.
Here is my advice for anyone learning GenAI: Stop watching endless tutorials. Pick a dataset, find a problem you want to solve, open your code editor, and start experimenting. You learn the most when your code breaks and you have to fix it yourself. Keep at it, focus on building, and progress will come.
I hope you found this article on my LLM learning framework helpful. For more AI and machine learning tips, feel free to follow me on Instagram.





