在做AI应用开发的时候,大模型都有一个通病,虽然强大,但它不知道你公司的私有文档,记不住之前的对话,更不会主动上网搜索最新信息。大模型就像一个博学但"与世隔绝"的学者——知识丰富,却无法连接现实世界。
LangChain 正是为了解决这个问题而生。它是由 Harrison Chase 开发的开源框架,专门用来构建基于大语言模型(LLM)的应用程序。简单来说,LangChain 就是连接"大脑"(LLM)和"现实世界"(数据库、搜索引擎、私有文档)的桥梁。
这篇文章将手把手带你从零开始掌握 LangChain,每个步骤都提供完整的可运行代码。你不需要有 Python 基础,只要跟着操作,就能构建出自己的 AI 应用。希望对你有所启发。
当我们直接调用 GPT 或其他大模型的 API 时,会遇到三个根本性问题:
知识过期 - 模型只知道训练时的数据,不知道昨天刚发生的新闻,也不知道你公司的内部文档。就像一个 2023 年就"冬眠"的人,醒来后对 2024 年的世界一无所知。
无记忆能力 - 每次 API 调用都是全新的开始。你问它"我叫什么",它回答了;下次再问,它完全忘记了。这不是模型笨,而是 API 的调用机制决定的——每次请求都是独立的,没有状态保持。
缺乏工具使用能力 - 问它"现在比特币多少钱",它只能胡乱猜测;让它"帮我算一下 23423 × 82342",大概率算错。大模型天生不擅长精确计算和实时数据获取。
LangChain 的核心哲学是组合优于继承。它把 AI 应用开发拆解成一个个独立的"积木":
这种设计的精妙之处在于:数据流向清晰,组件职责单一。每个组件只做一件事,并且做好——这正是优秀架构的标志。
从企业架构的角度看,LangChain 的设计完美符合 TOGAF 框架的四层模型:
业务架构层 - LangChain 能构建哪些 AI 应用?答案是:AI 对话系统、知识库问答、智能客服、代码助手等。关键是它降低了门槛——以前需要 AI 团队才能做的事,现在几十行代码就能实现。
应用架构层 - 核心组件包括 Models(模型抽象)、Chains(链式调用)、Agents(智能体)、Toolkits(工具集)。这一层的设计哲学是可组合性:你可以像搭乐高一样组合这些组件,而不是从零开始写代码。
数据架构层 - 包含 Memory(记忆管理)、Vector Stores(向量数据库)、Document Loaders(文档加载器)、Text Splitters(文本切割器)。重点是数据的流转和转换:原始文档如何变成 AI 能理解的向量?对话历史如何高效存储和检索?
技术架构层 - 底层涉及 API Integration(多模型兼容)、Prompt Engineering(提示词工程)、Embeddings(向量化)、LLM Provider(模型提供商集成)。这一层解决的是如何让不同技术栈无缝协作。
从 LangGraph(LangChain 的进阶版)可以看出架构设计的精髓:
这种设计的天才之处在于:把流程控制从代码逻辑中抽离出来,变成可视化的图结构。你画一个流程图,就能直接翻译成代码。
LangChain 基础工作流用户输入QueryPrompt 模板TemplateLLM 调用Model输出 解析Parser结果 返回Response
在开始实战之前,我们需要搭建开发环境。以下步骤适用于 macOS、Linux 和 Windows 系统。
确保你的电脑已安装 Python 3.8 或更高版本。打开终端(Terminal 或 CMD),输入:
如果显示版本号(如 Python 3.12.11),说明已安装。否则请访问 https://www.python.org 下载安装。
在终端中执行以下命令:
如果下载速度慢,可以使用国内镜像源:
本教程使用智谱 AI(ChatGLM)作为示例,因为它:
访问 https://open.bigmodel.cn 注册账号并获取 API Key(通常是一串以 . 分隔的字符)。
重要提示:代码中所有 "你的_API_KEY" 都需要替换成你的真实 API Key。
目标:让 AI 开口说话,验证环境配置正确。
核心洞察:LangChain 的模型接口抽象得非常巧妙。它兼容 OpenAI 格式的 API,这意味着你写的代码可以无缝切换到 DeepSeek、Moonshot 等其他模型——只需要改两行配置。
创建文件 lesson1.py,复制以下代码:
运行方法:
预期输出:你会看到智谱 AI 用鲁迅的语气夸奖你,类似:
架构洞察:这看似简单,实则蕴含深意——接口标准化是可移植性的前提。想象一下,如果没有统一的插座标准,每换一个电器就要重新布线,那将是灾难。LangChain 通过统一接口,让你的代码可以在不同模型间自由迁移。
目标:让 AI 记住上下文,实现多轮对话。
问题分析:现在的 AI 像一条金鱼,记忆只有 7 秒。如果你告诉它"我叫小明",然后再问"我叫什么",它会一脸茫然。因为每次运行都是一次全新的开始。
解决方案:LangChain 的思路很简单——把之前的聊天记录,打包一起发给它。
创建文件 lesson2.py:
运行方法:
测试记忆力:
架构洞察:记忆的本质是什么?不是什么黑科技,而是把之前的对话记录打包一起发给模型。就像开会时,你不能只告诉老板"我同意",你得先复述一遍前面讨论了什么,老板才知道你同意的是什么。
如果去掉代码中的 A 和 D 步骤,messages 列表里就永远只有那句系统指令,AI 每次都看不到之前的对话。记忆的本质,就是不断把新的聊天记录"追加"到清单里,再重新发给模型。
目标:让 AI 基于你提供的文档回答问题(这是目前最火的应用场景)。
问题分析:现在的 AI 虽然博学,但它有两个大问题:
解决方案:RAG (检索增强生成) 就是给 AI 搞一场"开卷考试"。我们先把资料给它,当你问问题时,它先去资料里翻书(检索),找到答案后再总结给你(生成)。
比喻:RAG 就像给 AI 配了一个外接移动硬盘。模型本身的参数是"内存",RAG 是"硬盘"——内存有限但速度快,硬盘容量大但需要检索。
在你的代码文件夹里新建一个文本文件 knowledge.txt,写入一些只有你知道的秘密知识:
创建文件 lesson3.py:
运行方法:
预期输出:AI 会基于 knowledge.txt 里的内容回答,比如:"学习 LangChain 的秘诀是每天对着电脑大喊三声'奥力给'。"
架构洞察:RAG 的数据流转
核心创新:用空间距离表达语义相似度,把 NLP 问题转化为几何问题。意思相近的文本,向量距离会很近——这种"降维打击"的思想极其优雅。
目标:让 AI 学会使用工具(如搜索网络、查天气、算数学)。
问题分析:问 AI "现在比特币多少钱",它只能胡乱猜测;让它算 23423 × 82342,大概率算错。大模型天生不擅长精确计算和实时数据获取。
解决方案:Agent (代理) 的核心概念——当 AI 遇到自己不会的问题时,它知道去使用"工具"。
创建文件 lesson4.py:
运行方法:
预期输出:你会看到 AI 的思考过程(绿色/黄色文字):
架构洞察:Agent 的设计哲学是将"决策"和"执行"分离。模型不直接输出答案,而是输出一个"调用工具"的指令,框架负责执行工具并把结果喂回给模型,模型再基于结果生成最终答案。这个循环可以重复多次,直到问题解决。 AI 从"只会说"进化到了"既会想又会做"。
目标:把黑乎乎的终端程序变成漂亮的网页应用。
问题分析:目前的程序都在终端里运行,不够直观,也不方便分享给朋友使用。如果能有一个网页界面,就能像 ChatGPT 一样随时打开使用。
解决方案:Streamlit 是一个 Python 库,专门用来快速构建数据应用的 Web 界面。最神奇的是:你不需要懂 HTML、CSS、JavaScript,完全用 Python 就能写出漂亮的网页。 比喻:Streamlit 就像给你的 Python 程序套上一个精美的外壳,让它从"命令行工具"变成"Web 应用"。
我们要把 Lesson 2 的带记忆聊天机器人搬到网页上。创建文件 lesson5_streamlit.py:
运行方法:
Streamlit 的运行方式和普通 Python 脚本不一样。请在终端输入:
预期效果:
终端会自动打开你的默认浏览器(通常地址是 http://localhost:8501),你会看到:
架构洞察:Session State 的关键设计
Streamlit 有一个重要机制:每次你点击按钮或输入内容,整个 Python 脚本会从头到尾重新运行一遍。
这意味着什么?如果没有 st.session_state,每次输入都会创建一个新的空 messages 列表,AI 就会失忆。
st.session_state 的作用就是在页面刷新时保持数据不丢失。你可以把它理解为"网页的暂存箱":
实用技巧:你可以在侧边栏添加控制选项,比如调节 AI 的"创造力"(temperature 参数):
LangChain 的 Chain(链)是单向流动的:A → B → C → 结束。但现实场景往往需要:
LangGraph 引入了图结构(Graph),可以表达任意复杂的流程。
目标:做一个智能分流系统。用户输入 → AI 判断意图 → 如果是"数学题"走 A 路,如果是"闲聊"走 B 路。
创建文件 lesson6_router.py:
运行方法:
预期输出:你会看到不同的问题走不同的路径:
架构洞察:这种设计的好处是流程控制逻辑从业务代码中剥离。修改路由规则不需要动核心代码,符合"开闭原则"。你可以轻松添加更多分支,比如"翻译"、"代码生成"等,而不会让代码变成"意大利面条"。
目标:构建一个"追求完美"的作家 Agent。写初稿 → 检查质量 → 如果不达标,返回重写 → 再检查 → 直到满意。
创建文件 lesson7_loop.py:
运行方法:
预期输出:你会看到 AI 反复修改文章,直到编辑满意:
架构洞察:循环不是盲目重复,而是带着反馈的迭代。每次循环都把上一次的"编辑意见"传给撰写节点,这样 AI 知道哪里需要改进。
Prompt 工程的关键:我们在编辑节点强调"严禁包含 Markdown、代码块",为什么?因为 LLM 很"礼貌",如果不管教,它可能回复:"是的,这是一个好文章。" 而不是单独的 "PASS",导致程序无法识别终止条件,陷入无限循环。
通过以上7步,我们现在已经掌握了所有核心积木:链条、记忆、RAG、Agent,以及让它们变得智能的 LangGraph。
接下来,我们将从核心架构转向应用深度。将会陆续开展以下几个方面的实操教程:
多智能体协作 (Multi-Agent Systems):
探索 LangGraph 的终极形态:让多个 Agent 像一个团队一样工作。例如,我们创建一个团队,包括一个“研究员”、一个“总结员”和一个“审批员”,它们在 LangGraph 中相互协作、传递信息,共同完成一个复杂的任务。
RAG 生产级优化 (Advanced Retrieval)
深入 RAG(知识检索)的难点。如何处理复杂的 PDF、表格、以及索引优化策略(如 RAG-Fusion, Small-to-Large Chunking),让你的知识库应用在真实场景中更聪明、更精确。
结构化数据与工具整合 (Structured Output & Tools)
专注于数据的稳定性和可靠性。如何强制 LLM 严格输出 JSON 或 Pydantic 格式的数据(这是自动化流程的关键),以及如何将更多的外部工具(如计算器、数据库查询)安全可靠地集成到 Agent 中。
记住,框架是手段,解决问题才是目的。当你的业务需求超出框架能力时,不要犹豫——基于你学到的架构思想,自己实现定制版本。
LangChain 官方资源
智谱 AI
MCP研究院专注于AI技术的深度解读与实战应用,致力于用最直接的方式帮助开发者理解复杂技术背后的设计思想。我们相信,好的架构胜过一千行代码。
如果你对 AI Agent、LLM 应用开发、MCP 协议等话题感兴趣,欢迎关注我们的公众号,获取更多技术洞察。
本文基于 LangChain 1.0 版本撰写,代码已在 Python 3.12 环境下测试通过。文章提供的所有代码示例均可直接运行,如遇问题请检查依赖版本和 API Key 配置。
评论