langchain-ai/langchain · 上手攻略
- 仓库:langchain-ai/langchain
- 链接:https://github.com/langchain-ai/langchain
- 分类:agent
- 作者:Tom
- 更新:2026-07-06
这是什么
LangChain 是目前最主流的 Agent 工程框架,为构建 LLM 应用提供标准化的组件抽象——模型接口、工具(Tools)、向量存储(Vector Store)、检索器(Retriever)等。2024–2025 年 LangChain 团队将产品线拆分为多个专注子库:主库 LangChain(底层组件)、LangGraph(复杂流程编排)、Deep Agents(开箱即用 Agent)、LangSmith(可观测性平台)。本攻略聚焦 LangChain Python 主库。
核心哲学:Agent = Model + Harness。LangChain 提供 create_agent——一个极简但高可配置的 Agent Harness,周围是 Prompt、Tools 和 Middleware,你从原语出发,按需组合。
Stars:141,033 | 周增:+301 | 语言:Python | 许可:MIT
解决什么问题
构建 LLM 应用时,开发者面临几个核心挑战:
- 模型切换成本高:OpenAI 换 Anthropic 代码要重写,LangChain 通过统一抽象层解决
- 工具接入繁琐:每个外部 API(搜索、数据库、文件系统)都要手写调用逻辑
- RAG 实现复杂:从 PDF 切块、向量化、检索到生成,每步都有坑
- Agent 行为难以控制:ReAct、Plan-and-Execute 等模式实现细节多,容易出 bug
LangChain 提供经过大量社区验证的组件和模式,大幅降低从原型到生产的时间。
快速安装
pip install -qU langchain
# 按需安装各 Provider 支持
pip install -qU "langchain[openai]" # OpenAI
pip install -qU "langchain[anthropic]" # Anthropic
pip install -qU "langchain[google-genai]" # Google Gemini
pip install -qU "langchain[ollama]" # Ollama(本地模型)
pip install -qU "langchain[postgres]" # PostgreSQL
pip install -qU "langchain[faiss]" # FAISS 向量数据库
⚠️ 注意:LangChain 2024 年进行了重大版本重构,部分旧教程(< 0.3.x)的导入路径和 API 与当前版本不同。本攻略基于当前主库版本。
核心用法
初始化模型(5 种主流方式)
# OpenAI
from langchain.agents import create_agent
agent = create_agent(
model="openai:gpt-5.5",
tools=[my_tool],
system_prompt="You are a helpful assistant.",
)
# Anthropic(Claude)
agent = create_agent(
model="claude-sonnet-4-6",
tools=[my_tool],
system_prompt="You are a helpful assistant.",
)
# Google Gemini(via langchain-google-genai)
agent = create_agent(
model="google_genai:gemini-2.5-flash-lite",
tools=[my_tool],
system_prompt="You are a helpful assistant.",
)
# OpenRouter(第三方网关聚合)
agent = create_agent(
model="openrouter:anthropic/claude-sonnet-4-6",
tools=[my_tool],
system_prompt="You are a helpful assistant.",
)
# Ollama(本地模型,如 DeepSeek、Qwen)
agent = create_agent(
model="ollama:devstral-2",
tools=[my_tool],
system_prompt="You are a helpful assistant.",
)
创建自定义工具
from langchain.agents import create_agent
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_agent(
model="openai:gpt-5.5",
tools=[get_weather],
system_prompt="You are a helpful assistant.",
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]}
)
print(result["messages"][-1].content_blocks)
RAG 流水线(文档检索增强生成)
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
# 1. 文档切分
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
docs = splitter.split_documents(raw_documents)
# 2. 向量化并存储
vectorstore = FAISS.from_documents(docs, OpenAIEmbeddings())
# 3. 检索器
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 4})
# 4. 组装 RAG Chain(LangChain Expression Language)
from langchain import hub
from langchain.chat_models import init_chat_model
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnablePassthrough
model = init_chat_model("openai:gpt-5.5")
rag_chain = {"context": retriever | (lambda x: x.page_content), "question": RunnablePassthrough()} | hub.pull("rlm/rag-prompt") | model | StrOutputParser()
answer = rag_chain.invoke("What is the main topic of the document?")
LangGraph 进阶流程控制
当 create_agent 的简单循环不够用时,LangGraph 提供图结构的 Agent 编排,支持条件分支、循环、人机交互节点:
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySaver
# 带内存持久化的 ReAct Agent
checkpointer = MemorySaver()
agent = create_react_agent(
model,
tools,
checkpointer=checkpointer,
)
典型适用场景
- RAG 系统构建:企业知识库、客服问答、文档检索类应用
- 通用 LLM 应用开发:需要对模型、Prompt、Retrievers 进行组合实验的研发流程
- Agent 原型开发:用
create_agent快速验证某个 Agent 想法的可行性 - 复杂多步流程:需要条件分支、循环、状态持久化时切换到 LangGraph
坑与注意
- 版本断裂问题:LangChain 在 2024 年经历重大重构(0.1.x → 0.2.x → current),大量旧教程代码无法直接运行。
from langchain.chat_models import init_chat_model是新版 API,旧的from langchain.llms import OpenAI已废弃。遇到 import 错误时先查官方当前文档。 - 依赖臃肿:
langchain主包含大量可选依赖,全量安装可能引入版本冲突。建议按需安装:langchain+ 具体[openai]/[anthropic]等。 - LangChain vs LangGraph vs Deep Agents:三者不是替代关系,是层次递进。普通应用
langchain足够;需要可控流程用langgraph;需要开箱即用多能力 Agent 用deep_agents。 - 调试困难:LangChain 的隐式调用链较长,出问题时先用 LangSmith 开启 tracing(
LANGSMITH_TRACING=true)。 - Azure 集成注意:使用 Azure OpenAI 时,模型名格式为
azure_openai:gpt-4o,需配合azure_deployment参数。 - Python 版本要求:当前主库要求 Python 3.12+。
与同类对比
| 框架 | 定位 | 优点 | 缺点 |
|---|---|---|---|
| LangChain | 通用 LLM/Agent 框架 | 生态最完整,文档丰富,社区活跃 | 学习曲线陡峭,版本断裂 |
| LangGraph | 复杂 Agent 流程编排 | 图结构灵活,支持状态持久化 | 上手门槛更高 |
| LlamaIndex | RAG 专精 | RAG 场景优化更好,索引管理更细 | Agent 场景不如 LangChain |
| CrewAI | 多 Agent 协作 | 语法简洁,Role-Based 设计直观 | 生态不如 LangChain |
| Semantic Kernel | 微软官方(.NET/Python) | 与 Azure 集成好,企业级支持 | 生态限于微软全家桶 |
| AutoGen | 多 Agent 对话 | 强调 Agent 间协作,代码轻量 | 缺乏 LangChain 的工具生态 |
一句话推荐结论: LangChain 是目前 AI 应用开发最通用的开源基础设施,适合需要灵活组合模型、工具和检索组件的团队;如果你专注 RAG 且需要更精细的索引控制,LlamaIndex 是更好选择;如果你的团队使用微软 Azure 全家桶,Semantic Kernel 更贴合。