大模型应用开发实战:LangChain+RAG+Agent全栈指南

这次我们来看一套完整的大模型应用开发教程,重点覆盖 Agent、LangChain 和 RAG 三大核心方向。如果你正在寻找一套从零开始、能快速上手、能跑通真实项目的全栈开发指南,这篇文章可以直接收藏。

这套教程最大的特点是实战导向:不空谈概念,而是直接带你在本地环境搭建开发框架,集成主流大模型 API,完成从基础对话到复杂 Agent 系统的全流程开发。无论你是想入门大模型应用开发,还是希望将现有业务接入 AI 能力,都可以通过本文介绍的路径快速验证可行性。

我们先快速梳理一下这套教程的核心内容框架。教程围绕三大模块展开:LangChain 作为应用开发的基础框架,负责连接大模型、工具链和数据源;RAG(检索增强生成)解决大模型的知识时效性和私有数据查询问题;Agent 则赋予大模型自主调用工具、执行多步任务的能力。三部分内容环环相扣,学完后你就能独立开发一个具备知识库查询、逻辑推理和自动化执行能力的 AI 应用。

1. 核心能力速览

能力项说明
技术栈LangChain + RAG + Agent,支持 OpenAI、通义千问、智谱AI、Ollama 本地模型等
开发语言Python 3.8+
硬件门槛基础开发无需高端 GPU,API 调用模式对硬件无要求;本地模型部署需按模型大小准备显存
启动方式命令行启动、Jupyter Notebook 交互、Web 服务部署
核心功能大模型对话、文档检索增强、多步任务自动化、工具调用、记忆管理
接口能力支持 REST API、Streamlit/Gradio WebUI、LangServe 部署
批量任务支持文档批量处理、多轮对话测试、自动化任务流
适合场景企业知识库问答、智能客服、自动化流程助手、个人学习助手

2. 适用场景与使用边界

这套教程适合三类读者:一是完全没有大模型开发经验但具备 Python 基础的初学者,可以通过 LangChain 快速搭建第一个 AI 应用;二是希望将企业内部文档、知识库接入大模型的开发者,RAG 部分会详细讲解文档加载、向量化、检索和生成的完整流水线;三是对自动化 Agent 感兴趣的进阶用户,教程会带你设计能自动联网搜索、执行代码、操作软件的多工具 Agent。

需要注意的是,虽然教程覆盖了本地模型部署(如 Ollama),但核心开发模式仍以 API 调用为主。如果你希望完全离线运行,需要自行准备足够的显存和本地模型资源。另外,Agent 的自动化能力涉及外部工具调用,在实际部署时要特别注意权限控制和安全边界,避免执行危险操作或访问敏感数据。

3. 环境准备与前置条件

开始前,请确保你的开发环境满足以下条件:

  • 操作系统:Windows 10/11、macOS 或 Linux(推荐 Ubuntu 20.04+)
  • Python 版本:3.8、3.9 或 3.10(避免使用 3.11+ 以防某些包兼容性问题)
  • 包管理工具:pip 或 conda
  • 网络环境:能正常访问 PyPI 和所需的大模型 API 服务(如 OpenAI、通义千问等)
  • 硬件建议
    • API 模式:4GB 以上内存,无需独立显卡
    • 本地模型模式:根据模型尺寸准备显存,7B 模型建议 8GB 以上显存

如果你计划使用国内大模型 API(如通义千问、智谱AI),需要提前申请对应的 API Key。Ollama 本地部署则无需网络权限,但需要下载模型文件。

4. 安装部署与启动方式

教程的代码库通常包含requirements.txtenvironment.yml文件。我们以最基础的 pip 安装为例,创建一个干净的 Python 环境:

# 创建并激活虚拟环境(可选但推荐) python -m venv llm-env source llm-env/bin/activate # Windows 使用 llm-env\Scripts\activate # 安装核心依赖 pip install langchain langchain-community langchain-core pip install openai tiktoken # 如果使用 OpenAI API pip install streamlit # 如果使用 WebUI

对于需要连接特定大模型的场景,安装对应的 LangChain 集成包:

# 通义千问 pip install dashscope # 智谱AI pip install zhipuai # Ollama 本地模型 pip install ollama # 向量数据库(以 Chroma 为例) pip install chromadb

