LangChain开发实战教程(非常详细),从LLM调用到Agent架构精通,收藏这一篇就够了!

发布时间:2026/6/27 22:09:06

LangChain开发实战教程(非常详细),从LLM调用到Agent架构精通,收藏这一篇就够了! 一、为什么要用 LangChain自从 OpenAI 推出 ChatGPT 之后大模型能力迅速普及。越来越多的开发者开始将 LLM 接入业务系统但很快会遇到三个现实问题1、模型接口不统一 —— 今天用 OpenAI明天换国内模型代码要大改2、Prompt 难管理 —— 提示词到处拼字符串无法版本控制3、业务流程复杂 —— RAG、Agent、多工具调用全是胶水代码这时候LangChain 就登场了。LangChain 本质是一套 “面向大模型应用开发的工程化框架”它把模型调用、Prompt 管理、知识检索、流程编排、Agent 调度全部抽象成可组合模块让你像搭积木一样构建 AI 应用。二、LangChain 架构全景LangChain 可以理解为五大核心能力层记住一句话LangChain LLM 调用标准化 RAG 工程化 Agent 自动化三、模型封装统一不同大模型接口LangChain 最大的优势之一是统一模型接口。你可以在不修改业务逻辑的前提下在不同模型之间切换1、OpenAI GPT 系列2、Anthropic Claude3、国内文心一言4、本地模型Ollama / Llama你只需要更换模型初始化方式其余调用方式一致。这在企业级项目里极其重要 —— 模型可替换性 风险可控性。四、Prompt 工程把提示词变成函数很多开发者刚开始接触 LLM 时喜欢直接写f给我讲一个关于{topic}的笑话问题是Prompt 无法版本管理逻辑和提示词耦合难以团队协作优化LangChain 提供 PromptTemplate 和 ChatPromptTemplate支持变量占位支持多角色system / user / assistant支持文件加载支持 Few-shot 示例最佳实践是Prompt 与代码彻底解耦单独维护。在中大型 AI 项目中Prompt 甚至应该像 SQL 一样被当作核心资产管理。五、RAG给大模型注入私有知识很多人说“模型不准”其实问题不在模型而在没有给模型知识。RAGRetrieval Augmented Generation就是解决方案。LangChain 的 RAG 流程通常包括1、文档加载PDF / Word / 网页 / 数据库2、文本切分3、向量化4、存入向量数据库如 FAISS5、检索 生成回答在这里LangChain 和 LlamaIndex 经常被拿来对比。简单总结LangChain 强在流程编排 AgentLlamaIndex 强在数据索引能力很多项目会用 LlamaIndex 做数据层用 LangChain 做应用层六、LCELLangChain 的灵魂如果说 LangChain 是一套大模型应用框架那么 LCELLangChain Expression Language 就是它的核心编排能力。很多人学 LangChain 只关注模型调用和 RAG但真正决定工程质量的是 LCEL。6.1 为什么需要 LCEL假设我们要做一个最简单的流程1、接收用户输入2、构造 Prompt3、调用 LLM4、解析输出传统写法是“按步骤调用函数”。而 LCEL 的思路是用“管道”把各个组件连接起来描述数据如何流动。6.2 LCEL 的核心写法在 LCEL 里Prompt 是一个可运行组件LLM 是一个可运行组件Parser 也是一个可运行组件它们都实现了统一接口所以可以用 | 连接chain prompt | llm | StrOutputParser()调用时chain.invoke({topic: 程序员})这行代码的含义非常清晰输入 → Prompt → LLM → 解析输出比传统“手动 format invoke parse”逻辑更直观、结构更干净。6.3 LCEL 的优势在哪里1.自动支持流式输出同一条链可以直接流式执行for chunk in chain.stream(input): print(chunk)无需改内部逻辑。2.自动支持异步同步调用chain.invoke()异步调用await chain.ainvoke()流程不需要重写。3.自动并行执行在 RAG 场景中如果有多个 Retriever{ context1: retriever1, context2: retriever2, question: RunnablePassthrough() } | prompt | llmretriever1 和 retriever2 会自动并行执行。不需要写 asyncio也不需要手动调度。6.4 一句话理解 LCEL普通写法是按顺序写函数调用LCEL 写法是声明一条数据流管道它把“步骤式代码”升级为“数据流架构”。这也是为什么说LCEL 是 LangChain 的灵魂。小结1、如果你只是调用模型你只是“在用 API”。2、如果你掌握 LCEL你是在“设计 AI 工作流”。3、建议所有做 RAG 或 Agent 的开发者都优先用 LCEL 组织流程。4、它会让你的代码更清晰、更可维护也更适合生产环境。七、对话历史管理控制 Token 成本真实业务中多轮对话会带来一个问题上下文越来越长 → Token 成本暴涨LangChain 提供历史裁剪保留最近消息类型过滤只保留 human持久化存储SQL / Redis在企业场景里这一点非常关键控制成本避免超过模型上下文长度保证系统稳定性八、Agent让模型自己思考与行动如果说 RAG 是“查资料回答问题”那么 Agent 是给一个目标让模型自己规划步骤。最经典的是 ReAct 模式思考 → 行动 → 观察 → 再思考 → 输出结果举个例子问2024年某明星演唱会是星期几模型会1、搜索日期2、解析日期3、调用“星期计算工具”4、输出答案整个过程自动完成。这就是 Agent 的价值 —— 让模型具备“任务执行能力”。九、LangServe快速部署 API当你构建好一个 LCEL 流程后LangChain 提供 LangServe可以一行代码生成 REST API。你不需要写路由、序列化、异常处理逻辑。直接部署成可调用服务。在微服务架构下这非常适合快速构建 AI 中台。十、文档功能模块https://python.langchain.com/docs/get_started/introductionAPI 文档https://api.python.langchain.com/en/latest/langchain_api_reference.html三方组件集成https://python.langchain.com/docs/integrations/platforms/官方应用案例https://python.langchain.com/docs/use_cases调试部署等指导https://python.langchain.com/docs/guides/debugging十一、LangChain 适合什么场景企业知识库问答系统AI 客服系统智能文档助手代码生成平台多工具自动执行系统内部数据分析 Agent不适合只做简单聊天直接调用 API 更轻量极端高性能推理系统需自定义架构十二、企业级最佳实践结合实际项目经验总结几点1.Prompt 必须独立管理不要写死在代码里。2.RAG 参数要反复调优chunk_size、overlap 直接影响效果。3.尽量使用 LCEL不要回到命令式“胶水代码”。4.严格做日志追踪生产环境一定接入 LangSmith。5.版本锁定LangChain 更新快升级前一定看 breaking change。十三、总结LangChain 并不是“又一个 AI 库”。它是一次面向大模型时代的软件工程抽象升级。它告诉我们三件事1、把 Prompt 当函数2、把流程当管道3、把模型当可调度执行器理解这三点比会写 API 更重要。如果你准备入门 AI 工程化开发建议路线1、先做一个 RAG 问答系统2、加入对话历史管理3、用 LCEL 重构流程4、最后引入 Agent 能力当你走完这条路径你对大模型应用开发的理解会完全不同。LangChain RAG 示例LangChain RAG 示例源码from dotenv import load_dotenv import os import requests # Load environment variables from .env file load_dotenv() from qdrant_client import QdrantClient from qdrant_client.models import VectorParams, Distance from langchain_community.document_loaders import PyMuPDFLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_huggingface import HuggingFaceEmbeddings from langchain_qdrant import QdrantVectorStore from langchain_core.documents import Document EMBEDDING_DIM 384 # all-MiniLM-L6-v2 模型的维度 COLLECTION_NAME langchain_demo PATH ./qdrant_db_langchain # 设置 Tarvos API key 和 URL从环境变量读取 TARVOS_API_KEY os.getenv(TARVOS_API_KEY) TARVOS_API_URL os.getenv(TARVOS_API_URL) TARVOS_MODEL os.getenv(TARVOS_MODEL, meta-llama/Llama-3.3-70B-Instruct) # 1. 加载本地 embedding 模型 print(正在加载本地 embedding 模型...) embeddings HuggingFaceEmbeddings( model_namesentence-transformers/all-MiniLM-L6-v2 ) # 2. 加载 ./data 目录下所有 PDF 文档 print(正在加载文档...) import glob pdf_files glob.glob(./data/*.pdf) if not pdf_files: raise ValueError(./data 目录下没有找到 PDF 文件请先添加 PDF 文件) all_documents [] for pdf_path in pdf_files: loader PyMuPDFLoader(pdf_path) docs loader.load() all_documents.extend(docs) print(f共加载 {len(all_documents)} 页文档) # 3. 文档切片chunk_size300, chunk_overlap100与 llamaIndex.py 一致 print(正在切片文档...) text_splitter RecursiveCharacterTextSplitter( chunk_size300, chunk_overlap100 ) chunks text_splitter.split_documents(all_documents) print(f共切分为 {len(chunks)} 个块) # 4. 创建 Qdrant Collection print(正在创建向量数据库...) qdrant_client QdrantClient(pathPATH) if qdrant_client.collection_exists(collection_nameCOLLECTION_NAME): qdrant_client.delete_collection(collection_nameCOLLECTION_NAME) qdrant_client.create_collection( collection_nameCOLLECTION_NAME, vectors_configVectorParams(sizeEMBEDDING_DIM, distanceDistance.COSINE) ) # 5. 将文档向量存入 Qdrant print(正在创建索引...) vector_store QdrantVectorStore( clientqdrant_client, collection_nameCOLLECTION_NAME, embeddingembeddings ) vector_store.add_documents(chunks) # 6. 创建检索器 retriever vector_store.as_retriever(search_kwargs{k: 3}) # 7. Tarvos API 问答函数与 llamaIndex.py 完全一致 def ask_tarvos(question, context): headers { Content-Type: application/json, Authorization: TARVOS_API_KEY, } body { model: TARVOS_MODEL, messages: [ {role: system, content: 你是一个专业的AI助手请根据提供的检索内容回答用户问题。如果检索内容与问题无关请说明无法回答。}, {role: user, content: f参考内容\n{context}\n\n问题{question}} ] } try: resp requests.post(TARVOS_API_URL, jsonbody, headersheaders, timeout60) return resp.json()[choices][0][message][content] except Exception as e: return f调用 Tarvos API 失败: {str(e)} # 8. 主对话循环 print(\n✅ 系统就绪开始对话输入空行退出\n) while True: question input(User: ) if question.strip() : break # 检索 top-k 文档 docs retriever.invoke(question) context \n\n.join([doc.page_content for doc in docs]) # 调用 Tarvos API 生成答案 answer ask_tarvos(question, context) print(fAI: {answer}\n)学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