如何3步掌握LangChain:新手也能快速上手的AI代理开发完整教程
LangChain是当前最流行的AI代理工程平台,它让开发者能够轻松构建基于大语言模型的智能应用。无论你是想创建智能聊天机器人、文档分析工具还是自动化工作流,LangChain都提供了完整的解决方案。这个开源框架通过模块化设计,将复杂的AI应用开发简化为组件组装,大大降低了技术门槛。
🚀 快速入门:3步搭建你的第一个AI代理
第一步:环境配置与安装
首先,你需要准备好Python环境。LangChain支持Python 3.8及以上版本。推荐使用uv包管理器,它比传统的pip更快更稳定:
# 安装uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建项目目录
mkdir my-langchain-app
cd my-langchain-app
# 初始化项目并安装LangChain
uv init
uv add langchain
第二步:基础代码实现
LangChain的核心是它的组件化架构。让我们从最简单的聊天模型开始:
from langchain.chat_models import init_chat_model
# 初始化聊天模型(这里使用OpenAI,你也可以换成其他模型)
model = init_chat_model("openai:gpt-5.5")
# 发送第一个消息
response = model.invoke("你好,LangChain!")
print(response.content)
第三步:添加记忆功能
让AI记住对话历史是创建智能应用的关键:
from langchain.memory import ConversationBufferMemory
# 创建记忆组件
memory = ConversationBufferMemory()
# 在对话中使用记忆
conversation = [
"我叫小明,是一名软件工程师",
"我的工作是什么?"
]
for message in conversation:
response = model.invoke(message)
memory.save_context({"input": message}, {"output": response.content})
🔧 核心功能深度解析
模块化架构设计
LangChain采用分层架构设计,让你可以从简单到复杂逐步构建应用:
- 核心层:提供基础抽象和接口,位于 libs/core/langchain_core/
- 标准层:包含常用组件和工具,位于 libs/langchain/langchain_classic/
- 集成层:支持第三方服务和模型,位于 libs/partners/
智能链式执行
LangChain最强大的特性是它的"链"(Chain)概念。通过将多个组件连接起来,你可以创建复杂的工作流:
from langchain.chains import LLMChain
from langchain.prompts import ChatPromptTemplate
# 创建提示模板
prompt = ChatPromptTemplate.from_template("将以下文本翻译成{language}: {text}")
# 构建链
chain = LLMChain(llm=model, prompt=prompt)
# 执行链
result = chain.run(language="法语", text="你好,世界!")
丰富的工具集成
LangChain内置了数百种工具,让你的AI代理能够执行各种任务:
- 网络搜索:通过SerpAPI或Brave Search获取实时信息
- 文档处理:支持PDF、Word、Excel等多种格式
- 数据库连接:SQL、向量数据库等
- API调用:RESTful API集成
🛠️ 实战应用:构建智能文档问答系统
项目结构规划
让我们构建一个完整的文档问答系统,它能够读取文档并回答相关问题:
my-document-qa/
├── docs/ # 存放文档
├── vector_store/ # 向量数据库
├── app.py # 主应用
└── requirements.txt # 依赖文件
核心代码实现
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
# 1. 加载文档
loader = DirectoryLoader('docs/', glob="**/*.txt")
documents = loader.load()
# 2. 分割文本
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
texts = text_splitter.split_documents(documents)
# 3. 创建向量存储
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(texts, embeddings)
# 4. 创建问答链
qa_chain = RetrievalQA.from_chain_type(
llm=model,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
# 5. 提问
answer = qa_chain.run("文档中提到了哪些关键技术?")
性能优化技巧
- 分块策略:根据文档类型调整chunk_size,技术文档建议500-1000字符
- 重叠设置:chunk_overlap设置为chunk_size的20%左右,保持上下文连贯
- 索引优化:定期更新向量存储,删除过期文档
⚡ 进阶技巧:提升AI代理的智能水平
多代理协作系统
LangChain支持创建多个AI代理协同工作,每个代理负责不同任务:
from langchain.agents import initialize_agent, Tool
from langchain.tools import DuckDuckGoSearchRun
# 创建搜索工具
search = DuckDuckGoSearchRun()
tools = [
Tool(
name="网络搜索",
func=search.run,
description="用于搜索最新信息"
),
# 可以添加更多工具...
]
# 创建多工具代理
agent = initialize_agent(
tools,
model,
agent="zero-shot-react-description",
verbose=True
)
# 执行复杂任务
agent.run("查找最新的AI技术趋势并总结要点")
自定义工具开发
当内置工具不够用时,你可以轻松创建自定义工具:
from langchain.tools import BaseTool
from typing import Type
class CustomCalculatorTool(BaseTool):
name = "自定义计算器"
description = "用于执行数学计算"
def _run(self, expression: str) -> str:
try:
result = eval(expression)
return f"计算结果: {result}"
except Exception as e:
return f"计算错误: {str(e)}"
async def _arun(self, expression: str) -> str:
return self._run(expression)
错误处理与重试机制
在生产环境中,稳定的错误处理至关重要:
from langchain.callbacks import get_openai_callback
from langchain.retrievers import ContextualCompressionRetriever
# 使用回调监控
with get_openai_callback() as cb:
response = model.invoke("复杂问题...")
print(f"本次调用消耗: {cb.total_tokens} tokens")
# 添加重试机制
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def safe_invoke(prompt):
return model.invoke(prompt)
🚨 常见问题与解决方案
问题1:安装依赖冲突
症状:pip install langchain 时出现版本冲突
解决方案:
# 使用uv避免依赖冲突
uv sync
# 或者创建干净的虚拟环境
python -m venv venv
source venv/bin/activate
uv pip install langchain
问题2:API密钥配置
症状:调用模型时出现认证错误
解决方案:
# 设置环境变量(Linux/Mac)
export OPENAI_API_KEY="your-api-key"
# 或者在代码中直接设置
import os
os.environ["OPENAI_API_KEY"] = "your-api-key"
问题3:内存使用过高
症状:处理大文档时内存溢出
解决方案:
# 使用流式处理
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
model = init_chat_model(
"openai:gpt-5.5",
streaming=True,
callbacks=[StreamingStdOutCallbackHandler()]
)
# 分批处理大文档
batch_size = 10
for i in range(0, len(documents), batch_size):
batch = documents[i:i+batch_size]
# 处理批次...
问题4:响应速度慢
症状:查询需要很长时间才能返回结果
解决方案:
# 启用缓存
from langchain.cache import InMemoryCache
from langchain.globals import set_llm_cache
set_llm_cache(InMemoryCache())
# 使用异步调用提高并发性能
import asyncio
async def process_multiple_queries(queries):
tasks = [model.ainvoke(q) for q in queries]
results = await asyncio.gather(*tasks)
return results
📈 性能优化最佳实践
1. 选择合适的模型
不同的任务需要不同的模型配置:
- 简单问答:使用较小模型如GPT-3.5-turbo
- 复杂推理:使用GPT-4或Claude-3
- 实时应用:考虑本地模型如Llama 2
2. 优化提示工程
清晰的提示能显著提升效果:
# 不好的提示
prompt = "总结这篇文章"
# 好的提示
good_prompt = """
请按照以下要求总结文章:
1. 提取3个关键观点
2. 每个观点用一句话说明
3. 最后给出总体评价
文章内容:{article}
"""
3. 监控与日志
在生产环境中添加监控:
from langchain.callbacks import LangChainTracer
# 启用追踪
tracer = LangChainTracer()
model = init_chat_model("openai:gpt-5.5", callbacks=[tracer])
# 记录详细日志
import logging
logging.basicConfig(level=logging.INFO)
🎯 总结与下一步
通过本文的3步入门指南,你已经掌握了LangChain的核心概念和基本用法。从简单的聊天模型到复杂的多代理系统,LangChain提供了完整的工具链来构建AI应用。
下一步学习建议:
- 深入学习核心模块:研究 libs/core/langchain_core/runnables/ 中的可运行组件
- 探索高级功能:查看 libs/langchain/langchain_classic/chains/ 中的各种链实现
- 实践项目:尝试构建一个完整的RAG(检索增强生成)系统
- 加入社区:参与LangChain官方论坛和GitHub讨论
记住,学习LangChain最好的方式就是动手实践。从一个小项目开始,逐步增加复杂度,你很快就能掌握这个强大的AI开发框架。
关键收获:
- LangChain让AI应用开发变得模块化和可维护
- 链式执行模式是LangChain的核心优势
- 丰富的工具集成大大扩展了AI的能力边界
- 良好的错误处理和监控是生产应用的关键
现在就开始你的LangChain之旅吧!克隆项目仓库 https://gitcode.com/GitHub_Trending/la/langchain,探索更多示例和文档,构建属于你的智能应用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



