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

坑与注意

  1. 版本断裂问题:LangChain 在 2024 年经历重大重构(0.1.x → 0.2.x → current),大量旧教程代码无法直接运行。from langchain.chat_models import init_chat_model 是新版 API,旧的 from langchain.llms import OpenAI 已废弃。遇到 import 错误时先查官方当前文档。
  2. 依赖臃肿langchain 主包含大量可选依赖,全量安装可能引入版本冲突。建议按需安装:langchain + 具体 [openai] / [anthropic] 等。
  3. LangChain vs LangGraph vs Deep Agents:三者不是替代关系,是层次递进。普通应用 langchain 足够;需要可控流程用 langgraph;需要开箱即用多能力 Agent 用 deep_agents
  4. 调试困难:LangChain 的隐式调用链较长,出问题时先用 LangSmith 开启 tracing(LANGSMITH_TRACING=true)。
  5. Azure 集成注意:使用 Azure OpenAI 时,模型名格式为 azure_openai:gpt-4o,需配合 azure_deployment 参数。
  6. 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 更贴合。