LangChain 是一个开源框架,用于快速构建基于大语言模型(LLM)的应用,如聊天机器人、RAG(检索增强生成)系统、Agent 等。它提供标准化接口,支持多种 LLM(如 OpenAI、Anthropic、Groq、本地模型等),并允许轻松组合组件(如提示模板、记忆、工具、检索器)来创建复杂工作流。

当前(2025 年 12 月),LangChain 已发布 v1.x 版本(最新约 v1.2.4),核心聚焦于 Agent 构建,并与 LangGraph(低级代理编排框架)深度集成。官方文档已统一优化,推荐从官网开始学习。

1. 安装 LangChain

使用 pip 安装(推荐 Python 3.10+):

pip install langchain langchain-core langchain-community langchain-openai  # 基础 + OpenAI 支持
  • 如果用其他模型,如 Anthropic:pip install langchain-anthropic
  • 完整生态:pip install "langchain[all]"(但会安装很多依赖,建议按需)

设置 API Key(以 OpenAI 为例):

import os
os.environ["OPENAI_API_KEY"] = "your-api-key"
2. 基本使用:调用 LLM

最简单示例:直接调用模型生成文本。

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o", temperature=0.7)  # 或 gpt-3.5-turbo

response = llm.invoke("告诉我一个关于AI的笑话。")
print(response.content)
3. 使用 Prompt Template(提示模板)

避免硬编码提示,提高可复用性。

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个幽默的助手。"),
    ("user", "{input}")
])

chain = prompt | llm  # LCEL 语法:链式组合

response = chain.invoke({"input": "告诉我一个关于猫的笑话。"})
print(response.content)
4. 构建 Chain(链)

Chain 是 LangChain 的核心,用于组合多个步骤。

  • 简单 LLMChain 已简化,使用 | 操作符(LangChain Expression Language, LCEL)。
    示例:带解析器的链(结构化输出)。
from langchain_core.output_parsers import StrOutputParser

chain = prompt | llm | StrOutputParser()

response = chain.invoke({"input": "列出3种水果。"})
print(response)
5. 添加记忆(Memory):实现对话历史
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

memory = ConversationBufferMemory()
conversation = ConversationChain(llm=llm, memory=memory)

conversation.predict(input="我叫小明。")
conversation.predict(input="我叫什么?")  # 会记住上文
6. 构建 RAG(检索增强生成)——最常见用例

RAG 让模型访问外部知识(如文档、数据库)。
步骤:

  • 加载文档 → 分割文本 → 嵌入 → 存入向量库 → 检索 + 生成。

示例(使用本地向量库 Chroma):

from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 加载文档
loader = TextLoader("your_document.txt")
documents = loader.load()

# 分割
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
texts = splitter.split_documents(documents)

# 嵌入 + 向量库
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(texts, embeddings)

# RAG 链
qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=vectorstore.as_retriever())

response = qa_chain.invoke({"query": "文档中说了什么关于AI的?"})
print(response["result"])
7. 构建 Agent(智能代理)

Agent 可以自主决定使用工具(如搜索、计算)。

from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain.tools import Tool  # 或内置工具如 DuckDuckGoSearch

# 示例工具
tools = [Tool(name="Search", func=lambda q: "搜索结果...", description="用于搜索")]

agent = create_tool_calling_agent(llm=llm, tools=tools, prompt=...)  # 需要自定义提示
executor = AgentExecutor(agent=agent, tools=tools)

response = executor.invoke({"input": "今天北京天气怎么样?"})

对于复杂 Agent,推荐使用 LangGraph(LangChain 的子项目)构建有状态、多步代理。

推荐学习资源(2025 年最新)
  • 官方文档(强烈推荐,最准确):https://python.langchain.com/docs/ (有 Quickstart 和 Tutorials)
    • 入门教程:Build a RAG agent(从索引数据到代理实现)。
  • 中文文档
    • https://python.langchain.com.cn/ (官方中文翻译)
    • https://www.langchain.asia/ (社区维护,500+页教程)
    • GitHub: https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide程。
  • 调试工具:用 LangSmith(https://smith.langchain.com/)追踪链/代理执行。

LangChain 更新很快,建议直接看官方文档避免过时。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