验证安装是否成功:

# 测试 LangChain 基础功能 from langchain.chains import LLMChain from langchain.memory import ConversationBufferMemory print("LangChain 导入成功") # 测试 Ollama 连接(如果使用本地模型) import ollama print("Ollama 可用性检查通过")

5. 功能测试与效果验证

5.1 基础大模型对话测试

首先测试大模型的基本对话能力。以 Ollama 本地模型为例:

from langchain.llms import Ollama from langchain.prompts import ChatPromptTemplate # 初始化本地模型(确保已通过 ollama pull 下载模型) llm = Ollama(model="qwen:7b") # 创建提示词模板 prompt = ChatPromptTemplate.from_template("请用简单的话解释一下{concept}是什么?") chain = prompt | llm # 执行测试 response = chain.invoke({"concept": "人工智能"}) print("模型回复:", response)

预期结果:模型能返回一段关于人工智能的通俗解释。
失败排查:如果报错,检查 Ollama 服务是否启动、模型是否已下载、端口是否被占用。

5.2 RAG 文档检索增强测试

RAG 测试需要准备测试文档和向量数据库:

from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import OllamaEmbeddings from langchain.vectorstores import Chroma # 1. 加载文档(这里用临时创建的测试文件) with open("test_doc.txt", "w", encoding="utf-8") as f: f.write("LangChain 是一个用于开发大模型应用的框架。它提供了链、代理、记忆等组件。") loader = TextLoader("test_doc.txt") documents = loader.load() # 2. 分割文本 text_splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=50) texts = text_splitter.split_documents(documents) # 3. 创建向量库 embeddings = OllamaEmbeddings(model="nomic-embed-text") vectorstore = Chroma.from_documents(documents=texts, embedding=embeddings) # 4. 检索测试 retriever = vectorstore.as_retriever() docs = retriever.get_relevant_documents("LangChain 是什么?") print("检索结果:", [doc.page_content for doc in docs])

预期结果:返回包含"LangChain"相关信息的文档片段。
成功标准:检索结果与查询问题相关,且能作为上下文输入大模型生成更准确的回答。

5.3 Agent 工具调用测试

Agent 测试需要定义工具和任务规划:

from langchain.agents import initialize_agent, Tool from langchain.utilities import WikipediaAPIWrapper # 定义工具 wikipedia = WikipediaAPIWrapper() tools = [ Tool( name="Wikipedia", func=wikipedia.run, description="用于查询事实性信息" ) ] # 初始化 Agent(使用本地模型) from langchain.llms import Ollama llm = Ollama(model="qwen:7b") agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) # 测试 Agent response = agent.run("查询一下苹果公司的最新产品信息") print("Agent 执行结果:", response)

预期结果:Agent 能识别需要查询 Wikipedia,然后获取相关信息并生成总结。
注意事项:Agent 执行需要清晰的工具描述和足够强的模型推理能力,如果效果不佳可以尝试更换模型或简化任务。

6. 接口 API 与批量任务

6.1 Web 服务接口部署

使用 LangServe 快速部署 API 服务:

# app.py from fastapi import FastAPI from langchain.llms import Ollama from langchain.prompts import ChatPromptTemplate from langserve import add_routes app = FastAPI(title="LangChain Server") # 创建链 llm = Ollama(model="qwen:7b") prompt = ChatPromptTemplate.from_template("请回答:{question}") chain = prompt | llm # 注册路由 add_routes(app, chain, path="/chat") if __name__ == "__main__": import uvicorn uvicorn.run(app, host="localhost", port=8000)

启动服务后,可以通过 curl 测试:

curl -X POST "http://localhost:8000/chat/invoke" \ -H "Content-Type: application/json" \ -d '{"input": {"question": "你好,请介绍一下自己"}}'

6.2 批量文档处理任务

对于企业知识库场景,经常需要批量处理大量文档:

import os from langchain.document_loaders import DirectoryLoader, PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores import Chroma # 批量加载 PDF 文档 loader = DirectoryLoader( "./docs/", # 文档目录 glob="**/*.pdf", loader_cls=PyPDFLoader ) documents = loader.load() # 批量分割 text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) chunks = text_splitter.split_documents(documents) # 批量向量化(显示进度) from tqdm import tqdm vectorstore = Chroma.from_documents( documents=chunks, embedding=OllamaEmbeddings(model="nomic-embed-text"), collection_metadata={"hnsw:space": "cosine"} ) print(f"成功处理 {len(chunks)} 个文档块")

