大模型应用开发实战:LangChain+RAG+Agent全栈指南
这次我们来看一套完整的大模型应用开发教程重点覆盖 Agent、LangChain 和 RAG 三大核心方向。如果你正在寻找一套从零开始、能快速上手、能跑通真实项目的全栈开发指南这篇文章可以直接收藏。这套教程最大的特点是实战导向不空谈概念而是直接带你在本地环境搭建开发框架集成主流大模型 API完成从基础对话到复杂 Agent 系统的全流程开发。无论你是想入门大模型应用开发还是希望将现有业务接入 AI 能力都可以通过本文介绍的路径快速验证可行性。我们先快速梳理一下这套教程的核心内容框架。教程围绕三大模块展开LangChain 作为应用开发的基础框架负责连接大模型、工具链和数据源RAG检索增强生成解决大模型的知识时效性和私有数据查询问题Agent 则赋予大模型自主调用工具、执行多步任务的能力。三部分内容环环相扣学完后你就能独立开发一个具备知识库查询、逻辑推理和自动化执行能力的 AI 应用。1. 核心能力速览能力项说明技术栈LangChain RAG Agent支持 OpenAI、通义千问、智谱AI、Ollama 本地模型等开发语言Python 3.8硬件门槛基础开发无需高端 GPUAPI 调用模式对硬件无要求本地模型部署需按模型大小准备显存启动方式命令行启动、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.04Python 版本3.8、3.9 或 3.10避免使用 3.11 以防某些包兼容性问题包管理工具pip 或 conda网络环境能正常访问 PyPI 和所需的大模型 API 服务如 OpenAI、通义千问等硬件建议API 模式4GB 以上内存无需独立显卡本地模型模式根据模型尺寸准备显存7B 模型建议 8GB 以上显存如果你计划使用国内大模型 API如通义千问、智谱AI需要提前申请对应的 API Key。Ollama 本地部署则无需网络权限但需要下载模型文件。4. 安装部署与启动方式教程的代码库通常包含requirements.txt或environment.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(modelqwen: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, encodingutf-8) as f: f.write(LangChain 是一个用于开发大模型应用的框架。它提供了链、代理、记忆等组件。) loader TextLoader(test_doc.txt) documents loader.load() # 2. 分割文本 text_splitter RecursiveCharacterTextSplitter(chunk_size200, chunk_overlap50) texts text_splitter.split_documents(documents) # 3. 创建向量库 embeddings OllamaEmbeddings(modelnomic-embed-text) vectorstore Chroma.from_documents(documentstexts, embeddingembeddings) # 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( nameWikipedia, funcwikipedia.run, description用于查询事实性信息 ) ] # 初始化 Agent使用本地模型 from langchain.llms import Ollama llm Ollama(modelqwen:7b) agent initialize_agent(tools, llm, agentzero-shot-react-description, verboseTrue) # 测试 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(titleLangChain Server) # 创建链 llm Ollama(modelqwen:7b) prompt ChatPromptTemplate.from_template(请回答{question}) chain prompt | llm # 注册路由 add_routes(app, chain, path/chat) if __name__ __main__: import uvicorn uvicorn.run(app, hostlocalhost, port8000)启动服务后可以通过 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_clsPyPDFLoader ) documents loader.load() # 批量分割 text_splitter RecursiveCharacterTextSplitter( chunk_size1000, chunk_overlap200 ) chunks text_splitter.split_documents(documents) # 批量向量化显示进度 from tqdm import tqdm vectorstore Chroma.from_documents( documentschunks, embeddingOllamaEmbeddings(modelnomic-embed-text), collection_metadata{hnsw:space: cosine} ) print(f成功处理 {len(chunks)} 个文档块)7. 资源占用与性能观察7.1 API 调用模式资源占用在纯 API 调用模式下资源占用主要来自内存LangChain 应用本身约 200-500MB向量数据库根据文档量线性增长网络每次 API 调用需要稳定的网络连接响应时间依赖模型服务商7.2 本地模型模式资源占用本地模型部署的资源需求更具挑战性模型规模最小显存推荐显存CPU 模式内存7B 模型8GB12GB16GB13B 模型16GB24GB32GB34B 模型32GB48GB64GB监控资源占用的方法# 查看 GPU 使用情况NVIDIA nvidia-smi # 查看进程资源占用 htop # Linux/macOS tasklist # Windows7.3 性能优化建议向量检索优化控制 chunk_size避免过大的文档块影响检索精度和速度缓存策略对频繁查询的问题实现答案缓存减少模型调用异步处理对批量任务使用异步调用提高吞吐量模型选择根据任务复杂度选择合适的模型简单任务不需要超大模型8. 常见问题与排查方法问题现象可能原因排查方式解决方案导入 LangChain 报错版本冲突或依赖缺失检查 Python 版本和包版本兼容性使用虚拟环境按教程版本安装Ollama 连接失败服务未启动或模型未下载检查ollama list和ollama serve启动服务下载对应模型向量检索结果不相关文档分割策略不当或 embedding 模型不适合检查 chunk_size 和重叠比例调整文本分割参数尝试不同 embedding 模型Agent 无法正确选择工具工具描述不清晰或模型能力不足查看 Agent 的思考过程verboseTrue简化工具描述升级模型版本API 调用超时或限流网络问题或达到 API 调用限制检查网络连接和 API 配额添加重试机制监控使用量显存不足模型太大或并发任务过多监控显存使用情况换用更小模型减少批量大小9. 最佳实践与使用建议9.1 开发流程建议从小开始先用简单的对话链验证基础功能再逐步添加 RAG、Agent 等复杂组件模块化开发将文档处理、向量检索、模型调用等环节拆分为独立模块便于测试和调试版本控制对提示词模板、模型配置、工具定义等实现版本管理方便回滚和对比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支持图像、语音、长期记忆管理、分布式向量数据库、模型微调定制等。这套基础框架为你后续的技术进阶打下了坚实根基。