LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​

news/2025/9/19 10:58:06/文章来源:https://www.cnblogs.com/duanxz/p/19100356

LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​

如果你常逛技术社区,大概率听过 “大语言模型(LLM)能做很多事”—— 写文案、答问题、编代码,但真要把它放进实际业务里,比如给公司做个智能客服、给团队搭个文档问答工具,却总卡壳:要么模型记不住上下文,聊两句就 “断片”;要么模型不懂专业知识,回答全是 “通用废话”;要么调用外部工具时,得自己写一堆复杂逻辑……
这时候,LangChain 就该登场了。它不是一个新的 AI 模型,而是帮你 “盘活” LLM 的开发框架,像给模型搭了个 “工具箱 + 操作台”,让你不用从零造轮子,就能快速搭建出能用、好用的 LLM 应用。今天就用最通俗的话,带你入门 LangChain。
一、先搞懂:LangChain 到底是干嘛的?
先抛个结论:LangChain 是连接 LLM 与实际业务的 “桥梁”
你可以把 LLM 想象成一个 “聪明但没经验的实习生”—— 脑子好使,但不知道公司的业务规则、没有存业务数据的文件夹、不会用公司的办公软件(比如查订单的系统、调数据的 API)。而 LangChain 就是这个实习生的 “带教老师”:
  • 给它准备 “业务手册”(连接知识库),让它懂公司的专业知识;
  • 帮它记 “工作笔记”(管理对话记忆),让它不忘记之前聊过的内容;
  • 教它用 “办公工具”(调用外部系统),让它能完成查订单、算数据这类实际任务;
  • 给它定 “工作流程”(编排任务链),让它按步骤把复杂事情做对。
简单说,直接用 LLM 像 “徒手干活”,用 LangChain 就是 “带着工具干活”—— 效率和效果完全不是一个级别。
二、核心功能:LangChain 能帮你解决哪些痛点?
新手不用一开始就啃复杂概念,先记住 LangChain 最常用的 4 个核心能力,覆盖 80% 的入门场景:
1. 记事儿:让 LLM “不健忘”(Memory 功能)
你有没有过这种体验:跟 AI 聊 “帮我推荐一款性价比高的笔记本”,聊到一半说 “再推荐个同价位的平板”,AI 却问 “你说的同价位是多少?”—— 这就是 LLM “健忘”,默认记不住之前的对话。
LangChain Memory 模块就是帮 LLM “记事儿” 的:
  • 简单场景用「ConversationBufferMemory」:直接存完整对话历史,比如智能客服记用户之前提过的 “订单号 12345”;
  • 复杂场景用「BufferWindowMemory」:只记最近几轮对话,避免信息太多卡壳,比如聊天机器人只需要记住用户最后 3 句话;
  • 专业场景用「EntityMemory」:专门记关键信息(比如用户的姓名、偏好、需求),比如理财顾问记住 “用户风险承受能力低”。
举个简单代码例子,让 AI 记住对话:
 
 
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain.llms import OpenAI
# 初始化记忆模块,存对话历史
memory = ConversationBufferMemory()
# LLM和记忆模块组合成对话链
conversation_chain = ConversationChain(
llm=OpenAI(api_key="你API密钥"),
memory=memory
)
# 第一次对话
print(conversation_chain.run("我想买一款适合办公的笔记本,预5000元"))
# 第二次对话,AI会记住“预5000元”
print(conversation_chain.run("有没有同价位的平板推荐?"))
运行后你会发现,AI 不会再问 “预算多少”,直接推荐 5000 元左右的平板 —— 这就是 Memory 的作用。
2. 查资料:让 LLM “懂专业”(Retrieval 功能)
LLM 的 “知识库” 截止到训练时(比如 GPT-4 截止到 2023 年),而且不懂你公司的产品手册、行业文档。想让它回答 “我们公司产品的保修政策”,直接问只会 “瞎猜”。
LangChain Retrieval 模块就是帮 LLM “查资料” 的,核心是 “检索增强生成(RAG)”—— 简单说就是:用户提问后,先从你的专业文档里找答案,再让 LLM 基于找到的资料回答,避免 “瞎编”。
比如做一个 “产品手册问答工具”,步骤很简单:
  1. 加载文档:把你的产品 PDF、Word 文档上传,LangChain 会自动读取内容;
  1. 拆分文档:把长文档切成小片段(比如每段 200 字),方便 LLM 处理;
  1. 存储向量:把片段转成 “向量”(可以理解成 “语义标签”),存在向量数据库里;
  1. 检索回答:用户提问时,先从向量库找最相关的片段,再让 LLM 总结回答。
