LangChain 零基础快速上手:从 Hello World 到智能文档问答助手
一、引言大模型浪潮下的开发困境随着 ChatGPT 的爆火大模型Large Language Model, LLM已成为开发者工具箱中的新宠。然而当我们兴奋地拿到 OpenAI API Key准备大干一场时却常常陷入这样的困境裸调 API 的局限性每次调用都是“一问一答”的孤立对话模型无法记住之前的聊天内容。上下文管理复杂想实现多轮对话需要自己维护历史消息列表并小心翼翼地控制 Token 数量。功能扩展困难想让 AI 读取本地 PDF 文件并回答问题仅靠 API 调用你需要自己处理文档加载、文本分割、向量化、检索等一系列繁琐步骤。这正是LangChain诞生的背景。它不是一个新的大模型而是一个用于开发基于大模型的应用框架。想象一下这个场景你有一堆技术文档PDF/TXT希望搭建一个智能助手能够理解文档内容并回答你的问题。如果只用裸 API你需要写大量胶水代码而使用 LangChain你可以像搭积木一样快速组合出完整的解决方案。本文目标面向零基础开发者带你快速理解 LangChain 的核心概念并通过一个完整的“智能文档问答助手”实战项目让你学完就能独立搭建自己的 AI 应用。二、LangChain 是什么官方定位LangChain 是一个用于开发由语言模型驱动的应用程序的框架。核心设计理念模块化与可组合性。它将构建 LLM 应用所需的常见功能如提示词管理、记忆、工具调用、数据检索抽象成独立的组件开发者可以通过“链”Chain的方式将这些组件串联起来形成复杂的工作流。与传统开发方式对比方式特点示例实现文档问答直接调用 OpenAI API灵活但繁琐所有逻辑加载、分割、检索、提示都需要自己实现。需要编写文档加载器、文本分割器、向量数据库客户端、检索逻辑并将所有结果拼接成最终的 Prompt 发送给 API。使用 LangChain开箱即用提供标准化组件和高级接口专注于业务逻辑。使用内置的 Document Loader、Text Splitter、VectorStore 和 RetrievalQA Chain几行代码即可搭建原型。简而言之LangChain 让开发者从“造轮子”中解放出来更专注于应用创新。三、环境准备与安装在开始编码之前请确保你的环境满足以下要求Python 环境建议使用 Python 3.8 或更高版本。安装 LangChain使用 pip 进行安装。pip install langchain安装相关依赖根据你的需求可能还需要安装以下包# 用于连接 OpenAI 模型 pip install openai # 用于文档加载如 PDF pip install pypdf # 用于向量存储本地示例使用 Chroma pip install chromadb # 用于文本嵌入 pip install tiktokenAPI Key 配置OpenAI在代码中设置环境变量。import os os.environ[OPENAI_API_KEY] 你的-OpenAI-API-Key国产大模型如通义千问、文心一言等通常也支持通过 LangChain 接入配置方式类似需参考对应模型的文档。四、LangChain 五大核心组件详解理解这些组件是使用 LangChain 的基础。1. Model模型封装了各类大模型主要分为两类LLM纯文本补全模型如 text-davinci-003输入文本输出文本。Chat Model对话模型如 gpt-3.5-turbo输入为消息列表System, Human, AI输出为 AI 消息。2. Prompt提示词通过PromptTemplate管理提示词支持变量插值和 Few-Shot 示例让提示工程变得规范且可复用。3. Chain链LangChain 的核心。将多个组件模型、提示词、工具等按顺序连接起来形成一个完整的工作流。最简单的链是LLMChain模型 提示词。4. Memory记忆让对话具备上下文能力。常见的 Memory 类型有ConversationBufferMemory保存所有历史对话、ConversationSummaryMemory总结历史对话以节省 Token等。5. Agent代理让 LLM 具备自主决策能力可以理解用户需求并动态选择调用合适的工具如搜索引擎、计算器、数据库来完成任务而不仅仅是生成文本。五、快速上手写一个 Hello World让我们用最简单的LLMChain来感受一下 LangChain 的威力。from langchain.llms import OpenAI from langchain.prompts import PromptTemplate from langchain.chains import LLMChain 1. 初始化模型 llm OpenAI(temperature0.9) # temperature 控制创造性 2. 创建提示词模板 prompt PromptTemplate( input_variables[product], template为一家生产 {product} 的公司起一个朗朗上口的名字。, ) 3. 创建链 chain LLMChain(llmllm, promptprompt) 4. 运行链 result chain.run(环保可降解咖啡杯) print(result) 可能的输出绿杯未来 (GreenCup Future) 或 大地之杯 (EarthCup)关键代码解读LLM封装了 OpenAI 的模型。PromptTemplate定义了一个带变量{product}的模板。LLMChain将模型和提示词组合成一个可执行单元。chain.run()传入变量值执行整个链得到模型输出。看我们只用了几行代码就完成了一个可定制化的文本生成任务六、实战项目搭建一个“智能文档问答助手”需求分析目标上传一个 PDF 或 TXT 文档AI 能够基于文档内容准确回答用户提出的问题。技术方案RAG 流程Document Loader加载本地文档。Text Splitter将长文档分割成适合处理的小块。Embeddings Vector Store将文本块转换为向量并存入向量数据库。RetrievalQA Chain用户提问时从向量库中检索相关文本块连同问题一起发送给 LLM 生成答案。完整代码实现含注释import os from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain.llms import OpenAI 设置 API Key os.environ[OPENAI_API_KEY] 你的-OpenAI-API-Key 1. 加载文档 loader PyPDFLoader(./your_document.pdf) # 替换为你的PDF路径 documents loader.load() 2. 分割文本 text_splitter RecursiveCharacterTextSplitter( chunk_size500, # 每个块的最大字符数 chunk_overlap50 # 块之间的重叠字符数保持上下文连贯 ) texts text_splitter.split_documents(documents) 3. 创建向量数据库 embeddings OpenAIEmbeddings() vectorstore Chroma.from_documents(texts, embeddings) 4. 创建检索式问答链 qa_chain RetrievalQA.from_chain_type( llmOpenAI(), chain_typestuff, # 将检索到的文档“塞”进提示词 retrievervectorstore.as_retriever() ) 5. 进行问答 while True: query input(\n请输入你的问题 (输入 quit 退出): ) if query.lower() quit: break answer qa_chain.run(query) print(f答案: {answer})效果演示运行上述代码程序会加载你的 PDF建立索引。之后你可以像与 ChatGPT 对话一样用自然语言提问关于文档内容的问题AI 会基于文档内容生成答案。此处可放置程序运行截图或 GIF展示加载文档和问答过程七、进阶拓展可选阅读使用国产大模型LangChain 支持多种模型后端。你可以轻松地将OpenAI()替换为ChatTongyi通义千问或ChatBaidu文心一言等。接入外部工具利用Agent让 LLM 调用搜索引擎、计算器或数据库查询完成更复杂的任务。使用 LangServe 部署为 API 服务将搭建好的 Chain 快速封装成 REST API方便集成到其他应用中。八、总结与展望回顾核心知识点LangChain 是一个模块化、可组合的 LLM 应用开发框架。五大核心组件Model, Prompt, Chain, Memory, Agent。通过Chain可以轻松组合复杂工作流。RAG检索增强生成是让 LLM 掌握私有知识的关键范式LangChain 提供了完整实现。LangChain 的适用场景与局限性适用场景构建聊天机器人、智能问答、文档分析、代码生成助手等需要与 LLM 深度交互的应用。局限性学习曲线存在对于极其简单的单次 API 调用可能显得“杀鸡用牛刀”版本更新较快需关注社区动态。推荐学习资源官方文档https://python.langchain.com/最权威GitHub 示例LangChain 官方仓库 有大量 Cookbook。中文社区关注相关技术博客和公众号获取本地化实践案例。常见问题 FAQQ: 运行时报错 “OpenAI API key not found”。A: 请检查是否正确设置了OPENAI_API_KEY环境变量。Q: 处理中文文档时效果不好。A: 尝试调整TextSplitter的分割策略如按句号、换行符分割或使用针对中文优化的嵌入模型。Q: Token 超限怎么办A: 调整chunk_size减小文本块大小或使用ConversationSummaryMemory来压缩历史对话。

