<overview>
The LangChain ecosystem is split into focused, independently-versioned packages. Understanding which packages you need — and their version constraints — prevents incompatibilities and keeps upgrades predictable.
Key principles:
- LangChain 1.0 is the current LTS release. Always start new projects on 1.0+. LangChain 0.3 is legacy maintenance-only — do not use it for new work.
- langchain-core is the shared foundation: always install it explicitly alongside any other package.
- langchain-community (Python only) does NOT follow semantic versioning; pin it conservatively.
- LangGraph vs Deep Agents: choose one orchestration approach based on your use case — they are alternatives, not a required stack (see Framework Choice below).
- Provider integrations (model, vector store, tools) are installed separately so you only pull in what you use.
</overview>
Environment Requirements
<environment-requirements>
</environment-requirements>
Framework Choice
<framework-choice>
Pick one agent orchestration layer. You do not need both.
Both sit on top of langchain + langchain-core + langsmith.
</framework-choice>
Core Packages
<python-packages>
Python — always required
Python — orchestration (pick one)
Python — model providers (pick the one(s) you use)
Python — common tool & retrieval packages
These packages have tighter compatibility requirements — use the latest available version unless you have a specific reason not to.
langchain-community stability note: This package is NOT on semantic versioning. Minor releases can contain breaking changes. Prefer dedicated integration packages (e.g.
langchain-chroma,langchain-tavily) when they exist — they are independently versioned and more stable.
</python-packages>
<typescript-packages>
TypeScript — always required
TypeScript — orchestration (pick one)
TypeScript — model providers (pick the one(s) you use)
TypeScript — common tool & retrieval packages
@langchain/coremust be installed explicitly in yarn workspaces and monorepos — it is a peer dependency and will not always be hoisted automatically.
</typescript-packages>
Minimal Project Templates
<ex-langgraph-python>
<python>
Minimal dependency set for a LangGraph project (provider-agnostic).
</python>
</ex-langgraph-python>
<ex-langgraph-typescript>
<typescript>
Minimal package.json dependencies for a LangGraph project (provider-agnostic).
</typescript>
</ex-langgraph-typescript>
<ex-deepagents-python>
<python>
Minimal dependency set for a Deep Agents project (provider-agnostic).
</python>
</ex-deepagents-python>
<ex-deepagents-typescript>
<typescript>
Minimal package.json dependencies for a Deep Agents project (provider-agnostic).
</typescript>
</ex-deepagents-typescript>
<ex-with-tools-python>
<python>
Adding Tavily search and a vector store to a LangGraph project.
</python>
</ex-with-tools-python>
<ex-with-tools-typescript>
<typescript>
Adding Tavily search and a vector store to a LangGraph project.
</typescript>
</ex-with-tools-typescript>
Versioning Policy & Upgrade Strategy
<versioning-policy>
Breaking changes only happen in major versions (1.x → 2.x) for all semver-compliant packages. Deprecated features remain functional across the entire 1.x series with warnings.
Prefer dedicated integration packages over langchain-community. When a dedicated package exists (e.g. langchain-chroma instead of langchain-community's Chroma integration), use it — dedicated packages are independently versioned and better tested.
Community tool packages (Tavily, vector stores, etc.) should be kept at latest unless your project requires a locked environment. These packages frequently release compatibility fixes alongside LangChain/LangGraph updates.
</versioning-policy>
Environment Variables
<environment-variables>
All keys are read from the environment at runtime. Set only the keys for services you actually use.
</environment-variables>
Common Mistakes
<fix-legacy-version>
Never start a new project on LangChain 0.3. It is maintenance-only until December 2026.
</fix-legacy-version>
<fix-community-unpinned>
langchain-community can break on minor version bumps — it does not follow semver.
Also consider switching to the equivalent dedicated integration package if one exists (e.g. langchain-chroma instead of the community Chroma integration).
</fix-community-unpinned>
<fix-community-tool-outdated>
Community tool packages like langchain-tavily and vector store integrations release compatibility fixes alongside LangChain updates. Using an old pinned version can cause import errors or broken tool schemas.
</fix-community-tool-outdated>
<fix-community-import-deprecated>
Many tools that used to live in langchain-community now have dedicated packages with updated import paths. Always prefer the dedicated package import.
To find the current canonical import for any integration, search the integrations directory: https://python.langchain.com/docs/integrations/tools/
Each entry shows the correct package and import path. If a dedicated package exists, use it — the community path may still work but is considered legacy.
</fix-community-import-deprecated>
<fix-core-not-installed>
<typescript>
@langchain/core is a peer dependency — it must be in your package.json, especially in monorepos.
</typescript>
</fix-core-not-installed>
<fix-python-version>
<python>
Python 3.9 and below are not supported by LangChain 1.0.
</python>
</fix-python-version>
<fix-node-version>
<typescript>
Node.js below 20 is not officially supported.
</typescript>
</fix-node-version>