代码示例(用 Chroma 向量库):
 
 
from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 1. 加载产PDF手册
loader = PyPDFLoader("你的产品手册.pdf")
documents = loader.load()
# 2. 拆分文档(每500字,重50字保持连贯)
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(documents)
# 3. 存储到向量库
vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings(api_key="你API密钥"))
# 4. 搭建问答链,用户提问时先查资料再回答
qa_chain = RetrievalQA.from_chain_type(
llm=OpenAI(api_key="你API密钥"),
chain_type="stuff", # 把找到的资料塞PromptLLM回答
retriever=vectorstore.as_retriever()
)
# 测试:问产品保修政策
print(qa_chain.run("我们产品的保修期限是多久?"))
这样回答的内容完全来自你的产品手册,不会有 “幻觉”,专业度拉满。
3. 串流程:让 LLM “按步骤做事”(Chains 功能)
很多任务不是 “问一句答一句” 这么简单,比如 “先分析用户的问题类型,再决定是查知识库还是直接回答,最后整理成简洁的回复”—— 这需要多步操作,LangChain Chains 模块就是帮你 “串流程” 的。
你可以把 Chain 理解成 “任务流水线”:把多个步骤(比如 “处理问题→查资料→生成回答→检查格式”)串起来,让 AI 自动按顺序执行。
比如做一个 “客户投诉处理链”,步骤是:
  1. 提取投诉关键词(比如 “订单延迟”“产品破损”);
  1. 查对应解决方案(从投诉处理手册里找);
  1. 生成标准化回复(包含道歉、解决方案、联系方式)。
代码示例(用 SequentialChain 串步骤):
 
 
from langchain.prompts import PromptTemplate
from langchain.chains import SequentialChain, LLMChain
from langchain.llms import OpenAI
llm = OpenAI(api_key="你API密钥")
# 步1:提取投诉关键词
extract_template = "从用户投诉中提取核心问题:{complaint}\n核心问题:"
extract_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(extract_template), output_key="core_issue")
# 步2:查解决方案(这里简化为LLM生成,实际可对接知识库)
solve_template = "针对投诉核心问题「{core_issue}」,生成解决方案:\n解决方案:"
solve_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(solve_template), output_key="solution")
# 步3:生成标准化回复
reply_template = "用户投诉:{complaint}\n解决方案:{solution}\n请生成标准化回复(包含道歉、方案、联系方式):"
reply_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(reply_template), output_key="final_reply")
 
运行后会直接输出标准化回复,比如:“非常抱歉您的订单延迟未送达,我们已查询到物流卡在 XX 环节,将为您优先协调配送,预计 24 小时内更新物流,如有问题可联系客服热线 400-XXX-XXXX。”
4. 用工具:让 LLM “能干活”(Agents 功能)
有时候,LLM 需要 “动手做事”—— 比如查实时天气、查用户订单、调用翻译 API,这些不是靠 “说” 能解决的,需要调用外部工具。LangChain Agents 模块就是让 LLM“自己决定用什么工具、怎么用”。
比如做一个 “智能助手”,能查实时天气(调用天气 API)、算数学题(用计算器工具):
  1. 给 AI 列 “工具清单”:告诉它有 “天气查询工具”“计算器工具”;
  1. AI 分析用户需求:比如用户说 “北京今天天气怎么样?”,AI 判断需要用 “天气查询工具”;
  1. AI 调用工具:自动传参数(比如 “城市 = 北京”),获取结果;
  1. AI 整理结果:把工具返回的信息转成自然语言回答。
虽然入门阶段不用写复杂的工具调用代码,但你要知道:Agents 是 LangChain “进阶” 的关键 —— 它让 LLM 从 “只会说” 变成 “能做事”,比如自动查订单、自动生成报表、自动发邮件。
三、新手入门:3 步搭建你的第一个 LangChain 应用
看完理论,动手做个最简单的 “文档问答工具”,感受一下 LangChain 的效率:
步骤 1:准备环境
首先安装需要的库(Python 环境):
 
 
# 安LangChain核心库、OpenAI(GPT模型)、PDF加载器、向量库
pip install langchain openai pypdf chromadb
步骤 2:准备文档
找一个你熟悉的文档(比如《Python 基础语法.pdf》),放在代码同一个文件夹里。
步骤 3:写代码运行
复制下面的代码,替换 “你的 API 密钥” 和 “文档路径”,运行:
 
 
 