相关新闻

NLP语义分析与结构优化在内容创作中的应用

NLP语义分析与结构优化在内容创作中的应用

1. 项目概述:语义分析与结构优化的专业价值"专业版付费服务提供更深层次的语义分析与段落结构优化建议"这个标题背后,反映的是当前内容创作领域对高质量文本处理的刚性需求。作为从业十年的文字工作者,我深刻体会到:普通…

2026/10/13 12:24:20 阅读更多 →
C++字符串处理实战:从“斯诺登密码”题解看映射、分割与组合算法

C++字符串处理实战:从“斯诺登密码”题解看映射、分割与组合算法

1. 项目概述:从“斯诺登密码”到算法实战最近在洛谷上刷题,又看到了P1603这道经典题目——“斯诺登的密码”。乍一看标题挺唬人,又是“斯诺登”又是“密码破译”,感觉像是什么高深的谍战技术。但实际做下来,你会发现它…

2026/10/13 12:23:52 阅读更多 →
YOLO11模型零停机切换实战:架构设计与生产优化

YOLO11模型零停机切换实战:架构设计与生产优化

1. YOLO11模型版本切换的核心挑战在实时目标检测系统中,模型版本切换从来都不是简单的文件替换。当我在2023年负责某智慧园区的人车识别系统升级时,就深刻体会到了这一点。当时我们需要从YOLOv8升级到YOLO11,系统要求724小时不间断运行&#…

