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.
Environment Requirements
| Requirement | Python | TypeScript / Node |
|---|---|---|
| Runtime minimum | Python 3.10+ | Node.js 20+ |
| LangChain | 1.0+ (LTS) | 1.0+ (LTS) |
| LangSmith SDK | >= 0.3.0 | >= 0.3.0 |
Framework Choice
| Framework | When to use | Core extra package |
|---|---|---|
| LangGraph | Need fine-grained graph control, custom workflows, loops, or branching | langgraph / @langchain/langgraph |
| Deep Agents | Want batteries-included planning, memory, file context, and skills out of the box | deepagents (depends on LangGraph; installs it as a transitive dep) |
Both sit on top of langchain + langchain-core + langsmith.
Core Packages
Python — always required
| Package | Role | Min version |
|---|---|---|
langchain | Agents, chains, retrieval | 1.0 |
langchain-core | Base types & interfaces (peer dep) | 1.0 |
langsmith | Tracing, evaluation, datasets | 0.3.0 |
Python — orchestration (pick one)
| Package | Use when | Min version |
|---|---|---|
langgraph | Building custom graphs directly | 1.0 |
deepagents | Using the Deep Agents framework | latest |
Python — model providers (pick the one(s) you use)
| Package | Provider |
|---|---|
langchain-openai | OpenAI (GPT-4o, o3, …) |
langchain-anthropic | Anthropic (Claude) |
langchain-google-genai | Google (Gemini) |
langchain-mistralai | Mistral |
langchain-groq | Groq (fast inference) |
langchain-cohere | Cohere |
langchain-fireworks | Fireworks AI |
langchain-together | Together AI |
langchain-huggingface | Hugging Face Hub |
langchain-ollama | Ollama (local models) |
langchain-aws | AWS Bedrock |
langchain-azure-ai | Azure AI Foundry |
Python — common tool & retrieval packages
These packages have tighter compatibility requirements — use the latest available version unless you have a specific reason not to.
| Package | Adds | Notes |
|---|---|---|
langchain-tavily | Tavily web search (TavilySearch) | Dedicated integration package; prefer latest |
langchain-text-splitters | Text chunking utilities | Semver, keep current |
langchain-community | 1000+ integrations (fallback) | NOT semver — pin to minor series |
faiss-cpu | FAISS vector store (local) | Via langchain-community; use latest |
langchain-chroma | Chroma vector store | Dedicated integration package; prefer latest |
langchain-pinecone | Pinecone vector store | Dedicated integration package; prefer latest |
langchain-qdrant | Qdrant vector store | Dedicated integration package; prefer latest |
langchain-weaviate | Weaviate vector store | Dedicated integration package; prefer latest |
langsmith[pytest] | pytest plugin for LangSmith | Requires langsmith >= 0.3.4 |
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.
TypeScript — always required
| Package | Role | Min version |
|---|---|---|
@langchain/core | Base types & interfaces (peer dep) | 1.0 |
langchain | Agents, chains, retrieval | 1.0 |
langsmith | Tracing, evaluation, datasets | 0.3.0 |
TypeScript — orchestration (pick one)
| Package | Use when | Min version |
|---|---|---|
@langchain/langgraph | Building custom graphs directly | 1.0 |
deepagents | Using the Deep Agents framework | latest |
TypeScript — model providers (pick the one(s) you use)
| Package | Provider |
|---|---|
@langchain/openai | OpenAI (GPT-4o, o3, …) |
@langchain/anthropic | Anthropic (Claude) |
@langchain/google-genai | Google (Gemini) |
@langchain/mistralai | Mistral |
@langchain/groq | Groq (fast inference) |
@langchain/cohere | Cohere |
@langchain/aws | AWS Bedrock |
@langchain/azure-openai | Azure OpenAI |
@langchain/ollama | Ollama (local models) |
TypeScript — common tool & retrieval packages
| Package | Adds | Notes |
|---|---|---|
@langchain/tavily | Tavily web search (TavilySearch) | Dedicated integration package; prefer latest |
@langchain/community | Broad set of community integrations | Use sparingly; prefer dedicated packages |
@langchain/pinecone | Pinecone vector store | Dedicated integration package; prefer latest |
@langchain/qdrant | Qdrant vector store | Dedicated integration package; prefer latest |
@langchain/weaviate | Weaviate vector store | Dedicated integration package; prefer latest |
@langchain/coremust be installed explicitly in yarn workspaces and monorepos — it is a peer dependency and will not always be hoisted automatically.
Minimal Project Templates
# requirements.txt langchain>=1.0,<2.0 langchain-core>=1.0,<2.0 langgraph>=1.0,<2.0 langsmith>=0.3.0 # Add your model provider, e.g.: # langchain-openai # langchain-anthropic # langchain-google-genai
json{ "dependencies": { "@langchain/core": "^1.0.0", "langchain": "^1.0.0", "@langchain/langgraph": "^1.0.0", "langsmith": "^0.3.0" } }
# requirements.txt deepagents # bundles langgraph internally langchain>=1.0,<2.0 langchain-core>=1.0,<2.0 langsmith>=0.3.0 # Add your model provider, e.g.: # langchain-anthropic # langchain-openai
json{ "dependencies": { "deepagents": "latest", "@langchain/core": "^1.0.0", "langchain": "^1.0.0", "langsmith": "^0.3.0" } }
# requirements.txt langchain>=1.0,<2.0 langchain-core>=1.0,<2.0 langgraph>=1.0,<2.0 langsmith>=0.3.0 # Web search langchain-tavily # use latest; partner package, semver # Vector store — pick one: langchain-chroma # use latest; partner package, semver # langchain-pinecone # use latest; partner package, semver # langchain-qdrant # use latest; partner package, semver # Text processing langchain-text-splitters # use latest; semver # Your model provider: # langchain-openai / langchain-anthropic / etc.
json{ "dependencies": { "@langchain/core": "^1.0.0", "langchain": "^1.0.0", "@langchain/langgraph": "^1.0.0", "langsmith": "^0.3.0", "@langchain/tavily": "latest", "@langchain/pinecone": "latest" } }
Versioning Policy & Upgrade Strategy
| Package group | Versioning | Safe upgrade strategy |
|---|---|---|
langchain, langchain-core | Strict semver (1.0 LTS) | Allow minor: >=1.0,<2.0 |
langgraph / @langchain/langgraph | Strict semver (v1 LTS) | Allow minor: >=1.0,<2.0 |
langsmith | Strict semver | Allow minor: >=0.3.0 |
Dedicated integration packages (e.g. langchain-tavily, langchain-chroma) | Independently versioned | Allow minor updates; use latest |
langchain-community | NOT semver | Pin exact minor: >=0.4.0,<0.5.0 |
deepagents | Follow project releases | Pin to tested version in production |
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.
Environment Variables
bash# LangSmith (always recommended for observability) LANGSMITH_API_KEY=<your-key> LANGSMITH_PROJECT=<project-name> # optional, defaults to "default" # Model provider — set the one(s) you use OPENAI_API_KEY=<your-key> ANTHROPIC_API_KEY=<your-key> GOOGLE_API_KEY=<your-key> MISTRAL_API_KEY=<your-key> GROQ_API_KEY=<your-key> COHERE_API_KEY=<your-key> FIREWORKS_API_KEY=<your-key> TOGETHER_API_KEY=<your-key> HUGGINGFACEHUB_API_TOKEN=<your-key> # Common tool/retrieval services TAVILY_API_KEY=<your-key> # for Tavily search PINECONE_API_KEY=<your-key> # for Pinecone
Common Mistakes
# WRONG: legacy, no new features, security patches only langchain>=0.3,<0.4 # CORRECT: LangChain 1.0 LTS langchain>=1.0,<2.0
# WRONG: allows minor-version updates that may be breaking langchain-community>=0.4 # CORRECT: pin to exact minor series langchain-community>=0.4.0,<0.5.0
Also consider switching to the equivalent dedicated integration package if one exists (e.g. langchain-chroma instead of the community Chroma integration).
# RISKY: old pin may be incompatible with LangChain 1.0 langchain-tavily==0.0.1 # BETTER: allow latest within the current major langchain-tavily>=0.1
python# WRONG — deprecated community import path from langchain_community.tools.tavily_search import TavilySearchResults from langchain_community.tools import WikipediaQueryRun from langchain_community.vectorstores import Chroma from langchain_community.vectorstores import Pinecone # CORRECT — use dedicated package imports from langchain_tavily import TavilySearch # pip: langchain-tavily (TavilySearchResults is deprecated) from langchain_community.tools import WikipediaQueryRun # no dedicated pkg yet from langchain_chroma import Chroma # pip: langchain-chroma from langchain_pinecone import PineconeVectorStore # pip: langchain-pinecone
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.
json// WRONG: missing @langchain/core (breaks in yarn workspaces / strict hoisting) { "dependencies": { "@langchain/langgraph": "^1.0.0" } } // CORRECT: always list @langchain/core explicitly { "dependencies": { "@langchain/core": "^1.0.0", "@langchain/langgraph": "^1.0.0" } }
python# Verify before installing import sys assert sys.version_info >= (3, 10), "Python 3.10+ required for LangChain 1.0"
bash# Verify before installing node --version # must be v20.x or higher

