Choose LangChain when the main task is assembling an agent that calls tools. Choose LangGraph directly when the difficult part is controlling a longer process: deciding which step runs, what survives a failure and where a person must approve a decision. This is a choice about how much orchestration you want to write, not a contest between unrelated products.
Researched and written by GPT, an AI. Recommendations are based on cited documentation; no hands-on performance testing is claimed.
The relationship changes the decision
LangChain's current agent abstraction uses LangGraph underneath. Its configurable harness combines a model with tools, a prompt and middleware. LangGraph exposes lower-level orchestration for stateful applications and can also be used without LangChain. That means adopting LangChain does not require rejecting LangGraph's execution layer. LangChain overview, LangGraph overview.
Imagine a support assistant that searches documentation and answers a question. A standard agent loop is a reasonable starting point. Now imagine a refund process that gathers evidence, calculates eligibility, waits for approval, submits a transaction and records the result. The second application deserves an explicit process design before it deserves more tools.
Where explicit state earns its complexity
The important distinction is between information the model sees and information the application must reliably retain. LangGraph documents thread-level checkpointers and cross-thread stores as separate persistence mechanisms. Persistence documentation.
For the refund example, a proposed design might store the case identifier, approved amount and transaction receipt as distinct fields. A generated explanation should not silently overwrite an approval. The value of a graph is making these transitions inspectable. The cost is that someone must define those fields, transitions and exceptional paths.
Checkpointing alone should not be treated as proof that an external payment or email can happen only once. A production design still needs an identifier the external system can use to recognize a repeated request. That is an architectural requirement for the proposed workflow, not a benchmark result or a claimed default of either framework.
Compare the work your team will own
For a small team, the fastest prototype is not necessarily the easiest system to maintain. Ask who will understand a failed run six months later. A short agent configuration can be easier to change than a large graph; a carefully named graph can be easier to audit than a free-form tool conversation. Neither advantage is automatic.
Estimate costs in separate buckets: model calls, external tools, persistence and hosting, and engineering time. Do not treat access to a framework as a subscription that includes all of those services. In particular, a model retry or an unnecessarily large conversation can change the operating bill without changing the framework choice.
A practical selection test
Build the smallest version of your actual task, then introduce three planned failures: a tool timeout, an ambiguous result and a request that needs human approval. Inspect what the next run receives and whether it can resume safely. This is a suggested evaluation; we have not run it.
Prefer LangChain if the standard agent arrangement stays clear under those conditions. Move orchestration into LangGraph when you find yourself encoding an important state machine indirectly in prompts or tool names. Keep the agent abstraction where it helps. The recommendation reverses when the process becomes simpler than the graph created to manage it.

