LangChain
Python 生态最流行的 LLM 应用开发框架,提供 Agent、Tool、Memory、VectorStore 等完整工具链
简介
LangChain 是 Python 生态中最广泛使用的 LLM 应用开发框架,用于构建由大语言模型驱动的应用程序。它提供了从简单的链式调用到复杂的自主 Agent 的完整抽象层,让开发者可以专注于业务逻辑而非底层 LLM 交互细节。
LangChain 的核心设计理念是”组合”:通过将 LLM、工具、记忆、检索器等组件以声明式方式组合,构建出从简单问答到复杂多步骤 Agent 的各种应用。
核心组件
0. Models(模型层 / Agent 的“大脑”)
- 统一接口:封装 OpenAI、Anthropic、Google Gemini、Azure、AWS Bedrock、HuggingFace、本地 OpenAI 兼容端点等
- 初始化:
init_chat_model(model=..., model_provider=...):多提供商通用入口(推荐切换场景)ChatOpenAI(langchain_openai):OpenAI 兼容 API 直连;配合OPENAI_BASE_URL可打 Qwen/DeepSeek 等
- 四种调用语义:
invoke(完整AIMessage)、stream(AIMessageChunk+content_blocks:reasoning/text/tool_call_chunk)、batch(保序并行)、batch_as_completed(完成即返回 +max_concurrency) - Messages:
SystemMessage/HumanMessage/AIMessage/ToolMessage,也兼容{"role","content"}字典 - 常用参数:
model、api_key、temperature、timeout、max_tokens、max_retries(默认 6,指数退避+抖动;401/404 不重试) - 能力面:文本生成、Tool Calling、Structured Output、Multimodality、Reasoning
1. Agent(智能体)
create_openai_functions_agent:基于 OpenAI Function Calling 的 Agent 创建函数AgentExecutor:封装完整的推理-执行循环(LLM 调用→解析工具调用→执行工具→结果回传→继续推理)- 支持多种 Agent 类型:ReAct、OpenAI Functions、Plan-and-Execute 等
2. Tool(工具)
@tool装饰器:将普通 Python 函数自动转换为 LLM 可调用的工具- 自动提取函数签名、参数类型、文档字符串,生成 Function Calling schema(docstring 即工具描述,决定模型何时调用)
bind_tools([...], tool_choice=...):auto / required|any / none / 指定工具名;可关parallel_tool_calls- 支持工具组合和工具路由
3. Memory(记忆)
ConversationBufferMemory:完整对话历史缓存ConversationSummaryMemory:对话摘要压缩ConversationBufferWindowMemory:滑动窗口记忆- 通过
MessagesPlaceholder注入 prompt
4. Prompt 模板
ChatPromptTemplate:结构化聊天 prompt 构建MessagesPlaceholder:动态插入消息占位符(如聊天历史、agent_scratchpad)- 支持系统消息、用户消息、AI 消息的声明式组合
5. VectorStore(向量存储)
Chroma:本地向量数据库集成OpenAIEmbeddings:文本向量化similarity_search:语义相似度检索- 支持持久化存储(
persist_directory)
关键信息
- 类型:开发框架
- 语言:Python(另有 LangChain4j 为 Java 版本、LangChain.js 为 JavaScript 版本)
- 核心范式:Chain(链式调用)→ Agent(自主推理)→ Graph(图编排)
- 官方文档:https://python.langchain.com
- 竞争框架:LlamaIndex(侧重检索)、Haystack(侧重 NLP 管道)、Semantic Kernel(微软生态)
不同素材中的观点
来自 2026-06-13-langchain-openai-agent-tutorial:
- LangChain + OpenAI 是从零搭建 AI Agent 的最直接路径:
pip install langchain openai即可开始 @tool装饰器将 Python 函数自动转换为 Function Calling 格式,开发者无需手动编写 JSON schemaAgentExecutor封装了完整的推理-执行循环,开发者只需定义工具和 promptConversationBufferMemory+MessagesPlaceholder实现多轮对话记忆,Agent 能理解指代(如”第一封邮件”)- ChromaDB 向量存储扩展了 Agent 的知识检索能力,可用于 RAG 场景
- 系统提示词是 Agent 行为的”操作系统”,比工具定义更能影响 Agent 的行为质量
来自 2026-06-13-deep-agents-framework-guide:
- LangChain 在 LangChain 生态金字塔中是”方向盘和仪表盘”层——提供丰富组件(PromptTemplate / Tools / RAG),Deep Agents 在其之上构建
- Deep Agents 的中间件架构(TodoListMiddleware、FilesystemMiddleware、SubAgentMiddleware)通过 LangChain 的
create_agent函数注入 - LangChain 的
@tool装饰器是 Deep Agents 自定义工具的底层机制
来自 2026-07-19-juejin-langchain-models-guide:
- 把 Models 明确写成 Agent 的推理引擎:统一接口 + 多提供商切换,业务代码尽量不绑死单一厂商
- 模块化安装(
uv add langchain/langchain_openai等)与 OpenAI 兼容协议是默认落地路径——本地 Qwen、DeepSeek 等配好OPENAI_BASE_URL即可继续用ChatOpenAI - 调用语义选型决策树:单问用
invoke/stream;多独立问用batch(保序)或batch_as_completed(完成即返回 + 并发上限) stream的content_blocks可拆开推理模型的reasoning与普通text,适配 Qwen3 等带思考块的模型- Messages 双轨:类型化消息对象(多模态/元数据更完整)vs OpenAI 风格字典(快速原型)
- 工具链路:
@tool(docstring 即描述)→bind_tools→ 检查tool_calls→ 执行 → 回传;tool_choice与并行工具调用是可控旋钮 - 连接弹性:默认
max_retries=6,网络/429/5xx 指数退避+抖动;认证与 404 类客户端错误不重试
来自 2026-07-23-woshipm-ai-backend-test-first-debug:
- 在 Vibe Coding 后端实战中,LangChain 同时扮演文档源与组件超市:通过 docs-langchain MCP 用 ask 模式查询如何接千问、如何 NL2SQL;文档指向
SQLDatabase、create_sql_agent等现成能力 - 关键修正:现成
create_sql_agent的编排未必贴合「意图→SQL→安全校验→查库→图表→总结 + SSE」产品路径——组件能用 ≠ 编排合用,需最小测试真实 I/O 后再决定自研管道 - 实践启示:用 MCP 查最新规范可降低过时 API 幻觉,但字段契约仍以本地实测为准,并写回开发文档供后续集成
实用信息
安装方式
# 经典 pip
pip install langchain openai chromadb python-dotenv
# 模块化(uv,Models 层教程推荐)
uv add langchain
uv add langchain_openai
# uv add langchain_anthropic / langchain_google_genai / langchain_community基本用法
from langchain.agents import AgentExecutor, create_openai_functions_agent
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
from langchain.chat_models import init_chat_model
# 方式 A:多提供商通用初始化
model = init_chat_model(model="gpt-4o-mini", model_provider="openai", temperature=0.7)
# 方式 B:OpenAI 兼容直连(可改 OPENAI_BASE_URL 打本地/第三方)
llm = ChatOpenAI(model="gpt-4")
# 定义 prompt
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个智能助手..."),
MessagesPlaceholder(variable_name="chat_history"),
MessagesPlaceholder(variable_name="agent_scratchpad")
])
# 创建 Agent
agent = create_openai_functions_agent(llm=llm, tools=tools, prompt=prompt)
executor = AgentExecutor(agent=agent, tools=tools, memory=memory, verbose=True)适用场景
- 需要 LLM 调用外部工具的应用
- 多轮对话机器人
- RAG 知识库问答
- 多步骤任务自动化
- 多 Agent 协作系统
相关页面
- Deep Agents — 在 LangChain + LangGraph 之上的 Agent Harness 层
- LangChain4j — Java 版本的 LangChain
- LangGraph — LangChain 的图编排扩展
- AI Agent 智能体 — LangChain 最常见的应用场景
- Function Calling — LangChain Agent 调用工具的底层机制
- OpenAI — LangChain 最常用的 LLM 提供商
- RAG 知识库 — LangChain 的向量检索应用场景
- AI编程开发
- NL2SQL
- 智能数据分析Agent
- MCP 模型上下文协议
- 2026-07-23-woshipm-ai-backend-test-first-debug