Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
AI Engineer Agentic Track: The Complete Agent & MCP Course
Bestseller
Highest Rated
Rating: 4.7 out of 5(43,661 ratings)
351,934 students

AI Engineer Agentic Track: The Complete Agent & MCP Course

Master AI Agents in 30 days: build 8 real-world projects with OpenAI Agents SDK, CrewAI, LangGraph, AutoGen and MCP.
Last updated 6/2026
English

What you'll learn

  • Project 1: Career Digital Twin. Build and deploy your own Agent to represent you to potential future employers.
  • Project 2: SDR Agent. An instant business application: create Sales Representatives that craft and send professional emails .
  • Project 3: Deep Research. Make your own version of the essential Agentic use case: a team of Agents that carry out extensive research on any topic you choose.
  • Project 4: Build a Stock Picker Agent in minutes with CrewAI—automate your search for investment gems!
  • Project 5: Deploy your own 4-Agent Engineering Team—manage, build, and test software apps with CrewAI and Coder Agents in Docker!
  • Project 6: Build your own version of OpenAI’s Operator Agent—your Sidekick works with you inside your browser via LangGraph!
  • Project 7: Agent Creator—an Agent that builds and launches new Agents using AutoGen, unlocking endless AI possibilities!
  • Project 8: Capstone—build a Trading Floor with 4 Agents making autonomous trades, powered by 6 MCP servers and 44 tools!

Course content