# 2. 拆分文档
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(documents)
# 3. 存储到向量库
vectorstore = Chroma.from_documents(
documents=splits,
embedding=OpenAIEmbeddings(api_key="sk-你OpenAI密钥") # 替换成你API密钥
)
# 4. 搭建问答链
qa_chain = RetrievalQA.from_chain_type(
llm=OpenAI(api_key="sk-你OpenAI密钥"),
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
# 5. 提问测试
while True:
question = input("请输入你的问题(输q退出):")
if question == "q":
break
print("回答:", qa_chain.run(question))
现在,你可以问 “Python 的列表和元组有什么区别?”“怎么用 Python 读取 CSV 文件?”——AI 会基于你的 PDF 文档回答,比直接问 ChatGPT 更贴合你的资料。
四、新手避坑:3 个最容易踩的误区
  1. 误区 1:上来就用 Agents
很多新手觉得 Agents “很酷”,不管什么任务都用 Agents,结果代码复杂还容易出错。其实 80% 的简单任务(比如单轮问答、固定流程)用 Chain 就够了,Agents 适合需要 “动态决策” 的场景(比如不确定用哪个工具、需要多轮调用工具)。
  1. 误区 2:不优化文档拆分
做 RAG 时,直接把整个文档扔进去,结果 AI 回答混乱 —— 因为文档太长,拆分后的片段要么不完整,要么包含无关信息。新手建议用「RecursiveCharacterTextSplitter」,把 chunk_size 设为 500-1000 字,chunk_overlap 设为 50-100 字,保持语义连贯。
  1. 误区 3:忽视 Prompt 模板
觉得 “让 LLM 自由发挥更好”,结果回答格式混乱、重点不突出。其实用 Prompt 模板(比如 “请用「问题 + 原因 + 解决方案」的格式回答:{question}”)能让 AI 的回答更规范,新手一定要养成写模板的习惯。
五、总结:LangChain 入门的核心逻辑
新手不用一开始就掌握所有功能,记住一个核心逻辑:LangChain 是 “LLM 的辅助工具集”,你需要什么功能,就用什么模块——
  • 要记对话,用 Memory;
  • 要查资料,用 Retrieval;
  • 要串流程,用 Chain;
  • 要调用工具,用 Agent。
从最简单的 “文档问答”“对话机器人” 做起,慢慢尝试更复杂的场景(比如智能客服、自动化报表),你会发现:原来把 LLM 放进实际业务里,并没有那么难。
如果想深入学习,推荐先看 LangChain 官方文档(https://python.langchain.com/),再跟着网上的实战项目练手(比如 “搭建个人知识库 AI”“做一个智能邮件助手”),边做边学,进步最快。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cpu wa

cpu wa👌 我明白了,你需要的是把 两个文档合并:逐指标展开分析逻辑(cycles/instructions、context-switches、page-faults、syscalls 等 → 如何推导分支)。典型 %wa 场景说明(本地块设备、NFS/iSCSI、Swap、虚…

解码C语言指针

一、指针的定义与本质 1. 指针是什么? 指针是一种 存储变量内存地址 的特殊变量。所有数据存储在内存中,每个内存单元都有唯一地址(编号),指针通过记录地址实现对数据的间接访问。 2. 指针的核心作用直接操作内存…

windows下Qt调用fftw库

环境:Windows 11 Qt:6.8.3 程序中需要用到fftw库来进行傅里叶变换,通过网上的资料,配置了很久一直没成功,后来发下还是没有配置正确,最后终于成功,顺便记录一下 1.下载fftw3.3.5 http://www.fftw.org/install/…

Gitee崛起:国产代码托管平台如何接棒CODING成为开发者新宠

Gitee崛起:国产代码托管平台如何接棒CODING成为开发者新宠 随着腾讯云宣布CODING DevOps系列产品逐步停止服务,中国开发者生态正在经历一次重要的基础设施迁移。在这场变革中,开源中国旗下Gitee平台凭借其十年本土化…

flask下的MySQL增查配置

flask下的MySQL增删配置 添加数据 @app.route(/add) def add_data():u = UserInfo()new_user1 = UserInfo(nickname=flask_test1, mobile=13888888888, signature=理想, create_time=datetime.now(), role_id=1)new_us…

AT_agc056_c [AGC056C] 01 Balanced

不难设 \(d_i\) 为前缀 \(i\) 中 \(0/1\) 数量的差值,显然有两个限制:\(d_{l - 1} = d_r\) \(|d_{i - 1} - d_i| \le 1\)可以差分约束,事实上,直接跑差分约束就可以得到字典序最小的构造了,这也算本题的价值之一。…

高效智能(到家服务)管理平台解决方案

一、项目背景 随着互联网技术的快速发展以及服务行业的数字化转型,传统的线下服务模式逐渐向线上迁移。为了提升服务效率、优化用户体验,并满足用户对快速响应和精准服务的需求,本项目旨在打造一个高效、智能的服务…

centos7卸载openjdk-java11

[root@localhost ~]# rpm -qa|grep -i openjdk java-11-openjdk-headless-11.0.23.0.9-2.el7_9.x86_64 java-11-openjdk-devel-11.0.23.0.9-2.el7_9.x86_64 java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64# 卸载命令, yu…

jenkins的安装和配置

windows 安装 jenkins 自动化构建部署至linux服务器上 一、环境准备1、git安装环境 参考链接 https://www.cnblogs.com/yuarvin/p/12500038.html 2、maven安装环境,包括jdk环境安装 参考链接 https://www.cnblogs.com…

从MMoE到PLE:读懂多任务学习架构的渐进式演化

从MMoE到PLE:读懂多任务学习架构的渐进式演化从MMoE到PLE:读懂多任务学习架构的渐进式演化 引言 在多任务学习(MTL)领域,MMoE(Multi-gate Mixture-of-Experts)无疑是一个里程碑式的模型,它通过巧妙的软参数共享…

在VSCode中设置Qt编写环境

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:【Day 52 】Linux-Jenkins

深入解析:【Day 52 】Linux-Jenkinspre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

本土开发者如何选择代码管理工具?Gitee与GitHub深度对比解析

本土开发者如何选择代码管理工具?Gitee与GitHub深度对比解析 在数字化转型浪潮下,代码管理工具已成为开发者日常工作的必备基础设施。面对国内外众多选择,新手开发者往往陷入选择困难。本文将从本土化开发视角,深入…

MES系统核心组件

核心总览 在半导体工厂中,MES(Manufacturing Execution System,制造执行系统) 是最高层的指挥中枢,它负责管理生产线上从投料开始到成品产出的全部作业流程。而其他各种“XX Server”则是MES这个大脑指挥下的专业…

易基因:多组学整合分析揭示DNA甲基化与基因组改变在肿瘤进化中的协同驱动机制|Nat Genet/IF29重磅

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,伦敦大学学院癌症研究所Nnennaya Kanu和弗朗西斯克里克研究所Peter Van Loo团队合作在国际遗传学Top期刊《自然遗传学》(Nature Genetics)发…

AI 视频模型大比拼(2025年7月版):价格、效果与分辨率

AI 视频模型大比拼(2025年7月版):价格、效果与分辨率pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

为什么芯片行业需要私有化部署软件?

在芯片研发过程中,每天产生的大量设计数据、测试结果和知识产权,构成了企业的核心竞争优势。一旦这些数据泄露,不仅可能导致数百万美元的研发投入付诸东流,更可能让企业在全球竞争中失去领先地位。 近年来,芯片行…

C++ std::string

C++ 标准库中的 std::string 是处理字符串的核心类,封装了字符串的存储、管理和操作,相比 C 风格的 char* 更安全、易用。 1、基本概念 1.1 基本特性 std::string 定义在 <string> 头文件中(属于 std 命名空间…

MathType数学公式编辑器v7.9.1

MathType全球最受欢迎的专业数学公式编辑器工具软件,可视化公式编辑器轻松创建数学方程式和化学公式。兼容Office Word、PowerPoint、Pages、Keynote、Numbers 等700多种办公软件,用于编辑数学试卷、书籍、报刊、论文…

git常见冲突场景及解决办法 - 指南

git常见冲突场景及解决办法 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…