基于大语言模型的应用开发框架,用声明式链式编排将 Prompt、模型、工具和数据源组装成可用的 AI 应用。

核心概念 Link to heading

LangChain 的核心思想是把构建 LLM 应用的常见环节抽象成可组合的模块。2025 年官方发布 1.0 alpha 后,API 进入稳定期,2026 年已全面进入 1.x 时代。

LangChain 架构

关键概念:

概念说明
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 生成,不保证正确,仅作参考