6 sections145 lectures21h 36m total length
  • Day 1 - Build Your First Autonomous AI Agent with n8n (No-Code Demo)14:30

    If you want to learn:


    - How do I build my first AI agent in just a few minutes without writing code?

    - What is an AI agent and what does "autonomous" actually mean in practice?

    - How do you build agent workflows with the no-code n8n platform?

    - How do you give an LLM tools like stock lookups and Google Sheets access?

    - Which model should I pick for my agent — OpenAI, Gemini, or OpenRouter?

    - What will the 6 weeks of this agentic AI course actually cover?


    Then this lecture is for you!


    In this hands-on lecture, you'll dive straight into the action and build your very first AI agent alongside instructor Ed Donner, the opening lecture of the six-week agentic AI track on building AI agents with code. Rather than starting with dry introductions, Ed gets you building immediately using n8n, a low-code/no-code platform where you drag and drop to assemble agent workflows. You'll sign up at n8n.io, create your first workflow from scratch, and wire up an AI agent node powered by an LLM — you can choose OpenAI, Gemini, or OpenRouter as your model provider, plus simple memory so your agent remembers the conversation.


    From there, the magic happens. You'll equip your agent with tools — the MarketStack tool to look up live stock prices, plus Google Sheets tools to read from and write to an Investments spreadsheet. Ed demonstrates true autonomy as the agent independently decides which tools to call, calculates the value of a stock portfolio, and even autonomously buys shares of SPY and BND to rebalance the portfolio, editing the Google Sheet on its own. This brings to life the core definition you'll return to throughout the course: an AI agent is an LLM calling tools in a loop to achieve a goal.


    Crucially, Ed explains that while this n8n demo is a great visual introduction, this course is about building agents through code, not drag and drop — you'll be writing Python, installing the right libraries, working with API keys, and going far deeper than any builder allows. By the end, you'll have built and run your first AI agent, witnessed agentic autonomy firsthand, and understood exactly why coding agents in Python unlocks the real power ahead in this multi-agent, agent SDK-driven journey.


  • Day 1 - Course Roadmap: 6 Weeks, 8 Projects in Agentic AI Engineering13:18

    If you want to learn:


    - What does the full 6-week agentic AI course roadmap look like?

    - Which agent frameworks will I learn — OpenAI Agents SDK, CrewAI, LangGraph?

    - What is the difference between building agents with code and using coding agents?

    - Is this AI agent course right for me as a beginner or experienced engineer?

    - What are the 8 hands-on projects I'll build across the course?

    - How does this agentic track fit with Ed Donner's other AI courses?


    Then this lecture is for you!


    In this hands-on lecture, you'll get the complete roadmap for the six-week agentic AI journey ahead, guided by instructor Ed Donner. This course is about building AI agents with code — covering the theory of agents, design patterns and MCP, the major agent frameworks, and real commercial projects. Ed walks you week by week: week one is Foundations, ending by deploying a personal digital twin career agent; week two is the OpenAI Agents SDK, his favorite agent SDK, used to build an automated sales rep and a deep research app; week three is CrewAI for a stock picker and an engineering team; week four is LangGraph and the Sidekick; week five is a rapid-fire tour of frameworks including Google ADK and AWS Strands; and week six is the model context protocol, MCP.


    Ed introduces himself — co-founder and CTO of AI startup Nebula.io, formerly a managing director at JP Morgan leading 300+ engineers — and explains the eight juicy projects you'll deliver, with the equity traders project as the grand finale. He clarifies how this AI Engineer Agentic Track fits alongside his other Udemy courses, including AI Builder (no-code n8n), AI Coder (using coding agents like Claude Code, Codex, and Cursor), AI Leader, and the Core and Production tracks.


    Whether you're a Python coder with a little experience, someone who has worked with LLMs, or a complete beginner facing a steeper learning curve, Ed explains exactly who this course suits and points to the self-study guides in the repo. By the end of this lecture, you'll understand the entire arc of the course, know which multi-agent projects and frameworks are coming, and be ready to build your first AI agent in Python with confidence.


  • Your Path to Becoming a Proficient AI Engineer3:42
  • Day 1 - Environment Setup Overview: UV, API Keys, Costs and GitHub Repo14:25

    If you want to learn:


    - How do I set up a Python environment for building AI agents?

    - What is UV and why is it the fastest Python package manager?

    - Do I have to pay for API keys, or can I use free models like Gemini and Ollama?

    - Where do I find the GitHub repo, guides, and labs for this agentic AI course?

    - What is the 5-step setup process for the agent development environment?

    - How do I avoid common .env file and API key mistakes?


    Then this lecture is for you!


    In this hands-on lecture, you'll tackle the all-important rite of passage of setting up your AI agent development environment in Python, guided by Ed Donner. The star of the show is UV, a blazingly fast and bulletproof Python package manager that makes environment setup quick and painless. Ed explains the sidebar of API costs up front: you can use OpenAI as he does for under $5 total, or go completely free using Gemini's free tier, OpenRouter's cheap and free models, DeepSeek, or local models through Ollama — all detailed in guide nine of the guides folder, so you never need to spend a penny.


    Ed orients you around the three pillars of course resources: the course website with links and videos, the GitHub repo at github.com/ed-donner/agents containing the all-important README and guides folder, and the labs themselves (Jupyter notebooks) which he keeps constantly updated. He shares hard-won mindset advice — stay patient when you hit obstacles, embrace experimentation as an AI engineer wearing both software engineer and data scientist hats, and reach out to him anytime via Udemy or email.


    Most importantly, Ed lays out the five-step setup process you'll follow: install Cursor (or another IDE), clone the Git repo, use UV to set everything up, configure OpenAI or an alternative provider, and create your .env file with API keys before launching. He warns about the classic pitfall of misspelling OPENAI_API_KEY in your file. By the end of this lecture, you'll know exactly how to install your tooling and prepare a clean, reproducible environment for building your first AI agent in Python with UV.


  • Day 1 - Windows Setup: Install Cursor, Git, Clone the Repo and Run UV16:20

    If you want to learn:


    - How do I set up my Windows PC for an agentic AI coding course?

    - How do I install Cursor, Git, and UV on Windows?

    - What are the common Windows gotchas like the 260-character path limit?

    - How do I clone the agents GitHub repo and run uv sync on a PC?

    - Which Cursor extensions (Python and Jupyter) do I need to install?

    - How do I open a PowerShell terminal in Cursor and check my installs?


    Then this lecture is for you!


    In this hands-on lecture built specifically for Windows PC users, you'll walk through the complete environment setup for the agentic AI course step by step with Ed Donner. Ed begins with four Windows-specific gotchas to watch out for: script permission errors, antivirus/VPN/firewall interference, the evil Windows 260-character path limitation, and installing Microsoft Build Tools (needed by the CrewAI week). He shows you exactly how to handle each so your AI agent development environment runs smoothly.


    You'll then complete the five-step install process. First, download and install Cursor from cursor.com — the IDE that's a fork of VS Code — and sign in with the free Hobby plan or Pro. Next, open a PowerShell terminal (Control + backtick), check whether Git is installed with git --version, and create your projects folder using mkdir before cloning the agents repo from GitHub. Ed shows you how to open the agents folder correctly as your Cursor project and install the two key extensions: the Python extension from AnySphere and the Jupyter extension from Microsoft.


    Finally, you'll meet the wonderful UV. Ed walks you through installing UV, running uv --version and uv self-update, and then the magic uv sync command — which installs the right version of Python, all the project dependencies, and builds a .venv virtual environment, all in a couple of minutes. By the end of this lecture, your Windows PC will be fully configured with UV, Cursor, and the agents repo, ready to build your first AI agent in code.


  • Upgrade to the AI Engineer Agentic Track2:08
  • Day 1 - Mac Setup: Install Cursor, Git, Clone the Repo and Run UV19:50

    If you want to learn:


    - How do I set up my Mac for an agentic AI coding course?

    - How do I install Cursor, Git, and UV on macOS?

    - Do I need Xcode developer tools to code AI agents on a Mac?

    - How do I clone the agents GitHub repo and run uv sync on a Mac?

    - Which Cursor extensions (Python and Jupyter) should I install?

    - How do I open a terminal in Cursor and check Git is installed?


    Then this lecture is for you!


    In this hands-on lecture built specifically for Mac users, you'll set up your complete AI agent development environment in Python alongside Ed Donner, a lifelong Mac person. Ed starts with the Mac essentials: install the Xcode developer tools if you've never coded on your Mac before (just the developer tools, not the full Xcode), and keep an eye out for VPN, firewall, or antivirus software that could interfere with installation.


    You'll then complete the five-step install journey. First, download and install Cursor from cursor.com by dragging it into Applications — Cursor is a fork of VS Code, and the free Hobby plan works perfectly for this course. Next, open a terminal in Cursor (Control + backtick), confirm Git is installed with git --version (it ships by default on Macs), then use pwd and mkdir to create your projects directory before cloning the agents repo from GitHub. Ed shows you how to open the agents folder correctly as your Cursor project and install the Python extension from AnySphere plus the Jupyter extension from Microsoft.


    Finally, you'll meet UV, the superfast Python package manager. Ed walks you through installing UV with a single command, verifying it with uv --version and uv self-update, and then running the magical uv sync from the agents project root — which checks your Python version, installs an isolated version if needed, and pulls all dependencies into a .venv folder in just minutes. By the end of this lecture, your Mac will be fully configured with UV, Cursor, and the agents repo, ready to build your first AI agent in Python.


  • Day 1 - Set Up Your OpenAI API Key and .env File for the First Lab18:45

    If you want to learn:


    - How do I set up an OpenAI API key and account for building AI agents?

    - What is the difference between the OpenAI API and ChatGPT?

    - How do I add billing credits and create an organization-level API key?

    - How do I create a .env file and store my OpenAI API key safely?

    - How do I select the right kernel and run my first Jupyter notebook cell?

    - Can I use Gemini, OpenRouter, or Ollama instead of OpenAI?


    Then this lecture is for you!


    In this hands-on lecture, you'll set up your OpenAI account and API key so you can start building AI agents in Python, guided step by step by Ed Donner. Ed first clears up a common confusion: the OpenAI API is fundamentally different from ChatGPT — ChatGPT is an end-user product, while the API is for us developers. If you'd rather use Gemini, OpenRouter, or Ollama locally, guide nine has you covered, but this lecture follows the OpenAI path.


    You'll head to platform.openai.com, create an account, set up your organization, and add the $5 minimum billing credit (which you likely won't even spend across the whole course). Ed then walks you through creating an organization-level API key with full permissions via the API keys settings page, copying it carefully to your clipboard — stressing that even a tiny copy mistake will break everything later. Back in Cursor, you'll right-click to create a .env file, type OPENAI_API_KEY= exactly (a very common misspelling trap), paste in your key starting sk-proj-, and crucially remember to save the file.


    Finally, Ed introduces your first lab in the 1_Foundations folder. You'll meet Jupyter notebooks, learn that cell execution order matters, select the correct .venv Python kernel built by UV, and run your first cells to load the .env file and confirm your OpenAI API key exists. By the end of this lecture, your OpenAI API access will be fully configured and you'll be ready to make your first real call to an LLM in code.


  • Day 1 - Your First OpenAI API Call and Chaining LLM Calls in Python13:49

    If you want to learn:


    - How do you make your first OpenAI API call in Python?

    - What is the messages format (list of dictionaries) the OpenAI API expects?

    - How do I call openai.chat.completions.create and read the response?

    - What does it mean to chain together multiple LLM calls?

    - How do I take one LLM's output and feed it into the next LLM call?

    - What's the difference between gpt-nano, gpt-mini, and the full GPT model?


    Then this lecture is for you!


    In this hands-on lecture, you'll make your very first OpenAI API call in Python alongside Ed Donner, completing the week one day one lab. Ed shows you the exact format the OpenAI API expects — a Python list of dictionaries, where each message has a role (like user) and content. You'll build a simple messages object asking the model to "tell me a fun fact," then call openai.chat.completions.create, passing in the model (gpt-nano) and your messages, and read the reply from response.choices[0].message.content. That's your first real API call to OpenAI in the cloud for this course.


    From there, Ed takes you a crucial step toward agentic AI: chaining together multiple LLM calls where the output of one becomes the input to the next. You'll prompt OpenAI to generate a hard IQ-style question, capture that question, then send it to a more capable model (gpt-mini) to answer, and finally pass both question and answer to a third model acting as an evaluator to judge whether the answer is correct. Along the way you'll see how to display formatted markdown output in Jupyter and how Cursor's autocomplete speeds up writing code.


    This is your first taste of orchestrating LLMs — taking one model's output and feeding it forward — which is the foundation of building an AI agent. Ed closes with an exercise to chain LLM calls into a new agentic business idea. By the end of this lecture, you'll be able to confidently make and chain OpenAI API calls in Python, the essential building block behind every first agent you'll create in this course.


  • Day 2 - What Is an AI Agent? Definitions, Workflows vs Agents Explained11:34

    If you want to learn:


    - What is an AI agent, and why is there no single agreed definition?

    - What are the three main definitions of an AI agent?

    - What does "an LLM with tools in a loop to achieve a goal" really mean?

    - What is the difference between a workflow and an agent in an agentic system?

    - How does an LLM actually "control the workflow" of an agentic AI system?

    - Why do production agentic systems often lean toward workflows over open-ended agents?


    Then this lecture is for you!


    In this lecture, you'll finally get a clear answer to the question at the heart of this course: what is an AI agent? Ed Donner explains that despite the hype, there's no single agreed definition, but the field has converged on three. The first, a hand-wavy one from OpenAI and Sam Altman, frames agents as agentic AI systems that do work for you independently. The second, popularized by Anthropic and Hugging Face, defines an agent as a system where an LLM controls the workflow. The third, solidified by Simon Willison, is the one this course adopts: an agent is an LLM with tool use in a loop to achieve a goal.


    Ed grounds these definitions with a vital mental model — an LLM is just a data science model that predicts the most likely output tokens to follow an input; it's our code that interprets those tokens to control the workflow. He connects this directly back to the n8n demo from day one, which was exactly an LLM calling tools in a loop to achieve a goal.


    He then introduces Anthropic's seminal "Building Effective Agents" blog post and its key distinction between two kinds of agentic system: workflows (predefined, testable code paths) and agents (open-ended, where the LLM continuously decides what happens next). Using deep research, GPT Agent/Operator, and Claude Code as concrete use case examples, Ed shows where each fits — and why commercial teams often prefer workflow style systems for repeatability. By the end of this lecture, you'll understand the agentic AI design patterns vocabulary, the workflow-versus-agent distinction, and the precise definition of an AI agent that drives everything ahead.


  • Day 2 - Agentic AI Design Patterns: Chaining, Routing, Orchestrator8:35

    If you want to learn:


    - What are Anthropic's agentic design patterns for workflows and agents?

    - What is prompt chaining and how does it break a task into subtasks?

    - How does the routing pattern direct requests to specialized LLMs?

    - What is the difference between parallelization and the orchestrator-worker pattern?

    - What is the evaluator-optimizer pattern and "LLM as a judge"?

    - How is the open-ended agents pattern different from workflow patterns?


    Then this lecture is for you!


    In this lecture, you'll work through the agentic design patterns laid out in Anthropic's seminal "Building Effective Agents" blog post — five workflow patterns and one agents pattern — guided by Ed Donner. He stresses these agentic patterns are indicative, meant to provoke thinking rather than be rigid rules, but you'll see elements of them throughout the course as you go about building agentic AI systems.


    Ed walks through each pattern with clear diagrams. Prompt chaining divides a bigger task into smaller subtasks, taking the output of one LLM call into the next — exactly what you did on day one. Routing uses an LLM to decide which specialized LLM should handle an input, applying separation of concerns for best performance (think technical versus business support). Parallelization uses your code to farm a problem out to multiple LLMs and aggregate the results. The orchestrator-worker pattern looks similar but uses an LLM to dynamically break up the task and another to synthesize results, so an LLM controls the workflow. And the evaluator-optimizer pattern, commonly called LLM as a judge, has one LLM generate a solution and another evaluate and accept or reject it.


    Finally, Ed contrasts these five workflow patterns with the single agents pattern: an open-ended LLM running in a loop with feedback, no predefined path, continuing until it reaches its goal — foreshadowing the course's definition of an AI agent. By the end of this lecture, you'll have a practical mental toolkit of agentic AI design patterns that you can recognize and combine when building agentic AI systems in the weeks ahead.


  • Day 2 - Agentic AI Risks, Guardrails, Evals and Traps to Avoid16:39

    If you want to learn:


    - What are the biggest risks of agentic AI and how do I mitigate them?

    - How do observability, traces, and evals help monitor an agentic AI system?

    - What are guardrails and how do they keep agents within safe boundaries?

    - Why is starting from a business problem more important than "I need an agent"?

    - What does it mean to anthropomorphize LLMs and why is it a trap?

    - Why can't AI engineers blame hallucinations, and how should we handle them?


    Then this lecture is for you!


    In this lecture, you'll learn the risks and downsides of agentic AI before diving deeper into its benefits, taught by Ed Donner. The greatest risk, he explains, is unpredictability — an agentic system can take an unpredictable path, produce non-deterministic output, and incur varying cost each run. Ed presents two ways to mitigate this. First, monitoring through observability (capturing traces of every LLM call) and evaluate-ing performance with evals — including real-world business evals tied to revenue or leads, and LLM as a judge style evals using the evaluator-optimizer pattern. Second, guardrails: scaffolding code and tests around your agent workflow that check inputs and outputs to keep it safe and within intended boundaries.


    Ed then exposes two common traps. The first is being too solution-oriented — the "I need an agent for my business" call — when you should always start from a measurable business problem, using a vivid culture-agent and attrition example. The second is anthropomorphizing: rushing to draw box-and-arrow multi-agent architectures with human-like roles. Instead, start simple with one LLM, one prompt, one objective, measure against a business metric, then iterate your architecture only when it demonstrably improves performance.


    He closes with the major takeaways: build an agent because it solves a measurable problem, design your architecture because it improves the metric, and never blame hallucinations — as an AI engineer, aligning next-token prediction with a business outcome is your job. Ed also untangles the ambiguous term "agentic engineer." By the end of this lecture, you'll understand the real risks of building agentic AI systems and the practical guide to mitigating them.


  • Upgrade to the AI Engineer Agentic Track2:08
  • Day 3 - LLM Providers Compared: OpenAI, Claude, Gemini, Ollama, Groq10:52

    If you want to learn:


    - How do I orchestrate calls to many different LLMs from one place?

    - What are the three sizes of OpenAI, Claude, and Gemini models?

    - What's the difference between Groq with a Q and Grok with a K?

    - What is an inference provider and how does OpenRouter route LLM calls?

    - How do I run open source local LLMs on my own computer with Ollama?

    - Where can I compare LLM intelligence, speed, and cost?


    Then this lecture is for you!


    In this lecture, you'll get the complete lay of the land for orchestrating LLMs — the paid and open source models you'll call throughout this agentic AI course — guided by Ed Donner. Today is all action: you'll be making tons of LLM calls using cloud APIs and local models running on your own machine. Ed reminds you that you never need to spend a cent; local LLMs and free tiers work throughout, though using Ollama and free models calls for more experimentation and iteration.


    Ed maps out the model landscape. The three major providers — OpenAI (gpt-nano, mini, and the full model), Anthropic (Claude Haiku, Sonnet, Opus), and Google (Gemini Flash Lite, Flash, Pro) — each come in three sizes spanning cheap to powerful. He then covers other providers: DeepSeek, the inference provider Groq with a Q (very fast hardware for open source models), and Grok with a K (Elon Musk's LLM from x.ai). You'll also meet OpenRouter, which sits in the middle and lets you route requests to any provider with a single API key, and Ollama at ollama.com for running open source local LLMs locally.


    Ed points you to artificialanalysis.ai for comparing model intelligence, speed, and cost, while cautioning that benchmarks need a pinch of salt. By the end of this lecture, you'll understand the full ecosystem of APIs, local models, and providers you'll use to orchestrate local LLMs and cloud models — the framework of knowledge you need before the hands-on multi-agent orchestration lab that follows.


  • Day 3 - Set Up Multiple LLM API Keys and Generate a Question to Ask8:26

    If you want to learn:


    - How do I work effectively in Cursor with Jupyter notebooks and cells?

    - How do I load my .env file and verify all my LLM API keys at once?

    - How do I get one LLM to generate a challenging question for others to answer?

    - What's the best way to learn an LLM lab — typing code or running prepared cells?

    - How do I instantiate the OpenAI Python client and call chat.completions.create?

    - How do I package a prompt into the OpenAI messages format?


    Then this lecture is for you!


    In this hands-on lecture, you'll run your first proper LLM lab in Cursor alongside Ed Donner, opening lab two in the 1_Foundations folder for week one, day three. Ed shares his teaching philosophy — he prefers running and explaining prepared cells over typing everything live, encouraging you to come in, change, and experiment to make the notebooks your own, then contribute to community contributions via a PR. He reminds you that being an AI engineer means being a data scientist who experiments.


    The lab has two goals: getting you fluent with the OpenAI chat.completions.create API through lots of LLM calls, and trying out agentic patterns by gluing together multiple model calls. You'll start with imports, then load your .env file with Shift+Enter and run a test that checks each of your API keys — OpenAI, Anthropic, Google, DeepSeek, OpenRouter and more — confirming each exists and starts with the right prefix, with FAQ pointers for name errors and import errors.


    Then the fun begins: rather than picking the question yourself, you'll have an LLM generate a challenging, nuanced, non-mathematical question to test other models' intelligence. Ed hand-types the call — instantiating the OpenAI client, calling chat.completions.create with the strongest model, packaging the request into the messages list of dictionaries, and displaying the result as markdown. By the end of this lecture, you'll be comfortable working in Cursor, managing your keys, and calling LLMs — ready for the multi-agent orchestration of calling many models that follows.


  • Day 3 - Call 8 LLMs with the OpenAI-Compatible API: GPT, Claude, Gemini10:32

    If you want to learn:


    - How do I call multiple LLMs using OpenAI-compatible APIs?

    - How do I point the OpenAI Python client at Anthropic, Gemini, DeepSeek, and Groq?

    - What is a base URL and how do I override it for different providers?

    - How do I send the same question to eight different LLMs and collect their answers?

    - How do I use the OpenAI client to call Ollama local models on localhost?

    - How do I set reasoning effort when calling a model?


    Then this lecture is for you!


    In this hands-on lecture, you'll call a whole slew of LLMs using the OpenAI-compatible APIs that nearly every provider now offers, guided by Ed Donner. The key insight: each provider — Anthropic, Gemini, DeepSeek, Groq with a Q, OpenRouter, and even Ollama running locally — exposes an endpoint that expects the exact same format as OpenAI. So you can keep using the OpenAI Python client and simply override the base URL and API key to talk to any of them. Ed sets all the base URLs into constants, then creates client connections like `anthropic = OpenAI(base_url=..., api_key=...)`, a neat trick that lets one SDK reach many models.


    You'll then orchestrate eight LLMs answering the same challenging question. Tracking a list of competitors and answers, you'll call GPT-nano, Claude Sonnet, Gemini Flash Lite, DeepSeek, OpenAI's open source GPT-OSS 120B through Groq, and Kimi K2 from Moonshot AI via OpenRouter — calling chat.completions.create on each client, setting reasoning effort, and reading response.choices[0].message.content. Ed even points the OpenAI client at localhost to call Ollama local models, showing how the same code that calls the cloud can call local LLMs on your own computer.


    This is real multi-agent orchestration in action: one unified framework for multiple tool calls and model calls across providers. By the end of this lecture, you'll know how to use OpenAI-compatible APIs to orchestrate any LLM — cloud or local — from a single, consistent codebase.


  • Day 3 - Install Ollama and Run Local LLMs: Llama, GPT-OSS and Gemma10:25

    If you want to learn:


    - How do I install Ollama and run local LLMs on my own computer?

    - Which Ollama models are safe to run without breaking my machine?

    - How do I pull, list, and remove models with ollama pull, ls, and rm?

    - Why should I avoid huge models like Llama 3.3 70B and Llama 4?

    - What does the "cloud" suffix on an Ollama model actually mean?

    - How do I check Ollama is running on localhost port 11434?


    Then this lecture is for you!


    In this hands-on lecture, you'll learn to install Ollama and run open source local LLMs directly on your own computer, guided by Ed Donner. You'll head to ollama.com, download Ollama for Mac, Linux, or Windows, and browse the models page. Ed gives crucial sizing advice: stick to models around three gigabytes or less unless you have a beefy machine, and steer clear of large local models like Llama 3.3 (43GB, 70 billion parameters) and Llama 4, which would break most computers. He highlights solid starting points like Llama 3.2, smaller Qwen and Gemma variants from Alibaba and Google, and GPT-OSS 20B, while warning that any model ending in "cloud" actually runs in the cloud, not locally.


    You'll then master the Ollama command line. Ed shows ollama ls to list downloaded models, ollama serve to start it running, ollama pull to download a model, and ollama rm to remove one — plus the Jupyter trick of prefixing a cell with an exclamation mark to run shell commands. You'll confirm Ollama is alive by hitting localhost on port 11434 and listing your models at /v1/models.


    Finally, you'll put your local LLMs to the test, asking Llama 3.2 and the massive GPT-OSS 20B to answer the day's question through the same OpenAI-compatible API — watching Ollama slam the GPU as it runs using Ollama locally, then adding Gemma 3 as a ninth competitor. By the end of this lecture, you'll be able to install Ollama, manage models, and orchestrate local LLMs on your own hardware as part of your agentic toolkit.


  • Day 3 - LLM as a Judge: Rank Multiple LLMs with an Orchestration Flow10:00

    If you want to learn:


    - How do I use Python's zip and enumerate built-ins to process parallel lists?

    - How do I use an LLM as a judge to pick the best answer from many models?

    - How do I anonymize competitors so the judging LLM isn't biased?

    - How do I prompt an LLM to respond with structured JSON results?

    - Which agentic design patterns were combined in this multi-model lab?

    - How is LLM-as-a-judge used in real commercial agentic workflows?


    Then this lecture is for you!


    In this hands-on lecture, you'll conclude the multi-model lab by picking the winning LLM, guided by Ed Donner. You'll start with two handy Python built-ins: zip, which lets you iterate consistently through the competitors and answers lists together, and enumerate, which gives you both the index and the value so you can label each response. Ed uses these to anonymize the nine models as "competitor one" through "competitor nine," so the judging LLM can't be biased by knowing which provider produced each answer.


    Next, you'll build the judging prompt with F-strings, instructing an LLM to evaluate each response for clarity and strength of argument, rank them best to worst, and respond with JSON — a clean example of using agentic structured output. Ed chooses Grok with a K from x.ai as the impartial judge (branded as the most truth-seeking model), calls grok.chat.completions.create, then maps the ranked competitor numbers back to real model names to reveal the results. The open source Kimi K2 from Moonshot AI, run through OpenRouter, takes first place, followed by Claude Sonnet and Gemini.


    Ed reflects on how this lab combined two agentic patterns — one LLM generated the question, multiple LLMs answered, and a final LLM judged — and challenges you to identify them and extend the multi-agent workflow with a PR. He highlights the commercial power of this LLM as a judge pattern, used across multi-agent orchestration to improve output quality. By the end of this lecture, you'll know how to orchestrate many model calls and use clean Python code to crown the best.


  • Day 4 - The Agent Landscape: Frameworks, Runtimes, Tools and Builders15:43

    If you want to learn:


    - What are AI agents really, beyond the textbook definition?

    - What is the difference between AI builders, agent products, runtimes, and frameworks?

    - What is an agent framework and what does it actually do for you?

    - What is tool calling, MCP, and structured outputs in an agent framework?

    - Why does Anthropic recommend building your first agent without a framework?

    - Which agent frameworks will I learn — OpenAI Agents SDK, CrewAI, LangGraph, Google ADK?


    Then this lecture is for you!


    In this lecture, you'll discover what AI agents really are in practice, taught by Ed Donner on the epic day four of week one. Ed steps back to map the overhyped, immature agent landscape into four categories: AI builders (like n8n, ElevenLabs, OpenAI Agent Builder, CrewAI Studio) for non-coders; agent products (Claude Code, Cowork, Claude Design) that use agents; runtimes (AWS Bedrock Agent Core, Vertex AI Agent Engine) that execute agents in production; and agent frameworks — the focus of this course — where technical people build an AI agent with code.


    Ed peels back what an agent framework actually is: a library of utilities and abstraction layers that make it easier to chain LLM calls. He walks through the three things frameworks handle for you — orchestration (gluing LLM calls together), tool calling and MCP (giving an LLM new powers and using others' tools), and crafting inputs and interpreting outputs via structured outputs (having an LLM return a Python object). Together these let frameworks bake in the agent loop. He rattles off the frameworks you'll cover: OpenAI Agents SDK (his lightweight favorite), Google ADK, AWS Strands, the opinionated CrewAI, and the bulletproof LangGraph paired with LangChain.


    Crucially, Ed reveals the missing category: no framework at all. Echoing Anthropic's advice to start simple, this Foundations week has you build an AI agent from scratch in Python — hand-rolling your own agent loop with tools and no framework, so you truly understand how it works. By the end of this lecture, you'll grasp the whole agent ecosystem and be ready to build an AI agent loop yourself.


  • Day 4 - How Tool Calling Works: The Truth Behind AI Agent Autonomy8:55

    If you want to learn:


    - What are tools, and what is function calling for LLMs?

    - How does an LLM "call a function" on my computer if it only generates text?

    - How is tool calling really just prompting, JSON, and if statements?

    - How can I demonstrate tool calling using a plain ChatGPT prompt?

    - What does autonomy actually mean when an LLM "decides" what to do?

    - How does an agent loop work behind the scenes?


    Then this lecture is for you!


    In this lecture, you'll finally understand what tools really are and how function calling for LLMs works, demystified by Ed Donner. Tools are the essential idea behind agentic AI — they give LLMs new abilities beyond generating text, like looking up a stock price, running SQL, or editing a Google Sheet. Ed explains that tool calling, also called function calling, sounds magical: it feels like the LLM reaches into your computer and runs a function. But the reality is far more mundane and worth belaboring until it's crystal clear.


    Ed reveals the secret sauce: tool calling comes down to clever prompting, JSON, and basic if statements. The LLM never runs anything itself — it just generates tokens. Your code is what actually calls the tool, then calls the LLM again with the results. He proves this live in ChatGPT, writing a prompt that defines a "get ticket price" ability, then asking "how much to go to Paris?" and watching the model respond "get ticket price Paris." The real value is the LLM understanding that cost and price mean the same thing and crafting the right call — turning freeform natural language into discrete actions, a previously unsolved problem.


    He then runs an epic example where ChatGPT, told it can move north, east, south, or west, autonomously chooses "move north" — showing that autonomy is nothing more than how we prompt and interpret output. Finally, Ed previews the agent loop: software that repeatedly calls an LLM and runs tools based on the response. By the end of this tutorial, you'll understand tools, function calling, and autonomy from first principles, ready to build an AI agent from scratch in Python.


  • Day 4 - Start the Digital Twin: Read a PDF and Master System Prompts14:03

    If you want to learn:


    - How do I build an AI agent loop from scratch in Python without a framework?

    - How do I set up a digital twin project with my LinkedIn PDF and a summary file?

    - How do I read a PDF into text with PyPDF and load it into my agent?

    - What are system prompts, conversation history, and the illusion of memory?

    - How do I bring up a chat UI with Gradio for my agent?

    - Why must I keep my agent's files lowercase for deployment to Linux?


    Then this lecture is for you!


    In this hands-on lecture, you'll start building an AI agent loop from scratch in Python with no framework, kicking off the two-day digital twin project with Ed Donner. You'll do the groundwork in the twin subfolder, creating two files: linkedin.pdf (a PDF export of your LinkedIn profile) and summary.txt (a short note about yourself). Ed warns you to keep all filenames lowercase because you'll later deploy to a case-sensitive Linux box. You'll then use PyPDF to read the PDF and extract its raw text, and Gradio for the user interface — both loaded after setting up your .env variables and the OpenAI Python client.


    Ed then takes a foundational sidebar covering three building blocks for working with LLMs. The system prompt sets the overall framing and role. The conversation history is the series of user and assistant messages sent back and forth. And the illusion of memory explains that every LLM call is stateless — the model only appears to remember because you resend the full conversation history each time. He makes this concrete with code, showing how changing the system prompt turns a helpful assistant snarky, and how the model only knows your name if it's in the messages.


    This is real coding — hand-cranking the pieces of an AI agent from scratch in Python that will become your career digital twin, the resume of the future. By the end of this lecture, you'll have loaded your profile data, understood system prompts and memory, and be ready to add tool calling to your own build a Python agent.


  • Day 4 - Build a Chat UI with Gradio and Define Your First Agent Tool16:15

    If you want to learn:


    - How do I craft a system prompt for a digital twin AI agent?

    - How do I use markdown headings and F-strings to structure a system prompt?

    - How do I wrap an LLM call into a reusable chat function with message and history?

    - How does Gradio's chat interface call back into my Python chat function?

    - How do I write my first tool as a plain Python function?

    - What is the JSON schema that describes a tool to an LLM?


    Then this lecture is for you!


    In this hands-on lecture, you'll craft the system prompt for your digital twin AI agent and write your very first tool, guided by Ed Donner. Using F-strings and markdown headings, you'll build a structured system prompt with sections for role, context, and rules — telling the LLM it's a digital twin representing you on a website, injecting your summary and LinkedIn profile text, and setting rules to stay in character and never make up answers. Ed encourages you to treat this as a canvas to iterate on and make your own.


    Next, you'll package your OpenAI call into a reusable `chat` function that takes a message and history, constructs the full messages object (system prompt plus history plus latest message), calls openai.chat.completions.create, and returns the response. You'll then bring up an interactive chat screen with the fabulous Gradio package — Ed demonstrates how Gradio's chat interface simply calls your `chat` callback, first having it return "bananas" to show how the wiring works, then connecting the real LLM so your twin can answer interview-style questions in Python.


    Finally, you'll build your first tool: a plain Python function, record_email_tool, that appends an email to emails.txt, and you'll test it directly. Then comes the janky-but-essential part — writing the JSON schema that describes this function to the LLM, with its name, description, and the email parameter, wrapped into a tools list. Ed explains this is exactly the boilerplate that agent frameworks generate for you later. By the end of this lecture, you'll have a working chat AI agent UI and your first hand-written tool, ready to wire into your build an AI agent from scratch in Python.


  • Day 4 - Build the Agent Loop From Scratch: Tool Calling with a While Loop16:13

    If you want to learn:


    - How do I implement LLM tools with JSON and Python in an agent?

    - How do I detect when an LLM wants to call a tool using finish_reason?

    - How do I read tool_calls and arguments, then call the function in my code?

    - How do I turn an if statement into a while loop to build a real agent loop?

    - How do I handle multiple tool calls when an LLM calls a tool several times?

    - What is the tool_call_id and why do I send tool results back to the LLM?


    Then this lecture is for you!


    In this hands-on lecture, you'll implement LLM tools with JSON and Python and finally see the rubber meet the road on your AI agent loop, guided by Ed Donner. You'll rewrite the chat function to pass your tools (the JSON schema) into openai.chat.completions.create, then handle the response with a big if statement: when response.choices[0].finish_reason is "tool_calls", the LLM is asking to use a tool. You'll read message.tool_calls, pull out the function arguments (the email), call the function yourself in code, then append the result with its tool_call_id and call OpenAI a second time so the model can continue. Ed is honest that this is hacky, clunky JSON-and-if-statement plumbing — exactly the kind of work agent frameworks abstract away later.


    You'll test it live in Gradio: the agent records an email to emails.txt. Then Ed deliberately breaks it — asking it to record three emails at once triggers a red error, because the code assumed only one tool call. This sets up the key lesson: an agent is an LLM with tools in a loop. With two tiny changes — a for loop to handle multiple concurrent tool calls, and changing the if into a while loop — you transform tool calling into a true agent loop that keeps running until the LLM is done.


    Ed sets exercises to add an evaluator (a guardrail using the LLM-as-a-judge pattern) and apply this to your business. By the end of this tutorial, you'll have hand-cranked a complete AI agent from scratch in Python — tools, JSON, and a while loop — and truly understand how building AI agent loops works under the hood.


  • Day 5 - Context Engineering for AI Agents: Memory, Tools and RAG10:38

    If you want to learn:


    - What is the digital twin project and how does it become a personal career AI agent?

    - How do the four categories of agent offerings — builders, products, runtimes, frameworks — fit together?

    - What is context engineering and how is it different from prompt engineering?

    - What goes into an LLM's context window — tools, RAG, memory, structured output?

    - What is the difference between short-term and long-term memory in an AI agent?

    - What is agentic RAG and how do tools provide memory to an agent?


    Then this lecture is for you!


    In this lecture, you'll kick off the digital twin project — your personal career AI agent — and learn the hot topic of context engineering, guided by Ed Donner on the first yellow project day of the course. Ed opens with a recap of the big-picture agent landscape: the four categories of agent builders, products, runtimes, and frameworks, and the heart of agentic AI — tools, autonomy, and the agent loop you hand-cranked with a while loop, all leading to the definition of an AI agent as an LLM with tools in a loop to achieve a goal.


    The new concept is context engineering, which has replaced prompt engineering as the key skill. Drawing on Phil Schmid's influential blog post and his widely shared diagram, Ed walks through everything you pack into an LLM's context: the system prompt (instructions), the user prompt, available tools, structured output (a JSON schema the model must follow), RAG and agentic RAG (retrieving extra knowledge, increasingly via tools), and memory. He demystifies "memory" — short-term memory is just the conversation history and state, while long-term memory is extra information from prior conversations, typically surfaced through tools.


    Ed stresses these are loose, overlapping ideas, not a rigid formula: the right approach is to build a test set, evaluate performance, and experiment with how you organize context. By the end of this lecture, you'll understand context engineering as a capability central to building agentic AI, and you'll be ready to apply it as you build and deploy your digital twin career AI agent — the artificial intelligence resume of the future — later this week.


  • Day 5 - Add Tools to Your Digital Twin Agent with Pushover Notifications9:09

    If you want to learn:


    - How do I set up Pushover push notifications for my AI agent?

    - How do I get my Pushover user key and application API token?

    - How do I store PUSHOVER_USER and PUSHOVER_TOKEN in my .env file?

    - How do I send a push notification to my phone from Python?

    - How do I write tools that record a user's interest and unknown questions?

    - How do I write the JSON schema describing multiple tools to an LLM?


    Then this lecture is for you!


    In this hands-on lecture, you'll set up Pushover push notifications and build the tools for your digital twin AI agent, guided by Ed Donner in lab four. Pushover is a nifty, free-to-start product that sends push notifications straight to your phone — perfect for an agent you'll deploy on the internet, so it can tell you what's happening in the wild. You'll sign up at pushover.net, grab your user key (starting with U) and create an application to get your API token (starting with A), then store both in your .env file as PUSHOVER_USER and PUSHOVER_TOKEN, remembering to save.


    Ed shows how easy it is to send a notification: a small Python function builds a JSON payload with both tokens and the message, then calls requests.post — and your phone lights up. You'll then write two tools for your AI agent: one that records when a user is interested in getting in touch (capturing email, optional name, and notes), and another, record_unknown_question, that logs any question the twin can't answer so you can later improve its context. Both push the information straight to your phone.


    Finally, you'll write the janky-but-essential JSON that describes these two tools to the LLM — names, descriptions, and parameters like email, name, and notes — wrapped into a tools list. Ed notes how the OpenAI Agents SDK will soon generate all of this for you with a simple decorator, but writing it by hand now means you'll understand exactly what those frameworks produce. By the end of this lecture, your agent will be wired with real-world tools and push notifications, ready to build toward a deployed digital twin.


  • Upgrade to the AI Engineer Agentic Track1:36
  • Day 5 - Handle Multiple Tool Calls in Python with the globals Trick4:05

    If you want to learn:


    - How do I handle multiple tool calls in my AI agent?

    - How do I write a handle_tool_calls function that dispatches to the right function?

    - How do I iterate over tool calls and read the function name and arguments?

    - How does the Python globals() trick map a tool name to its function?

    - Why is using globals() to call functions unsafe for production agents?

    - How do I make tool dispatch elegant without a giant if statement?


    Then this lecture is for you!


    In this hands-on lecture, you'll learn to handle multiple tool calls cleanly in your digital twin AI agent, guided by Ed Donner. Because your twin now has two tools, you can't assume any tool call always maps to one function — so you'll write a dedicated handle_tool_calls function. Ed first shows the ugly-but-clear version: iterate over the tool calls coming back from the LLM, read the function name and arguments, then use an explicit if statement — if the LLM wants record_user_details, call it; if it wants record_unknown_question, call that — append the results, and return them. This is the plain Python mapping that connects an LLM's request to real action in your code.


    Then Ed shows the elegant version using Python's built-in globals(), which maps string names to actual functions. You can look up the function whose name the LLM requested and call it with its arguments — collapsing the clunky if statement into a clean dictionary lookup. He demonstrates calling record_unknown_question this way and watching the push notification fire on his phone.


    Importantly, Ed raises the safety question: using globals() trusts the LLM to only request tools you defined, but in theory it could name any global function like exec — so this approach isn't secure for a deployed agent. He previews that the production version will use a safer tool map instead. By the end of this lecture, you'll know how to dispatch multiple tool calls in your AI agent both ways, understand the security trade-offs, and be ready to assemble the full digital twin loop.


  • Day 5 - Build the Digital Twin Agent Loop and Test It Live in Gradio5:18

    If you want to learn:


    - How do I context-engineer the system prompt for my digital twin AI agent?

    - How do I load my LinkedIn profile and summary into the agent's context?

    - How do I write a chat function with a real while-loop agent loop?

    - How do I wire tools into openai.chat.completions.create and handle the responses?

    - How do I test my digital twin live in a Gradio chat interface?

    - How does the agent notify me when it records interest or an unknown question?


    Then this lecture is for you!


    In this hands-on lecture, you'll context-engineer your digital twin's system prompt and assemble the full AI agent loop, guided by Ed Donner. It's digital twin time: you'll load your LinkedIn profile and summary from the twin directory, then put on your context engineering hat to craft the system prompt. Ed turns earlier double negatives into positive instructions, adds explicit guidance to use the record-question tool when the twin doesn't know an answer, and stresses that experimentation is key — there's no single right prompt for your summary, LinkedIn, and chosen model.


    Then comes the all-important chat function. Ed walks through it line by line: it combines the system prompt, history, and user message, calls openai.chat.completions.create with the messages and your tools, and then runs the real agent loop — a while loop that keeps iterating as long as the LLM wants to call tools. Inside the loop, it gets the message, finds the tool calls, calls the handle_tool_calls function you wrote, extends the messages with the results, and calls OpenAI again, looping until the finish reason is no longer tool_calls and a final answer is returned.


    You'll test it live in Gradio. The twin handles greetings, answers questions about your skills, and when asked an off-topic question like "who's your favorite musician?", it both fires a push notification that it couldn't answer and politely redirects the user. When you share an email, it records your interest and notifies you. By the end of this lecture, you'll have a fully working digital twin AI agent with a genuine agentic loop, tools, and live push notifications.


  • Day 5 - Refactor the Digital Twin Agent into Python Modules and Run It9:43

    If you want to learn:


    - How do I turn my agent notebook into proper Python modules?

    - How do I separate concerns into context.py, tools.py, styles.py, and app.py?

    - When should I move from a Jupyter notebook to production Python modules?

    - How do I build a safer tool_map instead of using globals()?

    - How do I style a Gradio app with custom CSS using a coding agent?

    - How do I run my agent app with uv run app.py?


    Then this lecture is for you!


    In this hands-on lecture, you'll mature your digital twin AI agent from a notebook into proper Python modules, guided by Ed Donner. Ed explains the workflow: start in a Jupyter notebook for the scientific, experimenter's mindset, then once you're getting the results you want, productionize by organizing your code into separate modules with clear separation of concerns. He structures the twin into four modules and recommends you do the same.


    You'll tour each module. context.py reads in your LinkedIn profile and summary and builds the final TWIN_SYSTEM_PROMPT, with iterated rules including styling responses in markdown. tools.py holds the push notification logic, the two tool functions, their JSON blobs, and the handle_tool_calls function — now using a safer tool_map that explicitly maps tool names to functions instead of the risky globals() trick. styles.py defines CSS styling constants (which Ed had Claude Code write, since coding agents excel at front-end work), giving the agent a unique branded look. And app.py ties it all together: importing OpenAI and the other modules, setting the system prompt, defining the same chat function with its while-loop agent loop, and launching the Gradio chat interface with custom styles and example questions.


    Finally, you'll run it the right way with UV: open a terminal, cd into the twin folder, and run `uv run app.py`, which sets the virtual environment and runs the correct Python. The sharp, styled UI comes up, the agent answers questions, records interest, and fires push notifications. By the end of this lecture, your digital twin AI agent will be cleanly modularized, safer, and styled — ready to deploy live on the internet.


  • Day 5 - Deploy Your Digital Twin AI Agent to Hugging Face Spaces15:55

    If you want to learn:


    - How do I deploy my digital twin AI agent live on Hugging Face Spaces?

    - How do I create a Hugging Face account and a write-access access token?

    - How do I log in with hf auth login and verify with hf auth whoami?

    - How do I deploy a Gradio app with uv run gradio deploy?

    - How do I add my OpenAI and Pushover keys as secrets on a Hugging Face Space?

    - How do I embed my deployed agent in my own website?


    Then this lecture is for you!


    In this hands-on lecture, you'll take your digital twin AI agent live on the internet by deploying it to Hugging Face Spaces, guided by Ed Donner. Hugging Face, the great open source AI company, offers Spaces as a free place to run applications — originally built for Gradio apps, which makes it perfect for your twin. You'll start by creating a Hugging Face account at huggingface.co, then generate an access token with write permissions from your access tokens settings, and store it in your .env file as HF_TOKEN.


    Next, you'll authenticate from the Cursor terminal: run `uvx hf auth login --token` with your token, then confirm with `uvx hf auth whoami`. With login done, deploying is remarkably easy — from the twin directory, run `uv run gradio deploy` and accept the defaults: the space title, the app.py module, the free CPU Basic hardware, no secrets through the menu, and no GitHub action. Your Space is created and starts building.


    Because your .env file is never uploaded (the Space repo is public), you'll set your keys properly under Settings as secrets — not variables — adding openai-api-key, pushover-user, and pushover-token, then restarting the Space. Ed shows your digital twin running live, answering questions and firing push notifications from the cloud. He also shows how to embed the Space in your own website and how to delete it later. By the end of this lecture, you'll have deployed your first AI agent to production on Hugging Face Spaces — the resume of the future, live for anyone to interact with.


  • Day 5 - Build a Visible Agent Loop with Checklist Tools Like Claude Code13:07

    If you want to learn:


    - How do I build a more visible, tangible agent loop in Python?

    - How do coding agents like Claude Code create that ticking to-do checklist?

    - How do I use the rich console library for formatted terminal output?

    - How do I give an LLM checklist tools to plan and mark off steps?

    - How do I write create_checklist and mark_complete tool functions with JSON?

    - How does giving an agent checklist tools improve its planning and outcomes?


    Then this lecture is for you!


    In this hands-on bonus lab, you'll build a more visible and satisfying agent loop in Python to polish off week one, guided by Ed Donner in the 5_extra lab. The digital twin contained a real agent loop, but it ran quietly behind the scenes. Here, Ed makes the loop tangible by borrowing two ideas from tools like Claude Code and Codex: formatted terminal-style output, and the planning checklist that visibly ticks off tasks one by one. He reveals that this checklist effect is just a side effect of giving an LLM a tool to manage a to-do list.


    You'll use the rich console library for nicely formatted output, then manage two simple lists — a checklist of steps and a completed list of true/false flags — with helper functions get_checklist_report, create_checklist, and mark_complete that strike through finished items in green. Next comes the now-familiar pattern: writing the JSON that describes create_checklist and mark_complete to the LLM, wrapping them into a tools list, and writing a handle_tool_calls function that uses the globals() trick to dispatch calls. Then you'll build the loop function — calling openai.chat.completions.create with the tools and looping with a while loop until the LLM stops requesting tools.


    Finally, you'll watch it run: given a train-meeting word problem, the agent plans a five-item checklist, shows progress, marks each item off, and delivers the answer — the clearest visualization yet of an LLM with tools in a loop to achieve a goal. By the end of this lecture, you'll have hand-coded a vivid AI agent loop from first principles in Python, a joyful capstone to your building AI agent foundations.


Requirements

  • While it’s ideal if you can code in Python and have some experience working with LLMs, this course is designed for a very wide audience, regardless of background. I’ve included a whole folder of self-study labs that cover foundational technical and programming skills. If you’re new to coding, there’s only one requirement: plenty of patience!
  • The course runs best if you have a small budget for APIs, but it’s totally your choice. You can complete the entire course with no API spend. If you do wish to use frontier models, the typical spend would be under $5. You can choose to access more capabilities if you’re comfortable spending a little more.

Description

2026 is nothing short of a watershed moment for AI Agents. It has never been more important to be an expert with Agentic AI. And that is precisely the goal of this course: to equip you with the skills and expertise to design, build and deploy Autonomous AI Agents, opening up new career and commercial opportunities.


This is an intensive 6-week program to master Agentic AI. We start by building foundational expertise, connecting LLMs using proven design patterns. Then, each week, we upskill with new frameworks: OpenAI Agents SDK, CrewAI, LangGraph and Autogen. The course culminates with a full week on the remarkable opportunities opened up by MCP.


Above all, this is a hands-on course. I’m a big believer that the best way to learn is by DOING. So please prepare to roll up your sleeves! We’ll build 8 real-world projects; some are astonishing, some are intriguing, and some are quite surreal. But one thing’s for sure: all are powerful demonstrations of Agentic AI’s potential to utterly transform the business landscape.


So come join me on this comprehensive 6-week journey. By the end, you will have mastered Agentic AI. You will have expertise in all the major frameworks. You’ll be well-versed in the strengths and traps of Agentic AI. You’ll confidently unleash Autonomous Agents to solve real-world commercial problems. And along the way, you’ll have had a whole lot of fun with the astounding, groundbreaking technology that is Agentic AI.


Who this course is for:

  • Well, perhaps I’m biased, but I’d say: anyone and everyone! If you’re fascinated in the potential of Agents and hungry to have the skills to create powerful Agentic AI – then you’ve come to the right place. While it’s most suited to those with programming experience, I’ve designed the course to work for all backgrounds.