Skip to content
LangChain:使用 OpenAI API 快速构建应用

在现代 AI 应用开发中释放 LangChain 的潜力

Updated on

自 2023 年以来,LangChain 发生了巨大的演进。从最初的一个简单 LLM 封装器,成长为一个支持如下能力的完整 AI 应用框架

  • LCEL (LangChain Expression Language)
  • Runnables
  • LangGraph(有状态、可靠的 agent 工作流)
  • OpenAI function calling
  • Tool calling
  • 高级记忆系统(memory)
  • 用于 RAG 的现代文档处理流水线

本更新指南将为你提供一个面向 2025 的 LangChain 全景认知,帮助你结合最新 OpenAI API 构建真正可落地的 LLM 应用。

📚

LangChain 的基础概念

🌟 当下的 LangChain:一个现代 AI 应用框架

现代 LLM 应用远远不止“给文本、拿结果”这么简单,它们通常需要:

  • 工具调用(tools)
  • 对话记忆(memory)
  • 文档检索(retrieval)
  • 状态管理(state management)
  • 多步骤工作流(multi-step workflows)
  • 错误处理(error handling)
  • 可重复性与确定性(determinism)

LangChain 通过 RunnablesLCELLangGraph 提供这些基础构件,使开发者能够构建可靠的 agent 系统和工作流系统。


🔗 使用 LCEL 构建顺序工作流(更新版)

LCEL 让你可以像组合函数一样组合 LLM pipeline:

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
 
model = ChatOpenAI(model="gpt-4.1")
 
prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant."),
    ("user", "{question}")
])
 
chain = prompt | model
chain.invoke({"question": "Explain LangChain LCEL in one paragraph."})

这取代了早期的 “SequentialChain” 等老 API。


LangChain 入门

📦 安装

pip install langchain langchain-openai langgraph faiss-cpu

如果要使用 LangGraph:

pip install langgraph

💬 LLM 与 Prompt Templates(现代 API)

LangChain 现在推荐使用 ChatModel 接口

from langchain_openai import ChatOpenAI
 
llm = ChatOpenAI(model="gpt-4.1", temperature=0)

Prompt Template 依然很强大:

from langchain_core.prompts import ChatPromptTemplate
 
prompt = ChatPromptTemplate.from_template(
    "Summarize the following text:\n\n{text}"
)

⛓️ 使用 LCEL 构建 Chains(取代旧 “Chains API”)

通过 LCEL 构建 chain:

chain = prompt | llm

⚙️ Tools 与 Agents(2025 最佳实践)

旧的 initialize_agent、“ReAct agent” 以及 MiniChain 风格已经不再推荐使用。

目前推荐的做法是:

用 LangGraph 来实现 agent 工作流

LangGraph 提供:

  • 状态管理(state management)
  • 重试策略(retry policies)
  • 确定性的边(deterministic edges)
  • tool calling
  • 持久化(persistence)

示例 agent 节点:

from langchain_openai import ChatOpenAI
 
llm = ChatOpenAI(
    model="gpt-4.1",
    temperature=0,
    streaming=False
)

Tool calling 示例:

from langchain_core.tools import tool
 
@tool
def search_wiki(query: str):
    """Search Wikipedia topics."""
    import wikipedia
    return wikipedia.summary(query)
 
tools = [search_wiki]

与 LLM 进行连接:

result = llm.invoke({
    "messages": [
        {"role": "user", "content": "Find me information about LangChain."}
    ],
    "tools": tools
})

🧠 Memory

LangChain 的 memory 目前支持:

  • BufferMemory
  • ConversationSummaryMemory
  • SQL / Redis 后端的 memory
  • 基于图状态的 memory(LangGraph)

示例:

from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
 
memory.save_context(
    {"input": "Hello"},
    {"output": "Hi, how can I help?"}
)
 
memory.load_memory_variables({})

📄 数据加载、文本切分与检索(现代 RAG)

下面是使用 FAISS + OpenAI embeddings 的更新示例:

from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
 
loader = TextLoader("./state_of_the_union.txt")
docs = loader.load()
 
splitter = RecursiveCharacterTextSplitter(chunk_size=1000)
chunks = splitter.split_documents(docs)
 
emb = OpenAIEmbeddings()
db = FAISS.from_documents(chunks, emb)
 
query = "What policies did the president highlight?"
results = db.similarity_search(query)

🚀 端到端示例

下面是一个完整可运行的 LangChain pipeline,使用 LCEL、最新 OpenAI API 与检索能力:

from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import FAISS
 
# 1. 加载 LLM
llm = ChatOpenAI(model="gpt-4.1", temperature=0)
 
# 2. 加载并切分文档
loader = TextLoader("./state_of_the_union.txt")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=800)
chunks = splitter.split_documents(docs)
 
# 3. 构建向量库
db = FAISS.from_documents(chunks, OpenAIEmbeddings())
 
# 4. 构建检索链
prompt = ChatPromptTemplate.from_messages([
    ("system", "Answer based on the provided context."),
    ("user", "{question}\n\nContext: {context}")
])
 
def retriever(q):
    results = db.similarity_search(q, k=3)
    return "\n".join([r.page_content for r in results])
 
chain = (
    {
        "question": lambda x: x,
        "context": lambda x: retriever(x)
    }
    | prompt
    | llm
)
 
# 5. 端到端运行
response = chain.invoke("What economic topics were mentioned?")
print(response.content)

总结

到了 2025 年,LangChain 已经不再只是一个工具集,而是一个面向以下场景的完整 AI 应用框架

  • agents
  • workflows
  • retrieval 系统
  • tool 集成
  • 具备丰富记忆能力的对话应用

借助 LCEL、Runnables 与 LangGraph,你可以搭建出 生产级 AI 应用,并保持架构的整洁、可维护与可扩展。

你可以将本指南作为更新后的基础知识,用来构建更强大、更具竞争力的 AI 应用。