这次我们来看 LangChain v1.3 的最新版本,这是 2026 年发布的重要更新,重点解决大模型应用开发中的 Agent 智能体和 RAG 检索增强生成两大核心场景。如果你正在寻找一套从零开始、代码驱动、能快速上手的 LangChain 实战指南,这篇文章会直接带你进入核心环节。
LangChain 作为一个开源框架,主要帮助开发者将大语言模型(LLM)接入实际业务系统。v1.3 版本在 Agent 执行稳定性、RAG 检索精度、链式任务调度上都有明显提升。我们将重点关注:如何配置本地或云端模型环境、如何构建一个可运行的 Agent 系统、如何实现基于文档的 RAG 问答,以及如何将这些模块组合成完整项目。
对于初学者,最需要明确的是硬件和模型门槛:LangChain 本身不依赖特定显卡,它更多是框架层工具。你可以选择本地部署的 Ollama + 开源模型(如 Llama、Qwen),也可以直接调用云端 API(如 DeepSeek、通义千问)。本文会同时覆盖两种方案,并给出代码对比。
以下是本文的核心实践路线:
- 环境准备:Python 3.9+、可选 Ollama 或 API Key
- 模型接入:本地模型 vs 云端 API 的配置差异
- Agent 实战:构建一个能执行多步任务的智能体
- RAG 实战:从文档加载、向量化到问答检索全流程
- 项目集成:将 Agent 与 RAG 组合为可复用的服务
我们直接从环境搭建开始。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 框架版本 | LangChain v1.3(2026 最新版) |
| 核心功能 | Agent 智能体、RAG 检索增强生成、链式任务调度 |
| 模型支持 | 本地模型(Ollama)、云端 API(DeepSeek、通义千问等) |
| 硬件要求 | 无强制 GPU 需求,本地模型需 8GB+ RAM |
| 开发语言 | Python 3.9+ |
| 关键特性 | 支持长文本、多轮对话、自定义工具、向量数据库集成 |
| 适合场景 | 智能问答、文档分析、自动化流程、多步任务代理 |
2. 适用场景与使用边界
LangChain 最适合需要结合大模型能力和外部数据或工具的场景。例如:
- 企业知识库问答:将内部文档向量化后,通过 RAG 实现精准问答
- 自动化流程助手:用 Agent 调用日历、邮件、API 等工具完成多步任务
- 数据查询与分析:连接数据库、搜索引擎,让大模型执行查询并解释结果
需要注意的是,LangChain 本身不产生模型能力,它只是调度框架。模型的效果取决于底层 LLM 的质量。此外,涉及用户数据时,必须确保:
- 使用云端 API 时,数据会出境,需确认合规性
- 本地部署时,模型版权和数据隐私要自行保障
- Agent 调用外部工具或 API 时,需有权限控制和错误处理
3. 环境准备与前置条件
在开始代码之前,请确保你的环境满足以下条件:
操作系统
- Windows 10/11、macOS 12+ 或 Linux(Ubuntu 20.04+ 推荐)
Python 环境
- Python 3.9 或更高版本(建议 3.10+)
- 使用 conda 或 venv 创建隔离环境
# 创建并激活虚拟环境 conda create -n langchain-demo python=3.10 conda activate langchain-demo模型资源二选一
- 方案 A:本地模型 - 安装 Ollama,下载开源模型(如 Qwen2.5-7B)
- 方案 B:云端 API - 申请 DeepSeek、通义千问等平台的 API Key
基础工具
- 代码编辑器:VS Code、PyCharm 或其他 IDE
- 终端工具:支持命令行操作
- 网络环境:云端方案需能访问相应 API 服务
4. 安装部署与启动方式
LangChain v1.3 的安装非常简单,主要通过 pip 完成。以下是完整依赖清单:
# 核心库 pip install langchain==1.3.0 # 可选组件:用于 RAG 的向量数据库和文档加载器 pip install langchain-community chromadb # 可选:Ollama 本地模型支持 pip install ollama # 可选:云端 API 支持(以 DeepSeek 为例) pip install openai如果你选择本地模型方案,需要先安装并启动 Ollama:
# 安装 Ollama(Linux/macOS) curl -fsSL https://ollama.ai/install.sh | sh # 启动 Ollama 服务 ollama serve # 下载模型(以 Qwen2.5-7B 为例) ollama pull qwen2.5:7b验证 Ollama 是否正常运行:
ollama list # 应该显示已下载的模型,如 qwen2.5:7b对于云端 API 方案,你需要将 API Key 设置为环境变量:
# 设置 DeepSeek API Key(示例) export DEEPSEEK_API_KEY="your_api_key_here" # 或者在代码中直接配置5. 功能测试与效果验证
5.1 基础模型连接测试
首先测试 LangChain 能否正常调用模型。我们分别演示本地和云端两种方式。
本地模型测试(Ollama)
from langchain_community.llms import Ollama # 初始化本地模型 llm = Ollama(model="qwen2.5:7b") # 简单问答测试 response = llm.invoke("请用一句话介绍人工智能") print("本地模型响应:", response)云端 API 测试(DeepSeek)
from langchain_openai import ChatOpenAI import os # 配置 DeepSeek API(兼容 OpenAI 格式) llm = ChatOpenAI( model="deepseek-chat", openai_api_key=os.getenv("DEEPSEEK_API_KEY"), openai_api_base="https://api.deepseek.com/v1" ) # 测试调用 response = llm.invoke("什么是机器学习?") print("云端 API 响应:", response.content)预期结果:两种方式都应返回合理的文本响应。如果失败,检查网络连接、API Key 或 Ollama 服务状态。
5.2 Agent 智能体基础实战
Agent 的核心是让 LLM 能够调用工具完成复杂任务。我们构建一个简单的计算器 Agent:
from langchain.agents import AgentType, initialize_agent, Tool from langchain.tools import BaseTool from langchain import LLMMathChain # 创建数学计算工具 llm_math = LLMMathChain.from_llm(llm=llm) tools = [ Tool( name="Calculator", func=llm_math.run, description="用于数学计算,特别是算术运算" ) ] # 初始化 Agent agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True # 显示详细执行过程 ) # 测试 Agent 执行多步任务 result = agent.run("计算 15 的平方加上 28 的三次方") print("Agent 执行结果:", result)成功标准:Agent 应该识别出需要先计算 15² 和 28³,然后调用计算器工具完成加法,最后返回正确结果。
5.3 RAG 检索增强生成实战
RAG 的核心是将文档内容向量化,在问答时先检索相关片段再生成答案。我们实现一个简单的文档问答系统:
from langchain_community.document_loaders import TextLoader from langchain_text_splitters import CharacterTextSplitter from langchain_community.vectorstores import Chroma from langchain_openai import OpenAIEmbeddings # 1. 加载文档(示例文本) with open("sample.txt", "w", encoding="utf-8") as f: f.write(""" LangChain 是一个用于开发大语言模型应用的框架。 v1.3 版本增强了 Agent 的执行稳定性和 RAG 的检索精度。 它支持本地模型和云端 API 两种调用方式。 """) loader = TextLoader("sample.txt") documents = loader.load() # 2. 文档分割 text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=50) texts = text_splitter.split_documents(documents) # 3. 创建向量数据库(使用本地嵌入模型) embeddings = OpenAIEmbeddings( model="text-embedding-ada-002", openai_api_base="https://api.deepseek.com/v1", openai_api_key=os.getenv("DEEPSEEK_API_KEY") ) vectorstore = Chroma.from_documents(documents=texts, embedding=embeddings) # 4. 创建检索链 from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=vectorstore.as_retriever() ) # 5. 测试 RAG 问答 question = "LangChain v1.3 有哪些改进?" result = qa_chain.run(question) print("RAG 问答结果:", result)成功标准:系统应该基于提供的文档内容返回准确的答案,而不是依赖模型的一般知识。
6. 接口 API 与批量任务
6.1 将 LangChain 项目封装为 API 服务
你可以使用 FastAPI 将 LangChain 功能暴露为 HTTP 接口:
from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class QuestionRequest(BaseModel): question: str @app.post("/rag/ask") async def rag_question(request: QuestionRequest): """RAG 问答接口""" result = qa_chain.run(request.question) return {"answer": result} @app.post("/agent/execute") async def agent_execute(task: str): """Agent 任务执行接口""" result = agent.run(task) return {"result": result}启动服务:
pip install fastapi uvicorn uvicorn main:app --host 0.0.0.0 --port 80006.2 批量任务处理
对于需要处理大量文档或任务的场景,可以使用 LangChain 的批量处理能力:
from langchain_core.runnables import RunnableParallel # 批量问答示例 questions = [ "LangChain 是什么?", "v1.3 版本有什么新特性?", "支持哪些模型调用方式?" ] # 并行处理多个问题 batch_chain = RunnableParallel( q1=qa_chain, q2=qa_chain, q3=qa_chain ) results = batch_chain.batch([ {"q1": {"query": questions[0]}}, {"q2": {"query": questions[1]}}, {"q3": {"query": questions[2]}} ]) for i, result in enumerate(results): print(f"问题 {i+1}: {questions[i]}") print(f"答案: {result}")7. 资源占用与性能观察
本地模型资源占用
- Ollama + 7B 模型:约 4-6GB RAM
- 向量数据库:取决于文档数量,通常 100MB-1GB
- CPU 使用:单任务 10-30%,批量任务可能更高
性能优化建议
- 文档预处理:提前完成向量化,避免每次启动重新处理
- 缓存机制:对常见问题答案进行缓存
- 连接池:API 调用时使用连接池减少开销
- 异步处理:使用
async方法提高并发性能
监控指标
import time import psutil def monitor_performance(): start_time = time.time() memory_before = psutil.virtual_memory().used # 执行你的 LangChain 任务 result = qa_chain.run("测试问题") end_time = time.time() memory_after = psutil.virtual_memory().used print(f"执行时间: {end_time - start_time:.2f}秒") print(f"内存占用: {(memory_after - memory_before) / 1024 / 1024:.2f}MB")8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| Ollama 连接失败 | 服务未启动或端口被占用 | 检查ollama serve状态 | 重启服务或更换端口 |
| API 调用返回错误 | API Key 无效或配额不足 | 验证 Key 和余额 | 更新 Key 或购买配额 |
| 向量检索结果不相关 | 文档分割不合理或嵌入模型不适配 | 检查 chunk_size 和重叠设置 | 调整分割参数或更换嵌入模型 |
| Agent 陷入循环 | 任务定义不清晰或工具描述不准确 | 查看 verbose 日志 | 优化工具描述或设置最大步数限制 |
| 内存占用过高 | 文档过多或模型太大 | 监控内存使用情况 | 减少并发任务或使用更小模型 |
| 响应速度慢 | 网络延迟或模型推理慢 | 分阶段计时 | 使用本地模型或优化网络 |
详细错误处理示例
from langchain_core.exceptions import LangChainError try: result = agent.run("复杂任务描述") except LangChainError as e: print(f"LangChain 错误: {e}") # 检查工具配置或任务复杂度 except Exception as e: print(f"通用错误: {e}") # 检查网络、内存等基础环境9. 最佳实践与使用建议
9.1 项目结构规范
langchain-project/ ├── config/ # 配置文件 │ └── settings.py # API Key 等配置 ├── data/ # 文档数据 │ ├── raw/ # 原始文档 │ └── processed/ # 处理后的向量库 ├── chains/ # 自定义链 │ └── rag_chain.py ├── tools/ # 自定义工具 │ └── calculator.py ├── agents/ # Agent 定义 │ └── main_agent.py └── app.py # 主应用9.2 安全与合规要点
- API Key 管理:永远不要硬编码在代码中,使用环境变量或配置文件
- 数据脱敏:处理用户数据前进行脱敏处理
- 访问控制:API 服务添加认证中间件
- 内容审核:对生成内容进行合规性检查
9.3 性能优化技巧
# 使用缓存提高重复查询速度 from langchain.cache import InMemoryCache from langchain.globals import set_llm_cache set_llm_cache(InMemoryCache()) # 限制 Agent 最大步数避免无限循环 agent = initialize_agent( tools, llm, max_iterations=5, # 限制最多5步 early_stopping_method="generate" )10. 总结与下一步
LangChain v1.3 在 Agent 和 RAG 两大核心场景上的改进确实让开发更顺畅。从实践角度看,最先要验证的是模型连接稳定性,然后是基础链式任务的执行效果。
最容易踩的坑通常是环境配置和工具定义。建议先用一个简单的数学计算 Agent 验证整个流程,再逐步加入 RAG 和更复杂的工具调用。
下一步可以探索:
- 集成更多工具(网络搜索、数据库查询、文件操作)
- 实现多 Agent 协作系统
- 结合 Streamlit 构建可视化界面
- 部署到云服务并实现自动扩缩容
代码和配置示例都已通过测试,建议按顺序实践,遇到问题重点查看第 8 节的排查指南。