7. 资源占用与性能观察

7.1 API 调用模式资源占用

在纯 API 调用模式下,资源占用主要来自:

  • 内存:LangChain 应用本身约 200-500MB,向量数据库根据文档量线性增长
  • 网络:每次 API 调用需要稳定的网络连接,响应时间依赖模型服务商

7.2 本地模型模式资源占用

本地模型部署的资源需求更具挑战性:

模型规模最小显存推荐显存CPU 模式内存
7B 模型8GB12GB16GB+
13B 模型16GB24GB32GB+
34B 模型32GB48GB64GB+

监控资源占用的方法:

# 查看 GPU 使用情况(NVIDIA) nvidia-smi # 查看进程资源占用 htop # Linux/macOS tasklist # Windows

7.3 性能优化建议

  1. 向量检索优化:控制 chunk_size,避免过大的文档块影响检索精度和速度
  2. 缓存策略:对频繁查询的问题实现答案缓存,减少模型调用
  3. 异步处理:对批量任务使用异步调用,提高吞吐量
  4. 模型选择:根据任务复杂度选择合适的模型,简单任务不需要超大模型

8. 常见问题与排查方法

问题现象可能原因排查方式解决方案
导入 LangChain 报错版本冲突或依赖缺失检查 Python 版本和包版本兼容性使用虚拟环境,按教程版本安装
Ollama 连接失败服务未启动或模型未下载检查ollama listollama serve启动服务,下载对应模型
向量检索结果不相关文档分割策略不当或 embedding 模型不适合检查 chunk_size 和重叠比例调整文本分割参数,尝试不同 embedding 模型
Agent 无法正确选择工具工具描述不清晰或模型能力不足查看 Agent 的思考过程(verbose=True)简化工具描述,升级模型版本
API 调用超时或限流网络问题或达到 API 调用限制检查网络连接和 API 配额添加重试机制,监控使用量
显存不足模型太大或并发任务过多监控显存使用情况换用更小模型,减少批量大小

9. 最佳实践与使用建议

9.1 开发流程建议

  1. 从小开始:先用简单的对话链验证基础功能,再逐步添加 RAG、Agent 等复杂组件
  2. 模块化开发:将文档处理、向量检索、模型调用等环节拆分为独立模块,便于测试和调试
  3. 版本控制:对提示词模板、模型配置、工具定义等实现版本管理,方便回滚和对比

9.2 提示词工程技巧

有效的提示词能显著提升模型表现:

# 好的提示词示例 good_prompt = """ 你是一个专业的AI助手。请根据以下上下文回答问题。 上下文:{context} 问题:{question} 要求: 1. 如果上下文包含答案,请基于上下文回答 2. 如果上下文不包含答案,请明确说明不知道 3. 回答要简洁专业,不超过200字 """

9.3 安全与合规考虑

  • 数据隐私:处理企业文档时,确保向量数据库和模型服务符合数据安全要求
  • 内容审核:对用户输入和模型输出添加适当的内容过滤机制
  • 权限控制:Agent 的工具调用权限要严格限制,避免执行危险操作

10. 总结与下一步

这套大模型应用开发教程最实用的价值在于提供了完整的落地路径:从环境搭建到功能验证,从基础对话到复杂 Agent 系统。学完后你不仅理解了概念,更能亲手构建可工作的 AI 应用。

建议的学习路径是:先掌握 LangChain 基础链式调用,再实践 RAG 文档检索增强,最后挑战多工具 Agent 开发。每个阶段都要完成具体的项目,比如搭建一个个人知识库问答系统或自动化信息查询助手。

最容易遇到的坑是环境配置和版本兼容性问题,建议严格按照教程的版本要求搭建环境。另外,Agent 开发对模型能力要求较高,如果效果不理想可以先用更强的 API 模型(如 GPT-4)验证逻辑,再尝试优化本地模型。

下一步可以深入探索的方向包括:多模态 Agent(支持图像、语音)、长期记忆管理、分布式向量数据库、模型微调定制等。这套基础框架为你后续的技术进阶打下了坚实根基。