Whetstone.
All courses
langchainIntermediate

LangChain Foundations

This mirrors foundation-introduction-to-langchain-python, the course the LCAE exam guide names first for the Build domain. Three modules, exactly as the official outline runs them: create an agent (models, tools, short-term memory, multimodal messages), make it advanced (MCP, state versus context, multi-agent), then make it production-ready (middleware, long conversations, human in the loop, dynamic agents). Build is 10 of the 40 questions and this is the larger of its two named sources. Python-first, because the official course is Python-only, with the TypeScript divergences flagged wherever they would bite you.

Start the course 16 lessons 240 min
LFCrash course
Curriculum

16 lessons across 4 modules

01Before You Build1 lessons · 12 min
02Create Agent5 lessons · 73 min
03Advanced Agent4 lessons · 61 min
04Production-Ready Agent6 lessons · 94 min
Capstone

Specify one agent that exercises every parameter, then defend each choice against the default

Sixteen lessons introduced roughly twenty named things. The exam will not ask you to recite them. It will hand you a scenario and ask which one you reach for, which is a completely different skill, and this is where you practise it.

The task

One scratch file. No cloud account, no API key, no wifi. Specify a single agent, in comments and pseudo-Python, that legitimately needs every one of the following, and write one sentence per choice saying what breaks if you leave the default alone.

The scenario, so you are not inventing one: an assistant that reads a shared inbox, answers routine mail itself, drafts replies to anything financial for a human to approve, pulls invoice PDFs out of attachments, looks up account history through a remote tool server you do not own, and runs continuously for a working week on one thread.

What the specification must contain

  1. The model line. A provider-prefixed string or an instance, and one sentence on why you picked that form. If your reason is “the string is shorter”, say so honestly, it is a legitimate reason.
  2. Every tool, with the docstring you would actually write. The docstring is the contract the model reads, so a lazy one here is a real defect, not a style note.
  3. State versus context, decided per field. List every piece of data the agent touches and put each one in exactly one of state_schema, context_schema, or store. The invoice PDFs are a deliberate trap; think about which of the three survives what.
  4. The middleware array, in order, with a written trace of which hook fires when for one full turn. Include at least one wrap_* hook and say why an after_* hook could not have done that job.
  5. The approval policy, expressed as an interrupt_on mapping, naming which of the four decisions each gated tool allows and why the ones you left out are the ones you left out.
  6. The compression strategy for a week-long thread, with the trigger and keep values written as ContextSize tuples. Do not write “it summarises automatically”, because on a plain create_agent it does not.

The bar

Every number and every default in the document is either one you can name and source, or one you deliberately overrode with a reason attached. Nothing appears because it felt about right.

And one honesty check at the end, worth more than the rest of the exercise: go back through and mark every place you wrote something you are only fairly sure about. That list is your revision plan for the morning of the exam, and it is more useful than re-reading the lessons you already found easy.