当前位置: 首页 > news >正文

LangChain 从入门到实战:大模型应用开发全流程教程

目录

前言

一、LangChain 核心介绍

1.1 什么是 LangChain?

1.2 为什么必须学 LangChain?

1.3 本文学习路线(循序渐进)

二、环境搭建(从零开始)

2.1 安装 Python 与依赖

2.2 本地大模型准备(Ollama)

三、LangChain 基础:最简单的 LLM 调用

3.1 一行代码调用本地大模型

3.2 关键参数说明

四、LangChain 核心组件精讲(必学)

4.1 提示词模板(PromptTemplate)

4.2 链(Chain):组件流水线

4.3 对话记忆(Memory)

4.4 文档加载器(Loader)

4.5 文本分割器(TextSplitter)

4.6 向量数据库与嵌入(Embedding)

五、实战项目 1:基础智能问答系统

六、实战项目 2:RAG 文档知识库问答(企业最常用)

6.1 完整代码(可直接运行)

七、实战项目 3:大模型工具调用(计算器、搜索)

八、实战项目 4:流式输出(打字机效果)

九、LangChain 项目开发完整流程(企业标准)

十、常见报错与解决方案

1. Ollama 连接失败

2. 向量库加载失败

3. 回答不准确

4. 文档读取失败

十一、总结


前言

大模型时代,LLM 应用开发已经成为程序员必备技能。但直接调用大模型 API 只能实现简单问答,无法满足文档问答、多轮记忆、工具调用、结构化输出、知识库检索等企业级需求。

LangChain正是解决这一问题的最强框架 —— 它统一了全球主流大模型的调用接口,提供提示词模板、文档加载、文本分割、向量检索、智能代理、工具调用等一站式能力,让开发者用几十行 Python 代码,快速搭建商用级 AI 应用。

本文是2025 年最新 LangChain 全流程教程,从环境安装、基础组件、核心模块,到RAG 知识库、工具调用、多轮对话、流式输出四大实战项目,全程可直接运行代码,零基础也能快速掌握大模型应用开发。


一、LangChain 核心介绍

1.1 什么是 LangChain?

LangChain 是一个开源大模型应用开发框架,用于快速构建基于 LLM 的复杂应用。它的核心价值:

  • 统一大模型接口(通义千问、Llama3、DeepSeek、GPT 等一套代码通用)
  • 提供模块化组件(提示词、记忆、检索、代理、工具)
  • 快速实现 RAG、AI 客服、代码助手、数据分析等应用

1.2 为什么必须学 LangChain?

  1. 开发效率提升 10 倍,无需重复造轮子
  2. 屏蔽底层差异,切换模型只改一行配置
  3. 企业落地必备,90% 大模型项目基于 LangChain 构建
  4. 生态最成熟,文档、插件、社区资源最全

1.3 本文学习路线(循序渐进)

  1. 环境搭建 + 基础调用
  2. 核心组件精讲(提示词、记忆、文档、向量库、链)
  3. 四大实战项目(问答、RAG、工具、流式对话)
  4. 项目封装 + 部署思路

二、环境搭建(从零开始)

2.1 安装 Python 与依赖

bash

运行

# 核心框架 pip install langchain langchain-community langchain-ollama # 向量数据库 pip install chromadb # 文档处理 pip install pypdf python-docx sentence-transformers # 工具库 pip install tqdm requests

2.2 本地大模型准备(Ollama)

本文使用本地离线大模型,安全无费用:

  1. 安装 Ollama:https://ollama.com/
  2. 拉取模型:

bash

运行

ollama run llama3 # 或中文模型 ollama run qwen:7b
  1. 确认服务启动:http://127.0.0.1:11434

三、LangChain 基础:最简单的 LLM 调用

3.1 一行代码调用本地大模型

python

运行

# 01_basic_llm.py from langchain_ollama import OllamaLLM # 初始化模型 llm = OllamaLLM(model="llama3") # 调用 response = llm.invoke("请介绍一下LangChain框架") print(response)

运行成功 = 环境搭建完成!

3.2 关键参数说明

python

运行

