Bootcamp · Part 1 · Student notes

Understanding the LangChain Ecosystem

Before writing a single line of code — what LangChain actually is, how it relates to LangGraph / LangSmith / Deep Agents, and why the framework looks the way it does today.

Lang family map Agent vs harness 2022 → 2026 timeline Self-check

Why this map matters

Skipping this step is the single biggest reason people get confused later — they start writing code without a mental map of where that code fits.

This page has no code to run. Treat it as the map you’ll keep referring back to for the rest of the course.

1. The “Lang” family: four products, four jobs

If you’ve searched anything about LangChain online, you’ve probably already run into posts titled something like “LangChain vs LangGraph vs LangSmith — Which One Should I Use?” That confusion exists for a simple reason: the LangChain team builds four different products that share the same first word, but solve four completely different problems.

None of these four tools are competitors. You don’t “pick one.” You use as many of them as your project actually needs.

Foundation

LangGraph

A low-level orchestration framework — the engine underneath everything else. Fine-grained control over flow: branching, loops, persistence (state between steps), and durable execution (pause / resume long-running work).

Most people building agents will never touch LangGraph directly at first — LangChain is built to hide that complexity until you need it.

This course

LangChain

Provides create_agent: a highly configurable harness for building agents quickly. Built on top of LangGraph, so you get durable execution, persistence, and human-in-the-loop without learning LangGraph’s internals first.

This is the product the entire course is built around, starting from Part 2.

Batteries included

Deep Agents

A layer on top of LangChain’s create_agent. Where create_agent gives you a customizable but empty harness, Deep Agents ships planning tools, a virtual filesystem, and sub-agent spawning — pre-wired.

Reach for it when you want to skip assembling those capabilities yourself. Covered properly in a later module.

Observability

LangSmith

Not something you “build an agent with.” It’s an observability and evaluation platform — it watches agents (and, via OpenTelemetry, almost anything else) and shows exactly what happened during a run.

Why LangSmith exists

With a normal Python script, if something goes wrong you read the stack trace and the code. An agent is different — it decides what to do at runtime, based on a conversation with itself (calling tools, reasoning about results, calling more tools). You cannot “read the code” to know what an agent actually did on a specific run, because the code only describes what it could do, not what it did on that call.

LangSmith records a trace — a complete, timestamped record of every model call, every tool call, and every decision, in order. When something goes wrong, you don’t guess. You open the trace and read exactly what happened.

Two environment variables turn tracing on:
LANGSMITH_TRACING=true LANGSMITH_API_KEY=your-key-here
That’s the entire setup cost. We’ll turn this on and look at a real trace in a later module.
Cost note: LangSmith’s free Developer tier includes 5,000 traces per month as of 2026 — more than enough for learning and personal projects. Paid tiers matter once you’re running production traffic.

“LangChain’s agents are built on top of LangGraph. This allows us to take advantage of LangGraph’s durable execution, human-in-the-loop support, persistence, and more.” — official docs

2. The single most important sentence

The official LangChain documentation opens with this framing — worth memorizing:

An agent is a model calling tools in a loop until a given task is complete.
A harness is everything around that loop.

Unpack both halves

The model is the raw language model — GPT, Claude, Gemini, whatever you plug in. It is extraordinarily capable at reasoning, but on its own it has no ability to actually do anything. It doesn’t know what tools exist. It has no instructions on how to behave in your application. It can’t check anything outside of what it already knows.

The harness is everything that turns that raw capability into something useful:

  • The system prompt — instructions on how the agent should behave
  • The tools — what it’s actually allowed to reach for and use
  • The middleware — checkpoints that shape behavior at every step (covered in depth starting in Part 8)

create_agent is that harness. When you call create_agent(model=..., tools=..., system_prompt=...), you are configuring the harness around a model — not building a new model.

Why this distinction matters: almost everything you’ll learn for the rest of this course — RAG, memory, multi-agent systems, database agents — is just a different configuration of the harness around the same underlying model. The model doesn’t change. What changes is what you give it access to, and what rules govern how it uses that access.

The three tiers, precisely

LangGraph
Build the harness from raw parts yourself. Maximum control, most effort.
LangChain
create_agent gives you a pre-configured, highly customizable harness. This is what the rest of this course uses.
Deep Agents
create_deep_agent gives you a harness that already includes planning, a filesystem, and sub-agent spawning, pre-wired.

All three stand on the same LangGraph engine. You are not “avoiding” LangGraph by using LangChain — you’re standing on it; you just don’t need to look at it directly for most of this course.

3. A real timeline — not “it’s changed a lot”

Online tutorials span several years, and a huge amount is outdated — not because it was wrong when written, but because the framework went through a genuine architectural overhaul. Knowing the timeline lets you judge whether something you’re reading is current.

Oct 2022

LangChain launches. Two core ideas: LLM abstractions, and “Chains” — predetermined sequences of computation (e.g. a RAG chain: retrieve documents, then generate an answer).

Dec 2022

First general-purpose agents, based on the ReAct paper (Reasoning + Acting). The model generates JSON representing a tool call, and LangChain parses that JSON by hand.

Feb 2024

LangGraph is released — the low-level orchestration layer that had been missing. Adds streaming, durable execution, short-term memory, and human-in-the-loop support.

Oct 2024

LangGraph becomes the preferred way to build anything beyond a single model call. Most of the old LangChain chains and agents are marked deprecated.

Oct 20, 2025 — LangChain v1.0

One unified agent abstraction, built on LangGraph, replaces essentially everything that came before. Old code still runs only if you deliberately install the separate langchain-classic package.

Mar 15, 2026

Deep Agents is released — the batteries-included harness described above.

Practical takeaway: for two years (2022–2024), building an agent meant hand-parsing JSON into tool calls — what classes like AgentExecutor and functions like initialize_agent do. That approach didn’t scale well, which is why LangGraph was built. In October 2025, everything unified into the single create_agent abstraction this course teaches.
If you see a 2026-dated tutorial using AgentExecutor, it is almost certainly outdated — not wrong at the time, just written before the ground moved. Importing AgentExecutor from langchain raises an ImportError because that functionality now lives in langchain-classic, kept apart so the main v1.0 package stays clean.

4. Quick self-check

Before moving to Part 2, you should be able to answer these without looking back. Click a question to reveal the answer.

  • LangChain’s create_agent — or Deep Agents if you want batteries-included.
  • LangSmith.
  • “tools”, “loop”.
  • AgentExecutor was the pre-v1.0 approach; anything using it was written before October 2025’s unification into create_agent.

Tip: try answering aloud before opening each answer.

Next up

Part 2 — Environment Setup

That’s where we actually start writing code.