2026/10/12 8:00:23 阅读更多 →

最新新闻

行为型设计模式详解:策略、模板方法、观察者、迭代器、责任链

行为型设计模式详解:策略、模板方法、观察者、迭代器、责任链

设计模式系列写到第四篇,终于轮到行为型模式了。前几篇我们把创建型(怎么把对象造出来)和结构型(怎么把对象组合起来)讲完了,这一篇开始讲行为型模式的“上篇”。如果你是跟着这个系列一路看过来的&#xf…

2026/10/13 12:24:19 阅读更多 →
K均值聚类实战:从原理到落地的完整指南

K均值聚类实战:从原理到落地的完整指南

1. 从一个真实需求说起:为什么聚类值得花时间搞明白做数据这行的朋友大概率都遇到过这种场景:手里攥着一份几万行的用户行为表,老板说“把这些人分分类,看看有没有什么规律”,但表里压根没有现成的标签,也没…

2026/10/13 12:24:19 阅读更多 →
图像形成物理:计算机视觉的底层逻辑与工程避坑指南

图像形成物理:计算机视觉的底层逻辑与工程避坑指南

我最早翻到《图像处理、分析与机器视觉(第四版)》的"图像形成物理"这一章时,第一反应是直接跳过。直觉告诉我,前面几章才是重头戏,图像形成不过是点物理常识,无非就是"光打到物体上、镜头收…

2026/10/13 12:24:19 阅读更多 →
AI基础经典试题全解析:归结反演与α-β剪枝手推题攻略

AI基础经典试题全解析:归结反演与α-β剪枝手推题攻略

简介:百度人工智能岗位的经典考试试题文档,覆盖语义网络、知识表示、推理方式、机器学习及自然语言处理等核心模块,并配有完整答案解析。题目按选择题、填空题、简答计算题、应用题四种形式编排,适合正在准备百度或同类互联网公司…

2026/10/13 12:24:19 阅读更多 →
MMDetection网络结构全解析:Backbone、Neck、Head与Loss设计

MMDetection网络结构全解析:Backbone、Neck、Head与Loss设计

1. 整体思路拆解:mmDetection 的网络部分为什么要这么设计我刚开始接触 mmDetection 的时候就一个感觉:模块太多了。一个检测器拆成 backbone、neck、head、loss,到处是 config、registry、builder,看两天源码直接想退坑。但后来切…

2026/10/13 12:24:19 阅读更多 →
Linux安装Oracle19C全攻略:前置检查、静默安装与高频报错排查

Linux安装Oracle19C全攻略:前置检查、静默安装与高频报错排查

简介:对Linux运维工程师和Oracle DBA而言,在CentOS 7与Red Hat 7中安装Oracle 19C,需要提前完成硬件检查、安全策略调整、网络和用户配置等一系列系统级准备,否则安装过程很容易中断。完整安装指南以docx格式提供,共1个…

2026/10/13 12:23:19 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →