别只会让 AI 写代码!LangChain+LangGraph 才是 AI 应用开发核心能力

发布时间:2026/7/20 19:36:00
别只会让 AI 写代码!LangChain+LangGraph 才是 AI 应用开发核心能力 系列文章目录提示这里是系列文章的专栏并不喜欢吃鱼的C专栏提示以下是文章目录哦!系列文章目录前言一.先搞懂现在最火的 Vibe Coding——AI 辅助编程到底是什么1.1 Vibe Coding 是什么起源 工作流程1.2 Vibe Coding 三大优势小白直观感受1.3 重点Vibe Coding 致命局限性为什么不能只靠 AI 写代码1.4 Vibe Coding 正确定位总结二.AI 开发框架是什么LangChain 为什么是行业标配2.1 框架的底层逻辑和 Spring、libcurl 是一个道理所有框架通用两大核心设计抽象封装、模块化组装1.传统框架类比2.框架的四大价值2.2 不用框架直接调用 LLM会遇到哪些无解难题医疗助手案例2.3 LangChain 登场一次性解决上面所有问题2.3.1 LangChain 核心定义2.4 主流 LLM 开发框架生态对比按需选择三.LangChain 不够用复杂 AI 代理必须学 LangGraph3.1 LangChain 链式架构的先天短板为什么需要 LangGraph3.2 LangGraph 是什么核心定位核心概念通俗解释3.3 LangGraph 极简可运行代码示例带循环信息收集客服机器人安装依赖3.4 LangChain vs LangGraph 怎么选四.AI 时代程序员的正确学习路线4.1 三者学习顺序循序渐进前言提示本文要记录的大概内容当下现状现在人人都在用 Cursor、Claude Coding 一键生成代码也就是网上爆火的Vibe Coding氛围编程很多小白产生疑问AI 都能写代码了我们还有必要学开发框架吗抛出核心观点AI 只能做重复、样板代码企业级复杂 AI 应用、RAG 知识库、自动 AI 代理必须靠 LangChain/LangGraph 框架只会 Vibe Coding 会踩大量安全、架构坑框架思维才是不可替代的核心能力。本文承诺全程零基础友好不讲晦涩理论附带可直接复制运行的 Python 代码看完能分清三者定位上手写第一个 AI 小程序。提示以下是本篇文章正文内容一.先搞懂现在最火的 Vibe Coding——AI 辅助编程到底是什么1.1 Vibe Coding 是什么起源 工作流程起源2025 年 2 月由 OpenAI 联合创始人 Andrej Karpathy 提出核心定义用自然语言描述需求交给大模型生成代码开发者只做测试、反馈迭代不用手写底层重复代码标准工作流自然语言描述需求 → AI 生成完整代码 → 开发者测试运行 → 反馈 bug / 优化点 → AI 迭代修改核心特征开发者可以不完全吃透底层代码但必须审查、校验每一段输出。1.2 Vibe Coding 三大优势小白直观感受开发效率暴涨原型开发速度提升 75%几天工作量几小时完成零门槛上手不会编程的人靠自然语言一小时做出可用工具解放创意不用纠结循环、变量命名专注产品思路、架构设计。1.3 重点Vibe Coding 致命局限性为什么不能只靠 AI 写代码这是全文核心转折点解释为什么我们还要学 LangChain 框架代码质量黑箱AI 只保证 “能运行”不考虑可维护、可扩展、优雅架构记忆 知识缺陷上下文窗口有限大型项目会遗忘前期逻辑代码冲突训练数据有时间截止会虚构不存在的 API、库AI 幻觉企业级安全隐患最致命自动生成带 SQL 注入、硬编码密码、XSS 漏洞的代码金融 / 医疗系统绝对不能直接上线高并发可靠性差小数据正常大数据、高并发场景容易崩溃缺少日志、熔断、异常处理。1.4 Vibe Coding 正确定位总结不是程序员替代品是效率工具适合写 Demo、单元测试、修改变量、简单工具、样板代码不适合系统架构设计、企业级核心业务、安全敏感系统补充Karpathy 后期修正观点单一 AI 工具无法解决全部开发问题需要框架、工具分工协作。二.AI 开发框架是什么LangChain 为什么是行业标配2.1 框架的底层逻辑和 Spring、libcurl 是一个道理所有框架通用两大核心设计抽象封装、模块化组装1.传统框架类比1.Spring封装 Java Web 复杂逻辑不用手动写 ServletJava Web:用 Java 语言做网页网站、后台服务的整套技术统称,我们平时访问的网站、小程序 / APP 后端接口只要是 Java 写的后台都叫 Java Web 项目。 举例子淘宝、企业管理系统、校园教务系统后端很多都是 Java Web 开发Servlet:Server Applet直译运行在服务器上的小程序它是 Java 官方规定、用来处理浏览器请求的基础接口是 Java Web 最底层原生工具。① Java EEJava EE Java 企业版就是早年用 Java 做网站、后台服务的一套官方标准里面包含 Servlet、MVC、数据库工具等一堆组件就是图里写的复杂 Java EE 组件。② MVC一种代码分层设计思想M数据模型数据库数据V页面视图前端网页C控制器接收浏览器请求就是前面讲的 Servlet 早年原生 Java EE 写 MVC组件之间互相纠缠。③ 中间一团乱麻依赖注入DI先讲依赖你的 A 类要用 B 类A 就依赖 B。 没 Spring 之前你要手动 new 对象项目大了几百个类互相 new、互相调用代码耦合死死缠在一起就是图里这团乱线 改一个类一堆关联代码全要改维护、测试巨麻烦。 这堆乱线就代表原生 Java EE 组件之间依赖关系错综复杂、高度耦合。④ Spring 方框 箭头箭头意思Spring 把这一团乱糟糟的耦合问题全部解决、统一收纳管理2.libcurl封装网络请求不用底层 Socket①Socket操作系统提供的、程序和网络通信的最底层接口相当于电脑联网的 “网线接口”如果你不使用 libcurl自己写代码访问网页、传文件、发邮件就要手写一大段底层代码1.手动建立 TCP 网络连接2.手动拼接 HTTP 请求报文请求头、参数、换行格式全要自己拼3.手动处理超时、重连、编码、代理、证书……4.图里散乱黑块就是形容原生网络底层代码零散、繁琐、写起来杂乱每种网络协议都要重复写一套底层逻辑。右侧三种协议libcurl 对外提供的能力libcurl 封装完底层后给开发者提供统一简单的接口支持多种网络协议HTTP橙色圆形浏览网页、调用后端接口最常用的协议我们平时打开网站、小程序请求后台都用它FTP绿色三角文件传输协议用来上传 / 下载服务器文件SMTP紫色方块邮件发送协议程序自动发邮件靠它除此之外 libcurl 还支持 HTTPS、SFTP、WebSocket 等几十种网络协议图里只举了 3 个典型例子3.LangChain封装所有大模型、向量库、工具调用的底层 API统一接口左边所有能接入 LangChain 的底层组件输入侧分成 4 大类全是做 AI 应用要用到的零散工具1. LLM 大语言模型AI 大脑OpenAIChatGPT 系列模型AnthropicClaude 系列大模型还有其他开源 LLM图里立方体图标 作用负责生成文字、理解对话是 AI 的 “大脑”。 如果不用 LangChain每种模型都要写一套完全不同的对接代码非常麻烦。2. 向量数据库Chroma / Pinecone图标是数据库样式叫向量库。 用途存放你自己的私有文档PDF、笔记、知识库实现本地知识库问答RAG 检索增强。 比如上传公司手册AI 回答时先查这份文档不会瞎编。3. Tools 工具集扳手图标给 AI 赋予联网、查数据、调用软件的能力 联网搜索、计算器、读取文件、调用第三方接口、爬虫等都属于 Tools。 让 AI 不只聊天还能干活。中间LangChain 核心封装层塑料袋包裹的盒子它的核心作用统一兼容不管你用 OpenAI、Claude、本地开源大模型还是 Chroma/Pinecone 向量库、各类工具全部用同一套代码写法接入屏蔽底层差异不用记每个 AI 厂商、向量库独特的 API、请求格式、鉴权逻辑LangChain 内部帮你适配提供流水线能力内置对话记忆、文档分割、检索、提示词模板、Agent 智能体等现成功能不用自己从零写复杂 AI 逻辑。右边对外输出统一 API使用侧LangChain 封装完内部所有组件后向外暴露一套标准化 API 接口。 开发者 / 业务系统只需要调用这套统一接口就能搭建完整 AI 应用 智能客服、知识库问答、AI 自动工作流、智能 Agent 机器人等。2.框架的四大价值规范架构、把控代码质量、规避安全风险、快速集成各类 AI 组件。2.2 不用框架直接调用 LLM会遇到哪些无解难题医疗助手案例用医疗咨询助手 6 大痛点举例1.模型幻觉用户误食纽扣电池AI 给出错误急救方案2.提示词无统一规范多人开发输出效果混乱3.切换模型成本极高从 GPT3.5 换到 Llama3 需要重写全部代码4.输出纯文本无法结构化对接前端页面5.模型知识老旧无法读取最新实时资料6.不会自动调用外部数据库 / 工具药物查询 API。2.3 LangChain 登场一次性解决上面所有问题2.3.1 LangChain 核心定义专门构建 LLM 应用的开发框架把 AI 开发拆成标准化组件像乐高积木自由拼接用链式流程串联多步任务。统一模型接口一套代码切换 GPT、Claude、本地开源大模型Prompt 提示词模板统一规范提示词批量管理Chain 任务链串联 “检索知识库→调用大模型→格式化输出” 完整流程Memory 记忆保存多轮对话上下文RAG 检索模块对接向量数据库解决模型知识过时、幻觉OutputParser 输出解析强制模型输出 JSON 结构化数据Agent 智能体让 AI 自动调用外部工具计算器、数据库、搜索引擎。2.4 主流 LLM 开发框架生态对比按需选择三.LangChain 不够用复杂 AI 代理必须学 LangGraph3.1 LangChain 链式架构的先天短板为什么需要 LangGraph线性 Chain 只能一步接一步执行遇到以下场景完全无力举个例子假设我们要构建一个 AI 代理来自动处理用户提交的客服工单例如退货请求、产品咨询、投诉等。一个理想的流程是循环逻辑收集用户信息不全自动回头重新询问条件分支用户咨询 / 退货 / 投诉走完全不同流程长会话状态保存多轮对话、跨天聊天记忆人工介入AI 解决不了自动转交人工客服处理完继续流程故障恢复长时间运行任务中断后从断点继续执行。3.2 LangGraph 是什么核心定位LangChain 团队 2024 年推出图式状态编排框架不是替代 LangChain是补充扩展底层复用 LangChain 所有组件专门解决复杂 AI 代理、多分支循环工作流。核心概念通俗解释节点 Node每一步操作意图分类、收集信息、调用工具边 Edge节点之间流转路线条件边根据状态判断走哪条分支State 全局状态全程保存对话、业务数据、标记自动传递3.3 LangGraph 极简可运行代码示例带循环信息收集客服机器人安装依赖1. 最简单比喻你要做一碗番茄鸡蛋面你的代码 一碗面你自己写的程序番茄、鸡蛋、面条、盐、锅 依赖没有这些材料你光靠自己做不出这碗面 写程序同理很多功能你不想从零手写就要借用别人写好的工具包这些工具包就叫依赖。2. 结合你之前三张图对应理解① Spring你写 Java 网站不想手写 Servlet、处理复杂对象依赖就要导入spring-web这个依赖。 不装这个依赖你代码里写Controller会直接报错程序跑不起来。② libcurlC/C 程序想发 HTTP 请求不想手写 Socket 底层代码就要安装 libcurl 依赖库。③ LangChain你想用代码对接 ChatGPT、做知识库 AI必须安装langchain依赖包 不装的话你写from langchain直接爆红找不到这个工具。3. 专业定义依赖Dependency 别人提前封装好、发布出来的代码工具库你的项目需要调用它的功能才能正常运行这个工具就是你的项目依赖。from dotenv import load_dotenv import os from typing import TypedDict, Annotated from langgraph.graph import StateGraph, END from langchain_openai import ChatOpenAI load_dotenv() llm ChatOpenAI(modelgpt-3.5-turbo, api_keyos.getenv(OPENAI_API_KEY)) # 1.定义全局状态存储对话、收集的订单信息 class CustomerState(TypedDict): user_input: str order_id: str msg_history: list # 2.节点1检查是否收集到订单号缺失则询问用户 def check_order(state: CustomerState): if not state.get(order_id): return {user_input: 请提供你的订单编号我才能处理退货申请} return state # 3.节点2处理退货业务 def handle_return(state: CustomerState): res llm.invoke(f用户订单{state[order_id]}申请退货生成退货指引) return {user_input: res.content} # 4.构建图工作流 graph StateGraph(CustomerState) # 添加节点 graph.add_node(check_info, check_order) graph.add_node(deal_return, handle_return) # 设置入口 graph.set_entry_point(check_info) # 条件分支有订单号走处理流程无订单号直接结束等待用户输入 def route(state: CustomerState): if state.get(order_id): return deal_return return END graph.add_conditional_edges(check_info, route) graph.add_edge(deal_return, END) # 编译运行图 workflow graph.compile() # 第一次用户只发了退货没给订单号触发循环询问 result workflow.invoke({user_input: 我要退货, order_id: }) print(result[user_input])LangChain 线性链无法实现 “缺信息重新询问” 的循环逻辑LangGraph 通过 State 状态 条件边轻松实现所有节点共享全局状态对话、订单数据全程保存不用自己写数据库存上下文复杂多智能体、自动工具调用、人工介入系统都基于这套图结构开发。3.4 LangChain vs LangGraph 怎么选简单线性任务单次问答、简单 RAG→ LangChain 足够需要循环、分支、多轮状态、人工介入、复杂 AI 代理 → LangGraph两者互补LangGraph 节点内可以直接调用 LangChain 的 Chain。四.AI 时代程序员的正确学习路线4.1 三者学习顺序循序渐进先吃透 Vibe Coding熟练使用 AI 辅助写基础代码掌握提示词技巧再系统学习 LangChain掌握组件、RAG、Chain能独立开发知识库问答机器人进阶 LangGraph实现复杂 AI 代理、多分支业务工作流持续补充系统架构、代码安全、大模型微调、向量数据库。