2026 年 AI 开发格局:LangChain 会成为标准吗?
LangChain 介绍指南
目录
什么是 LangChain?
LangChain 是一个用于开发由语言模型驱动的应用程序的开源框架。它提供了标准化的接口和工具,让开发者能够轻松构建基于大语言模型(LLM)的应用。
核心理念:
-
组件化:将 LLM 应用拆分为可复用的组件
-
链式调用:通过组合组件构建复杂应用
-
可扩展:支持多种 LLM 提供商和工具集成
主要特点:
-
支持多种大模型(OpenAI、Anthropic、百度、阿里等)
-
提供丰富的工具集和预构建组件
-
支持记忆管理和上下文处理
-
内置 Agent 和链式调用功能
-
开源免费,社区活跃
核心功能
1. 模型抽象
LangChain 提供了统一的接口来访问不同的语言模型:
-
OpenAI 系列:GPT-3.5、GPT-4、GPT-4o
-
Anthropic:Claude 系列
-
Google:Gemini、PaLM
-
国内模型:文心一言、通义千问、讯飞星火
-
开源模型:LLaMA、ChatGLM、Qwen
-
本地部署:vLLM、Ollama、LM Studio
2. 提示词管理
提供强大的提示词模板和管理工具:
-
PromptTemplate:动态生成提示词
-
FewShotPromptTemplate:少样本学习
-
ChatPromptTemplate:对话式提示词
-
PipelinePromptTemplate:多步骤提示词
3. 记忆管理
管理对话历史和上下文信息:
-
ConversationBufferMemory:完整对话历史
-
ConversationSummaryMemory:对话摘要
-
VectorStoreRetrieverMemory:向量检索记忆
-
ConversationBufferWindowMemory:滑动窗口记忆
4. 链式调用
将多个组件组合成复杂的工作流:
-
SequentialChain:顺序执行
-
TransformChain:数据转换
-
RouterChain:条件路由
-
ParallelChain:并行执行
5. Agent 系统
构建能够自主决策和执行的智能体:
-
Zero-shot Agent:零样本推理
-
ReAct Agent:推理 + 行动
-
Plan-and-Execute:规划 + 执行
-
Custom Agent:自定义智能体
6. 工具集成
丰富的外部工具集成:
-
搜索工具:Google Search、Bing Search
-
计算工具:Wolfram Alpha、Python REPL
-
数据库:SQL、NoSQL、向量数据库
-
API 工具:REST API、GraphQL
-
文件处理:PDF、Word、Excel
主要组件
1. Models(模型层)
# LLM 模型
from langchain.llms import OpenAI
llm = OpenAI(temperature=0.7)
# Chat 模型
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI(model="gpt-4")
# 嵌入模型
from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
2. Prompts(提示词层)
from langchain.prompts import PromptTemplate
template = """
你是一个{role}助手。
请回答以下问题:{question}
"""
prompt = PromptTemplate(
input_variables=["role", "question"],
template=template
)
3. Chains(链层)
from langchain.chains import LLMChain
chain = LLMChain(
llm=llm,
prompt=prompt
)
result = chain.run(role="翻译", question="Hello, world!")
4. Memory(记忆层)
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
5. Agents(代理层)
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
tools = [...]
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION
)
6. Vector Stores(向量存储)
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
vectorstore = Chroma(
embedding_function=OpenAIEmbeddings(),
persist_directory="./chroma_db"
)
安装配置
基础安装
# 安装核心包
pip install langchain
# 安装完整功能包
pip install langchain-community
# 安装特定集成包
pip install langchain-openai
pip install langchain-anthropic
pip install langchain-google-genai
可选依赖
# 向量数据库
pip install chromadb
pip install faiss-cpu
pip install pinecone-client
# 文档处理
pip install pypdf
pip install python-docx
pip install unstructured
# 搜索工具
pip install google-search-results
pip install wikipedia
# 数据库
pip install sqlalchemy
pip install psycopg2-binary
环境配置
# 设置 API 密钥
export OPENAI_API_KEY="your-api-key"
export ANTHROPIC_API_KEY="your-api-key"
export GOOGLE_API_KEY="your-api-key"
# Windows PowerShell
$env:OPENAI_API_KEY="your-api-key"
快速入门
示例 1:简单的问答应用
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
# 初始化 LLM
llm = OpenAI(temperature=0.7)
# 创建提示词模板
template = """
请简要解释以下概念:{concept}
"""
prompt = PromptTemplate(
input_variables=["concept"],
template=template
)
# 创建链
chain = LLMChain(llm=llm, prompt=prompt)
# 运行
result = chain.run(concept="人工智能")
print(result)
示例 2:对话机器人
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, AIMessage, SystemMessage
from langchain.memory import ConversationBufferMemory
# 初始化模型
chat = ChatOpenAI(model="gpt-3.5-turbo")
# 初始化记忆
memory = ConversationBufferMemory()
# 对话
messages = [
SystemMessage(content="你是一个有帮助的助手。"),
HumanMessage(content="你好!")
]
response = chat(messages)
memory.save_context(
{"input": "你好!"},
{"output": response.content}
)
print(response.content)
示例 3:文档问答(RAG)
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
# 加载文档
loader = TextLoader("document.txt")
documents = loader.load()
# 分割文本
text_splitter = CharacterTextSplitter(
chunk_size=1000,
chunk_overlap=0
)
texts = text_splitter.split_documents(documents)
# 创建向量存储
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
texts,
embeddings,
persist_directory="./chroma_db"
)
# 创建 QA 链
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
retriever=vectorstore.as_retriever()
)
# 提问
query = "文档的主要内容是什么?"
result = qa_chain.run(query)
print(result)
示例 4:Agent 应用
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
# 初始化 LLM
llm = OpenAI(temperature=0)
# 加载工具
tools = load_tools(
["serpapi", "llm-math"],
llm=llm
)
# 初始化 Agent
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 运行
agent.run("2024 年诺贝尔文学奖得主是谁?他的年龄是多少?")
示例 5:多步骤工作流
from langchain.chains import SequentialChain, TransformChain
from langchain.chains import LLMChain
# 链 1:生成大纲
outline_chain = LLMChain(
llm=llm,
prompt=PromptTemplate(
input_variables=["topic"],
template="为以下主题生成文章大纲:{topic}"
),
output_key="outline"
)
# 链 2:根据大纲写文章
article_chain = LLMChain(
llm=llm,
prompt=PromptTemplate(
input_variables=["topic", "outline"],
template="根据以下大纲写一篇文章:\n主题:{topic}\n大纲:{outline}"
),
output_key="article"
)
# 链 3:生成标题
title_chain = LLMChain(
llm=llm,
prompt=PromptTemplate(
input_variables=["article"],
template="为以下文章生成 3 个吸引人的标题:{article}"
),
output_key="titles"
)
# 组合成顺序链
overall_chain = SequentialChain(
chains=[outline_chain, article_chain, title_chain],
input_variables=["topic"],
output_variables=["outline", "article", "titles"],
verbose=True
)
# 运行
result = overall_chain({"topic": "人工智能的未来"})
print(result["titles"])
应用场景
1. 智能客服
-
自动回答常见问题
-
多轮对话支持
-
知识库检索
-
工单自动生成
2. 内容创作
-
文章写作助手
-
营销文案生成
-
社交媒体内容
-
邮件自动回复
3. 数据分析
-
自然语言查询数据库
-
数据可视化生成
-
报告自动生成
-
趋势分析
4. 代码助手
-
代码生成
-
代码审查
-
Bug 修复
-
文档生成
5. 教育培训
-
智能辅导
-
题目生成
-
作业批改
-
个性化学习路径
6. 知识管理
-
文档智能检索
-
知识图谱构建
-
信息抽取
-
智能摘要
7. 营销自动化
-
客户画像分析
-
个性化推荐
-
营销活动生成
-
舆情监控
生态系统
核心库
-
langchain-core:核心抽象和接口
-
langchain-community:社区贡献的集成
-
langchain-openai:OpenAI 集成
-
langchain-anthropic:Anthropic 集成
-
langchain-google:Google 集成
工具库
-
langserve:部署 LangChain 应用
-
langsmith:调试和监控平台
-
langgraph:构建有状态应用
集成平台
向量数据库:
-
Chroma
-
Pinecone
-
Weaviate
-
Milvus
-
FAISS
文档存储:
-
Notion
-
Confluence
-
Google Drive
-
Dropbox
数据库:
-
PostgreSQL
-
MySQL
-
MongoDB
-
Redis
云服务:
-
AWS
-
Azure
-
GCP
优缺点分析
优点
-
易于使用
-
简洁的 API 设计
-
丰富的文档和示例
-
快速上手
-
-
灵活性强
-
支持多种 LLM 提供商
-
可自定义组件
-
模块化设计
-
-
功能丰富
-
完整的工具链
-
预构建的链和 Agent
-
丰富的集成
-
-
社区活跃
-
大量贡献者
-
频繁更新
-
丰富的第三方资源
-
-
生产就绪
-
支持部署和监控
-
性能优化
-
错误处理
-
缺点
-
学习曲线
-
概念较多
-
需要理解 LLM 原理
-
高级功能复杂
-
-
依赖管理
-
依赖包众多
-
版本兼容问题
-
安装复杂
-
-
性能开销
-
抽象层带来开销
-
某些场景不如原生
-
需要优化
-
-
文档质量
-
部分文档过时
-
示例不够完善
-
中文文档缺乏
-
最佳实践
1. 提示词优化
# 使用清晰的指令
prompt = PromptTemplate(
input_variables=["task"],
template="请完成以下任务,要求简洁准确:{task}"
)
# 提供上下文
prompt = PromptTemplate(
input_variables=["context", "question"],
template="基于以下信息回答问题:\n{context}\n问题:{question}"
)
# 使用少样本学习
examples = [
{"input": "苹果", "output": "水果"},
{"input": "胡萝卜", "output": "蔬菜"}
]
2. 记忆管理
# 限制对话长度
memory = ConversationBufferWindowMemory(
k=5, # 保留最近 5 轮对话
return_messages=True
)
# 使用摘要记忆
memory = ConversationSummaryMemory(
llm=llm,
memory_key="summary"
)
3. 错误处理
from langchain.callbacks import CallbackManager
def handle_error(error):
print(f"发生错误:{error}")
return "抱歉,我遇到了一个问题。"
try:
result = chain.run(input_text)
except Exception as e:
result = handle_error(e)
4. 性能优化
# 批量处理
results = llm.generate(prompts)
# 缓存结果
from langchain.cache import InMemoryCache
from langchain.globals import set_llm_cache
set_llm_cache(InMemoryCache())
# 流式输出
for chunk in llm.stream(prompt):
print(chunk, end="", flush=True)
5. 成本控制
# 限制 token 使用
llm = ChatOpenAI(
max_tokens=500,
temperature=0.5
)
# 监控使用量
from langchain.callbacks import get_openai_callback
with get_openai_callback() as cb:
result = chain.run(input_text)
print(f"Total Tokens: {cb.total_tokens}")
print(f"Total Cost: ${cb.total_cost}")
常见问题
Q1: LangChain 适合什么场景?
适合需要组合多个组件、管理对话历史、使用外部工具的 LLM 应用场景。
Q2: LangChain 和 LlamaIndex 有什么区别?
LangChain 更通用,支持多种功能;LlamaIndex 专注于数据检索和 RAG 场景。
Q3: 如何选择合适的 LLM?
根据需求选择:
-
高质量:GPT-4、Claude
-
性价比:GPT-3.5、国产模型
-
本地部署:LLaMA、Qwen
Q4: 如何调试 LangChain 应用?
-
启用 verbose 模式
-
使用 LangSmith 平台
-
添加日志记录
-
逐步测试组件
Q5: 如何部署到生产环境?
-
使用 LangServe 部署 API
-
容器化部署(Docker)
-
配置负载均衡
-
添加监控告警
相关资源
官方资源
学习资源
-
LangChain 官方教程
-
YouTube 官方频道
-
社区博客和文章
社区资源
-
Discord 社区
-
Stack Overflow
-
Reddit r/LangChain
-
中文社区
总结
LangChain 是一个强大的 LLM 应用开发框架,通过组件化和链式调用的方式,让开发者能够快速构建复杂的 AI 应用。
适用场景:
-
需要组合多个 AI 功能
-
需要管理对话历史
-
需要访问外部数据和工具
-
需要快速原型开发
不适用场景:
-
简单的单次调用
-
对性能要求极高
-
资源受限环境
学习建议:
-
从基础组件开始
-
实践简单示例
-
逐步构建复杂应用
-
参考官方文档和社区资源
更多推荐




所有评论(0)