基于大语言模型的应用开发框架,用声明式链式编排将 Prompt、模型、工具和数据源组装成可用的 AI 应用。
核心概念 Link to heading
LangChain 的核心思想是把构建 LLM 应用的常见环节抽象成可组合的模块。2025 年官方发布 1.0 alpha 后,API 进入稳定期,2026 年已全面进入 1.x 时代。

关键概念:
| 概念 | 说明 |
|---|---|
| LCEL(LangChain Expression Language) | 声明式语法组合链,所有组件都是 Runnable,可通过 | 串联 |
| Prompt Templates | 参数化模板,解耦提示词内容与代码逻辑 |
| Chat Models | 统一的模型接口,OpenAI、Anthropic、本地模型均适配 |
| Tools & Tool Calling | 模型可主动调用的外部函数,实现搜索、数据库查询等操作 |
| Structured Output | 强制模型按指定 JSON Schema 输出,2026 重点方向 |
| LangGraph | 基于状态图的 Agent 编排框架,支持持久化、流式、人在回路 |
架构关系:
langchain-core → 抽象基类(Runnables, Messages, Prompts)
langchain → 集成层(各厂商模型、向量库、工具)
langgraph → Agent 编排(图结构、状态机)
安装配置 Link to heading
pip install "langchain>=1.3" langchain-openai
核心库与集成包分离安装。使用 OpenAI 模型需额外安装 langchain-openai,使用其他提供商安装对应包即可。
export OPENAI_API_KEY="sk-..."
实际使用 Link to heading
场景一:最简单的链(LCEL) Link to heading
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个技术助手,用简短的中文回答问题。"),
("human", "{question}"),
])
model = ChatOpenAI(model="gpt-4o-mini")
parser = StrOutputParser()
chain = prompt | model | parser
response = chain.invoke({"question": "Python 中 GIL 是什么?"})
print(response)
\| 运算符将 Prompt → Model → Parser 串联,invoke 触发执行。这就是 LCEL 的核心用法——声明式组合,替代传统函数嵌套调用。
场景二:工具调用(Tool Calling) Link to heading
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain_core.messages import HumanMessage
@tool
def get_weather(city: str) -> str:
"""获取指定城市的天气信息。"""
return f"{city} 当前晴,25°C"
model = ChatOpenAI(model="gpt-4o-mini").bind_tools([get_weather])
response = model.invoke([HumanMessage(content="北京天气怎么样?")])
print(response.tool_calls)
# [{'name': 'get_weather', 'args': {'city': '北京'}, ...}]
模型自动识别需要调用 get_weather 工具并提取参数。开发者只需执行工具并返回结果,无需编写意图判断和参数解析逻辑。
场景三:结构化输出 Link to heading
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "从用户输入中提取人名和年龄,输出 JSON。"),
("human", "{text}"),
])
model = ChatOpenAI(model="gpt-4o-mini")
chain = prompt | model | JsonOutputParser()
result = chain.invoke({"text": "张三今年 28 岁,李四 32 岁"})
print(result) # {"name": "张三", "age": 28, ...}
JsonOutputParser 解析模型返回的 JSON,确保输出结构可被下游代码直接消费。
什么时候不该用 LangChain Link to heading
- 简单问答:直接调用模型 API 即可,增加框架反而引入复杂度
- 强性能要求:框架抽象层有少量开销,极低延迟场景需裸调用
- 非 LLM 应用:传统 CRUD 项目与此无关
LangChain 的价值在于标准化流程和快速原型,当应用涉及多个 Prompt、工具调用、记忆或 Agent 编排时,它的抽象才体现意义。
官方链接 Link to heading
[1] https://python.langchain.com/docs/introduction/
[2] https://python.langchain.com/docs/integrations/providers/
[3] https://langchain-ai.github.io/langgraph/
[4] https://changelog.langchain.com/
Signature Link to heading
本文由 AI 生成,不保证正确,仅作参考