Agents and orchestration
Rewritten for LangChain/LangGraph 1.0 (both GA October 2025).
Core
| # | File | Covers |
|---|---|---|
| 01 | 01_what_is_an_agent.md | the definition that matters, and the ladder from single call to multi-agent |
| 02 | 02_the_agent_loop.md | ReAct, termination, loop detection, context growth |
| 03 | 03_langchain_langgraph.md | 1.0 middleware and durable execution |
| 04 | 04_multi_agent_patterns.md | topologies, handoffs, why it’s usually the wrong first answer |
| 05 | 05_durable_execution_hitl.md | checkpointing, approval gates, LangGraph vs a workflow engine |
| 06 | 06_agent_protocols.md | MCP vs A2A, and the governance gap |
| 07 | 07_agent_failure_modes.md | what actually breaks, and how to test a non-deterministic system |
Tools and structured output
| # | File | Covers |
|---|---|---|
| 08 | 08_function_calling_and_structured_output.md | schemas, tool definitions |
| 09 | 09_llm_json_validation.md | validating model output |
| 10 | 10_agent_patterns_advanced.md | advanced patterns |
| 11 | 11_chatbot.md | worked chatbot design |
| 12 | 12_pydantic_ai.md | the type-safe alternative framework |
The three answers worth having
An agent is an LLM that decides its own control flow. If your code fixes the sequence, it’s a workflow — and determinism is a feature. Walk the ladder (single call, chain, router, bounded tool loop) before reaching for autonomy.
Durable execution is what makes LangGraph more than a nicer loop. Every node transition is checkpointed, so a run survives restarts, pauses for hours awaiting approval, and can be rewound for debugging. An agent becomes a resumable process rather than a function call.
Multi-agent compounds unreliability. Five agents at 90% each is roughly 59% end-to-end. Use it for context isolation, genuine parallelism or privilege separation — not because a task has several parts.