llm = OllamaLLM( model="llama3", # 模型名称 temperature=0.1, # 随机性(0=精准,1=创意) max_tokens=2048, # 最大生成长度 top_p=0.9 # 核采样 )

四、LangChain 核心组件精讲(必学)

4.1 提示词模板(PromptTemplate)

解决:固定格式提问、批量生成、结构化输出

python

运行

from langchain.prompts import PromptTemplate # 定义模板 prompt = PromptTemplate( input_variables=["topic"], template="请详细解释技术概念:{topic}" ) # 拼接 final_prompt = prompt.format(topic="RAG检索增强生成") print(final_prompt)

4.2 链(Chain):组件流水线

python

运行

# 最简单的链:提示词 + LLM chain = prompt | llm result = chain.invoke({"topic": "大模型微调"}) print(result)

|符号 = LangChain 最核心的管道语法

4.3 对话记忆(Memory)

实现多轮对话,保留上下文:

python

运行

from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain # 记忆组件 memory = ConversationBufferMemory() chain = ConversationChain(llm=llm, memory=memory) # 第一轮 print(chain.predict(input="你好,我叫小明")) # 第二轮 print(chain.predict(input="我叫什么名字?"))

4.4 文档加载器(Loader)

支持 PDF / Word / TXT / Markdown:

python

运行

from langchain_community.document_loaders import TextLoader loader = TextLoader("test.txt") docs = loader.load() print(docs)

4.5 文本分割器(TextSplitter)

长文档切片,适配大模型上下文:

python

运行

from langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter( chunk_size=500, # 每片长度 chunk_overlap=100 # 重叠长度 ) split_docs = splitter.split_documents(docs)

4.6 向量数据库与嵌入(Embedding)

将文本转为向量,用于语义检索:

python

运行

from langchain_community.embeddings import SentenceTransformerEmbeddings from langchain_community.vectorstores import Chroma embedding = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") db = Chroma.from_documents(split_docs, embedding) # 相似度检索 retriever = db.as_retriever(search_kwargs={"k":3}) result = retriever.invoke("LangChain是什么") print(result)

五、实战项目 1:基础智能问答系统

python

运行

# 02_chat_bot.py from langchain_ollama import OllamaLLM from langchain.prompts import ChatPromptTemplate from langchain.chains import LLMChain # 1. 模型 llm = OllamaLLM(model="llama3", temperature=0.3) # 2. 提示词 prompt = ChatPromptTemplate.from_messages([ ("system", "你是专业AI助手,回答简洁清晰"), ("user", "{question}") ]) # 3. 构建链 chain = prompt | llm # 4. 对话 while True: q = input("你:") if q in ["exit", "退出"]: break print("AI:", chain.invoke({"question": q}))

六、实战项目 2:RAG 文档知识库问答(企业最常用)

6.1 完整代码(可直接运行)

python

运行

# 03_rag_qa.py from langchain_ollama import OllamaLLM from langchain.prompts import PromptTemplate from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.embeddings import SentenceTransformerEmbeddings from langchain_community.vectorstores import Chroma from langchain.chains import RetrievalQA # 1. 加载文档 loader = TextLoader("knowledge.txt") docs = loader.load() # 2. 切片 splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100) split_docs = splitter.split_documents(docs) # 3. 向量库 embedding = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") db = Chroma.from_documents(split_docs, embedding) retriever = db.as_retriever(search_kwargs={"k":3}) # 4. 模型 llm = OllamaLLM(model="llama3", temperature=0.1) # 5. 提示词 prompt = PromptTemplate( template="""根据参考内容回答问题: 参考:{context} 问题:{question}""", input_variables=["context", "question"] ) # 6. RAG 链 rag_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, chain_type_kwargs={"prompt": prompt} ) # 7. 测试 question = "你的知识库内容是什么?" print(rag_chain.invoke(question))

七、实战项目 3:大模型工具调用(计算器、搜索)

python

运行

# 04_tool_call.py from langchain_ollama import OllamaLLM from langchain.tools import tool from langchain.agents import create_react_agent, AgentExecutor from langchain.prompts import PromptTemplate # 1. 自定义工具:计算器 @tool def calculator(expression: str) -> str: """输入数学表达式,返回计算结果""" return str(eval(expression)) # 2. 模型 llm = OllamaLLM(model="llama3") # 3. 提示词 prompt = PromptTemplate.from_template(""" 你是智能助手,可以使用工具。 可用工具:{tools} 问题:{input} """) # 4. 智能代理 agent = create_react_agent(llm, [calculator], prompt) executor = AgentExecutor(agent=agent, tools=[calculator], verbose=True) # 5. 调用 print(executor.invoke({"input": "35 * 24 + 120 = ?"}))

八、实战项目 4:流式输出(打字机效果)

python

运行

# 05_stream_chat.py from langchain_ollama import OllamaLLM llm = OllamaLLM(model="llama3") # 流式输出 for chunk in llm.stream("写一段关于AI的短文案"): print(chunk, end="", flush=True)

九、LangChain 项目开发完整流程(企业标准)

  1. 需求分析:问答 / RAG / 工具 / 代理
  2. 模型选型:本地 Ollama 或在线 API
  3. 组件搭建:提示词 → 记忆 → 检索 → 链
  4. 业务封装:函数、类、配置文件
  5. 接口化:FastAPI/Flask
  6. 部署:本地 / 服务器 / Docker

十、常见报错与解决方案

1. Ollama 连接失败

  • 检查服务:ollama -v
  • 重启:关闭重启 Ollama

2. 向量库加载失败

  • 删除chroma文件夹重新构建
  • 降低嵌入模型版本

3. 回答不准确

  • 调低temperature=0.1
  • 优化提示词
  • 增加检索片段k=3~5

4. 文档读取失败

  • PDF 改用pdfplumber
  • Word 确保是.docx格式

十一、总结

本文完整覆盖LangChain 从入门到企业级实战

  • 掌握基础 LLM 调用
  • 精通提示词、记忆、文档、向量库、链五大组件
  • 完成RAG 知识库、工具调用、流式对话、智能问答四大实战项目
  • 掌握企业标准开发流程

LangChain 是大模型应用开发的必备框架,学会它,你可以快速开发:✅ 企业内部知识库✅ AI 客服系统✅ 代码助手✅ 智能写作工具✅ 数据分析助手✅ PDF 阅读助手

所有代码均可直接复制运行,新手也能快速落地属于自己的大模型应用!

http://www.jsqmd.com/news/843528/

相关文章:

  • 声源定位技术与GCC-PHAT算法详解
  • 【嵌入式 AI 实战第11 期】人体运动与姿态识别(可穿戴应用实战)基于 STM32+MPU6050+TinyML 部署
  • Maven多模块项目里,程序运行时如何优雅地获取自己的版本号?3种方案实测对比
  • 百度网盘直链解析:如何绕过限速实现高速下载的Python实战指南
  • 对比自行维护与使用Taotoken聚合API在稳定性上的体感差异
  • 基于CircuitPython与LED点阵屏的物联网新闻显示器制作指南
  • 优先队列和单调队列的浅浅学习
  • 别再手动激活了!CentOS 7下VCS+SCL开机自启动保姆级配置(含防火墙设置)
  • 3步解锁Wallpaper Engine壁纸资源:RePKG终极提取指南
  • 从零打造动画电子猫:Arduino与针毡工艺的创客实践
  • 金华装修避坑指南/装修有哪些最容易踩的坑?
  • 手把手教你用TMS320F2803x DSP实现PMBus通信(附代码下载与避坑指南)
  • NotebookLM概念关联分析深度拆解(20年NLP专家亲测有效的7层推理模型)
  • 从硬盘到网络:手把手拆解Linux/Windows下SCSI协议栈的完整工作流程
  • GPT时代下非端到端AI方案的融合价值与混合架构实践
  • XUnity自动翻译器:Unity游戏跨语言无障碍体验的完整指南
  • 基于CircuitPython的多传感器物联网环境监测盒设计与实现
  • 【JavaSE全面教学】Java异常处理机制Day11(2026年)
  • XUnity.AutoTranslator:三步实现Unity游戏实时翻译的终极解决方案
  • 如何用LizzieYzy免费围棋AI分析工具提升你的棋力:从入门到精通
  • SteamVR Unity插件实战:解决VR开发中的三大核心挑战
  • golang如何实现负载均衡器组件_golang负载均衡器组件实现详解.txt
  • 终极解决方案:TQVaultAE如何彻底改变《泰坦之旅》装备管理体验
  • 面向具身操作的视觉-语言-动作模型:让机器人真正理解并执行人类指令
  • 如何快速清理Mac残留文件:免费开源工具终极指南
  • MXFP混合精度优化:提升LLM推理效率的关键技术
  • 完全指南:三步轻松重置JetBrains IDE试用期,零成本延长开发工具使用
  • LLM推理服务SLO优化:延迟预测与智能调度实践
  • 深度解析:如何通过Python逆向工程突破百度网盘限速机制
  • ARM SVE指令集SUDOT指令详解与性能优化