LangChain大模型应用开发框架详解:从入门到实战,打造AI应用的核心利器!

LangChain大模型应用开发框架详解:从入门到实战,打造AI应用的核心利器! LangChain是一个用于开发大语言模型LLMs驱动的应用程序的框架简化了LLM应用的生命周期。它集成了多种功能模块包括模型I/O封装、RAG检索增强生成、Agents智能体和Tools工具等帮助开发者快速构建、部署和优化AI应用。文章详细介绍了LangChain的核心概念、功能模块、关键代码示例以及RAG实战应用适合想要利用大模型开发应用的开发者参考。1.LangChain是什么LangChain是⼀个⽤于开发— 由⼤型语⾔模型LLMs驱动的应⽤程序的框架。简单来说理解就是一个用开发开发大模型应用的开发框架内部集成了很多功能也有很多第三方生态扩展用起来事半功倍就把他想象成C#中的.NET Core框架go中的Gin。它简化了大语言模型应用程序生命周期的各个阶段1.开发阶段用LangChain提供的组件开发应用程序利用第三方集成和模板快速启动。2.生产化阶段使用LangSmith检查、监控和评估您的链可以持续优化和部署。3.部署阶段使用LangServe将任何链转化为API核心作用就是帮你省去写 Web 框架代码例如FastAPI 的样板代码的时间直接把你的链包装成标准的 RESTful API。什么叫我的链这是我最懵逼的概念找了些资料然后写一下demo大概明白了一点链是我的业务流程链也是我实现业务流程的代码不管是业务流程还是为流程实现的代码肯定是环环相扣的所以称为链例如我要用代码写一个制作汉堡的程序他的流程是在 LangChain 里把这一系列动作写成了一个对象或者代码这个对象就是一条链。它代表了如何完成一个特定任务的完整逻辑。2.LangChain有哪些功能把大模型比作一个拥有很多知识的天才那LangChain就是他的助理。没LangChain时你问天才问题他只能靠脑子里的旧知识瞎编也没法帮你干活。有了LangChain助理会先帮天才查资料连数据库,帮他记着刚才聊了啥存记忆,甚至帮他把事办了调工具、写代码。其实对应着我们使用大模型作为驱动开发应用中的核心知识概念1.助理帮天才查资料 RAG (检索增强生成)2.帮他记着刚才聊了啥 Memory (记忆)3.帮他把事办了 Agents智能体和Tools工具在LangChain框架中抽象出了这些功能并定义称为核心模块下面单独介绍LLMs大语言模型ChatModels一般基于 LLMs但按对话结构重新封装Prompt提示词模板OutputParser解析输出1.模块封装的功能这些核心模块里面又封装了很多功能1.模型I/O封装术语解释作用LLMs(大语言模型)接话机器最基础的模型接口。你给它一段文字它接着给你补全下一段文字。它只管“续写”不太在乎是不是在“聊天”。ChatModels(对话模型)聊天搭子专门为了聊天优化的模型。它懂“系统设定”比如你是个猫娘、“用户消息”和“助手回复”。现在的开发基本都用这个比 LLMs 更聪明、更懂人话。Prompt(提示词模板)填空题试卷你别每次都手写一大段话。你写好一个模板比如“请帮我翻译 {text}”用的时候把{text}替换成具体内容就行。方便管理还能复用。OutputParser(输出解析器)翻译官/质检员AI 有时候说话很随意一大段纯文本。这个模块负责把 AI 的回复“翻译”成程序能看懂的格式比如 JSON、列表、数字方便代码后续处理。2.Retrieval 数据连接与向量检索封装模块技术解释 (它在干嘛)Document Loader负责从各种地方PDF、网页、Notion、微信文章把原始数据“搬运”进来统一转换成 LangChain 能读懂的文档格式。Text Splitting大模型记性有限Token 限制不能一次读完整本书。切书员把长文档切成一个个小的“知识块”方便模型消化。Embedding Model它把文字转换成计算机能理解的数字向量。就像图书管理员给每本书贴上“语义标签”比如这属于“科技类”、“情感类”让机器理解文字的含义。Vector Store专门用来存储这些“数字向量”的数据库。它不像传统数据库那样存表格而是存高维空间的点方便快速查找相似的内容。Retriever当用户提问时它负责去 Vector Store 里根据语义相似度把最相关的几段资料找出来递给大模型。3.Agents代理封装根据用户输入自动规划执行步骤自动选择每步需要的工具最终完成用户指定的功能包括术语技术解释Tools(工具)最小功能单元。它是一个独立的函数或接口专门用来做一件具体的事。比如“搜索网络”、“计算数学题”或“运行一段 Python 代码”。Toolkits(工具包)工具的集合。为了解决某个特定领域的复杂问题LangChain 把一堆相关的 Tools 打包在一起。比如“数据库工具包”里就包含了“查表”、“执行 SQL”、“看表结构”等多个工具。2.LangChain相关核心库1.langchain-core基础抽象和LangChain表达式语言2.langchain-community第三方集成。合作伙伴包如langchain-openai、langchain-anthropic等一些集成已经进一步拆分为自己的轻量级包只依赖于langchain-core3.langchain构成应用程序认知架构的链、代理和检索策略4.langgraph通过将步骤建模为图中的边和节点使用 LLMs 构建健壮且有状态的多参与者应用程序5.langserve将 LangChain 链部署为 REST API6.LangSmith一个开发者平台可让您调试、测试、评估和监控LLM应用程序并与LangChain无缝集成3.LangChain基本使用模块安装# 安装指定版本的LangChain pip install langchain0.3.7 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install langchain-openai0.2.3 -i https://pypi.tuna.tsinghua.edu.cn/simple模型调用1.通过LangChain的接口来调用OpenAI对话,依然使用阿里百炼的免费模型from dotenv import load_dotenv from langchain_openai import ChatOpenAI import os load_dotenv() apiKey os.getenv(api_key) base_url os.getenv(base_url) model_name qwen-plus llm ChatOpenAI(api_keyapiKey , base_urlbase_url , model_namemodel_name ) # 直接提供问题并调用llm response llm.invoke(什么是遇事不决、量子力学) print(response) print( * 50) print(response.content)2.多轮对话的封装from dotenv import load_dotenv import os from langchain_openai import ChatOpenAI from langchain.schema import ( AIMessage, # 等价于OpenAI接口中的assistant role AI 模型的回复消息 HumanMessage,# 等价于OpenAI接口中的user role 表示用户输入的消息 SystemMessage # 等价于OpenAI接口中的system role 系统级指令或背景设定 ) load_dotenv() api_keyos.getenv(QW_KEY) base_urlos.getenv(QW_URL) model qwen-turbo llm ChatOpenAI(api_keyapi_key,base_urlbase_url,modelmodel) message [ SystemMessage(content你是各位老师的个人助理你叫皮特), HumanMessage(content我的名字叫小余), AIMessage(content不好意思暂时无法获得天气情况), HumanMessage(content今天天气怎么样) ] response llm.invoke(message) print(response.content)3.使用提示模板import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate # 1. 加载环境变量 # verboseTrue 会在控制台打印加载了哪些变量方便调试 load_dotenv(verboseTrue) # 2. 获取配置信息 api_key os.getenv(QW_KEY) base_url os.getenv(QW_URL) model qwen-turbo # 3. 初始化大语言模型 llm ChatOpenAI( api_keyapi_key, base_urlbase_url, modelmodel ) # 4. 定义提示词模板 # 这里定义了一个系统提示词来设定角色以及一个用户输入占位符 prompt ChatPromptTemplate.from_messages(messages[ (system, 你是一个古诗词接龙的高手), (user, {input}) ]) # 打印提示词模板对象信息调试用 print(prompt) print(---- * 20) # 5. 构建链 (Chain) # 使用 | 操作符将提示词模板和模型连接起来 chain prompt | llm # 6. 调用模型并获取结果 # 传入具体的输入内容替换 {input} response chain.invoke({input: 两岸猿声啼不住}) # 打印模型生成的回复内容 print(response.content)4.使用输出解释器import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import JsonOutputParser # 1. 加载环境变量 load_dotenv(verboseTrue) # 2. 获取配置信息 api_key os.getenv(QW_KEY) base_url os.getenv(QW_URL) model_name qwen-turbo # 3. 初始化大语言模型 llm ChatOpenAI( api_keyapi_key, base_urlbase_url, modelmodel_name ) # 4. 定义提示词模板 prompt ChatPromptTemplate.from_messages(messages[ (system, 你是一个古诗词和文言文接龙的高手), (user, {input}) ]) print(- * 80) # 5. 定义输出解析器 # JsonOutputParser 会尝试将模型的输出解析为 Python 字典或列表 output_parser JsonOutputParser() # 6. 构建链 (Chain) # 流程提示词 - 模型 - JSON 解析器 chain prompt | llm | output_parser # 7. 调用模型 # 在输入中明确指示模型以 JSON 格式返回 question 和 answer input_text 然侍卫之臣不懈于内, 问题用 question 回答用 answer 用 JSON 格式回复 response chain.invoke({input: input_text}) # 8. 打印结果 print(response) # {question: 然侍卫之臣不懈于内, answer: 忠志之士忘身于外者}5.使用LangChain存储向量到Chroma我们调用在线网站的数据然后进行向量化import os from langchain_community.document_loaders import WebBaseLoader from dotenv import load_dotenv import bs4 # 1. 替换嵌入模型和向量库导入 from langchain_community.embeddings import DashScopeEmbeddings from langchain_community.vectorstores import Chroma # 改这里 from langchain_text_splitters import RecursiveCharacterTextSplitter load_dotenv() def chroma_conn(): # 读取网页中的数据 loader WebBaseLoader( web_pathhttps://www.gov.cn/zhengce/zhengceku/202504/content_7021191.htm, bs_kwargsdict(parse_onlybs4.SoupStrainer(idUCAP-CONTENT)) ) docs loader.load() api_key os.getenv(QW_KEY) # 2. 创建向量模型 Chroma 本地运行 embeddings DashScopeEmbeddings( dashscope_api_keyapi_key, modeltext-embedding-v2 ) # 使用分割器分割文档 text_splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) documents text_splitter.split_documents(docs)[:10] # 3. 向量存储Chroma # persist_directory 指定数据保存的本地路径 vector Chroma.from_documents( documentsdocuments, embeddingembeddings, persist_directory/Users/yuxl/3.Resources/Demo/llm/db/chroma ) # 如果指定了 persist_directory建议调用 persist() 确保数据写入磁盘 vector.persist() return vector # 调用函数 db chroma_conn() print(数据已成功存入 Chroma 向量库)6.LangChain使用RAG从上一步写入的向量库中检索数据from langchain.chains.combine_documents import create_stuff_documents_chain from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from langchain.chains import create_retrieval_chain import os from dotenv import load_dotenv # 1. 导入 Chroma from langchain_community.vectorstores import Chroma from langchain_community.embeddings import DashScopeEmbeddings # 请确保这里使用的是与保存时相同的 Embedding load_dotenv() # --- 配置 LLM --- api_key os.getenv(QW_KEY) base_url os.getenv(QW_URL) model qwen-turbo llm ChatOpenAI(api_keyapi_key, base_urlbase_url, modelmodel) # --- 配置 Prompt --- # {context}变量必须包含 prompt ChatPromptTemplate.from_template(仅根据提供的上下文回答以下问题: context {context} /context 问题: {input}) # --- 创建文档组合链 --- document_chain create_stuff_documents_chain(llm, prompt) # --- 加载 Chroma 向量数据库并创建检索器 --- api_key os.getenv(QW_KEY) embedding DashScopeEmbeddings( dashscope_api_keyapi_key, modeltext-embedding-v2 ) # 从磁盘加载数据库 vectorstore Chroma( persist_directory/Users/yuxl/3.Resources/Demo/llm/db/chroma, # 这是你之前保存数据的路径 embedding_functionembedding ) retriever vectorstore.as_retriever(search_kwargs{k: 3}) # 限制返回3个片段 # --- 创建检索链并执行 --- retrieval_chain create_retrieval_chain(retriever, document_chain) response retrieval_chain.invoke({input: 宣传重点是什么}) print(response[answer])3.总结1.核心概念与定位定义LangChain 是一个简化 LLM 应用生命周期的开发框架集成了丰富的第三方生态。三大阶段1.开发利用组件和模板快速构建应用。2.生产化使用 LangSmith 进行调试、监控和评估。3.部署使用 LangServe 将链转化为 REST API。2.核心模块架构LangChain 的关键功能模块1.Model I/O包含 LLMs文本补全、ChatModels对话优化、Prompt模板管理和 OutputParser格式化输出。2.Retrieval (RAG)涵盖 Document Loader数据加载、Text Splitting文本切分、Embedding向量化、Vector Store向量存储和 Retriever检索。3.Agents包含 Tools工具和 Toolkits工具包支持自动规划与执行。3.关键代码示例1.基础调用通过 ChatOpenAI 接口调用通义千问模型。2.多轮对话使用 SystemMessage、HumanMessage 等管理上下文。3,提示词模板利用 ChatPromptTemplate 实现动态输入。4.输出解析使用 JsonOutputParser 将模型输出转换为结构化数据。RAG 实战1.写入爬取网页数据 - 切分 - 向量化 - 存入 Chroma 数据库。2.检索从 Chroma 加载数据结合 Prompt 实现基于知识库的问答。​最后我在一线科技企业深耕十二载见证过太多因技术更迭而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包✅AI大模型学习路线图✅Agent行业报告✅100集大模型视频教程✅大模型书籍PDF✅DeepSeek教程✅AI产品经理入门资料完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】​​为什么说现在普通人就业/升职加薪的首选是AI大模型人工智能技术的爆发式增长正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议到全国两会关于AI产业发展的政策聚焦再到招聘会上排起的长队AI的热度已从技术领域渗透到就业市场的每一个角落。智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200%远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。​​资料包有什么①从入门到精通的全套视频教程⑤⑥包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图还有视频解说全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤ 这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频教程由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事‌​​​​如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能 ‌突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】**​