LangChain 与 LangGraph 介绍(一)

一、AI 时代下的编程范式

1. Vibe Coding 氛围编程

1.1 Vibe Coding 的起源

在过去十年间,低代码/无代码平台和 AI 代码助手持续冲击着软件开发行业。如今,一种被称为 Vibe Coding 的新兴实践突然走红,甚至颠覆了人们对 "程序员到底在做什么" 的认知。

Vibe Coding(氛围编程)是一种依赖人工智能的计算机编程实践,其核心在于:开发者使用自然语言 提示向针对代码优化的大语言模型(LLM)描述问题,由 LLM 生成软件,从而使程序员摆脱编写和调 试底层代码的需要。

其关键特征在于:用户通常在不完全理解代码底层机制的情况下接受 AI 生成的代码。 实际上,这与仅仅将 LLM 作为代码输入的辅助工具不同,**Vibe Coding 仍然需要开发者审查、测试和 理解每一行代码。**Vibe Coding 的本质是完全沉浸于 AI 助手的 "氛围" 中,将详细的实现过程外包给 AI。

Vibe Coding 标志着软件开发模式的根本转变:从细致的手动编码,转向更抽象、意图驱动的方法,人 类开发者在此过程中扮演着指导 AI 的角色。

  1. 开发者需要更加注重问题定义和规范,清晰地使用自然语言表达需求和期望的结果。确定最佳的提 问方式变得至关重要。

  2. 同时,开发者需要具备指导和审查 AI 生成代码的能力,评估、完善和测试 AI 产出的代码。开发者 更像是扮演指导者或编辑的角色。

  3. 系统设计和架构的理解变得比低层次的编码更为重要。批判性思维和问题解决能力对于评估和改进 AI 生成的代码至关重要。

  4. 此外,开发者需要学习如何有效地与 AI 沟通,掌握提示技巧以获得期望的结果。虽然侧重点有所变 化,但对编程基本原理的理解对于有效地指导 AI 和进行调试仍然很有价值。

可以看到,清晰地定义问题和指导 AI 的能力变得至关重要。 此外,AI 的输出需要验证,这需要批判性 思维和对软件架构的理解。这表明开发者正在从"代码编写者"转变为更像是能够有效利用 AI 的"软件 架构师"或"产品负责人"。

1.2 Vibe Coding 的局限性

生成的代码往往只是"能用"而非"优秀"。

主要体现在以下几个方面:

• 代码质量与架构的"黑箱"困境

AI 的目标是生成功能上可运行的代码,但它无法理解什么是"优雅"、"可维护"、"可扩展"的 代码架构。

• 上下文长度的"金鱼记忆"与知识滞后性

有限的上下文窗口:即使上下文长度在不断增长,LLM 也无法记住并理解一个庞大项目的全部代 码。在开发过程中,后期的一个需求可能需要修改前期生成的代码。AI 由于"忘记"了之前的完整 上下文,很可能会生成与现有架构冲突或重复的代码,导致系统腐化。

知识截止与"幻觉":LLM 的训练数据有截止日期,它可能无法使用最新的语言特性、库版本或最 佳实践。更危险的是,它可能会"幻觉"出一些不存在的 API、库函数或参数,生成看似正确实则无 法运行的代码,这对开发者甄别能力提出了极高要求。

• 安全性与可靠性的"隐形地雷"

这是Vibe Coding在企业级应用中最致命的弱点。

安全漏洞的无声引入:AI没有 "安全" 意识。它可能会轻松地生成含有 SQL 注入、XSS 攻击、硬编 码密码、不当的权限设置等安全漏洞的代码。对于安全至关重要的系统(如金融、医疗),这是一个 不可接受的风险。

可靠性难以保障:生成的代码缺乏经过严格测试的可靠性。它可能在小规模数据下运行良好,但在高 并发、大数据量或边缘案例下表现不稳定甚至崩溃。缺乏完善的日志、监控和熔断机制,使得线上排 查问题变得极其困难。

可以看到,Vibe Coding 不是一个替代品,而是一个强大的效率倍增器。它的正确定位是:

**• 糟糕的"程序员":**它无法负责架构设计、制定技术方案、保证代码质量、确保系统安全。这些核心 的、战略性的工作必须由拥有扎实框架知识、丰富工程经验和深刻判断力的开发者来完成。

**• 优秀的辅助工具:**它擅长生成样板代码、完成重复性任务、编写单元测试、解释复杂代码、提供灵 感建议。它可以极大提升开发效率,解放开发者去专注于更有价值的任务。

实际上,目前真正跑在生产线上的代码,依旧是工程师一个函数一个函数敲出来的。但像是改函数签 名、重命名变量、写一个测试用例、小的 Demo、工具等这些"接地气"的工程活,恰恰是 AI 最佳的 用武之地。

2. AI 开发框架:新战略高地?

即使 AI 代码生成工具(Vibe Coding)日益强大,但它们生成的代码往往只是"能用"而非"优秀"。真正 的专业开发者需要理解架构设计、系统权衡与工程最佳实践------这正是框架学习的核心价值。

2.1 框架原则

AI 开发框架与传统框架(如 JAVA 中的 Spring,C++ 中的 libcurl 库),它们都共享一些框架原则:

抽象与封装

Spring:封装了Java EE开发的复杂性,如依赖注入、事务管理、MVC。开发者不需要手动管理对象生 命周期或处理繁琐的Servlet API。

AI 开发框架与传统框架(如 JAVA 中的 Spring,C++ 中的 libcurl 库),它们都共享一些框架原则: 抽象与封装 Spring:封装了Java EE开发的复杂性,如依赖注入、事务管理、MVC。开发者不需要手动管理对象生 命周期或处理繁琐的Servlet API。

LangChain:封装了与不同 LLM(OpenAI, Anthropic 等)、向量数据库(Chroma, Pinecone)、工 具(Tools)交互的复杂性。开发者不需要为每个供应商编写不同的 API 调用代码。

模块化与可组装性

LangChain:核心概念就是"链"(Chain),它将不同的模块(LLM, Prompts, Tools, Memory, Output Parsers)像乐高积木一样组合起来,构建复杂的 AI 工作流。

2.2 超级武器

在这场 AI 时代的变革中,如 LangChain、LangGraph 这样的 AI 开发框架正成为开发者的"超级武 器"。它们如同智能时代的操作系统,连接着强大的 AI 模型与复杂的现实应用,让开发者能够以更高效 率构建更强大的 AI 应用。

框架 知识为我们提供了:

• 架构:让我们知道代码应该组织成什么样子。

• 质量:让我们能判断 AI 生成的代码是否合格。

• 安全:框架内置的最佳实践和模式能规避许多基础风险。

• 集成:让我们能高效地将 AI 生成的"零件"组装到经过验证的、可靠的大系统中。

二、LangChain:LLM 应用开发的核心框架

1. LLM 驱动的应用程序的框架

由 LLM 驱动的应用程序的框架,它们的目标是提供构建复杂 LLM 应用(如带有记忆的代理、复杂的 RAG 系统、多步骤工作流)所需的全套工具。以下是按语言生态划分的主流框架:

1.1 Python 生态(绝对主流)

框架 核心特点与优势 适用场景
LangChain 生态最丰富,灵活性极高。提供了最全面的组件(链、代理、检索器等),社区活跃,集成工具众多(大量向量数据库、模型提供商)。 几乎任何复杂的 LLM 应用,尤其是需要高度定制化和集成第三方工具的场景。是大多数项目的首选。
LlamaIndex 专注于 RAG 和数据连接。在文档索引、查询、检索方面性能优异,提供了从简单到高级的多种检索策略。现已扩展为全功能框架。 以查询和分析私有数据为核心的应用,如企业知识库、文档智能问答、数据增强的聊天机器人。

1.2 JavaScript/TypeScript 生态(前端与全栈)

框架 核心特点与优势 适用场景
LangChain.js Python LangChain 的官方 JS/TS 移植版本。API 与 Python 版高度相似,支持大多数核心功能(链、代理、工具)。 全栈开发、浏览器扩展、Edge Runtime(如 Vercel Edge Functions)、Next.js 等现代 Web 框架的集成。
LlamaIndex.TS LlamaIndex 的 TypeScript 版本,专注于 TS 生态中的 RAG 应用。 在 Next.js、Nuxt 等全栈框架中构建强大的 RAG 应用。

1.3 Java 生态

框架 核心特点与优势 适用场景
LangChain4j 一个受 LangChain 启发为 JVM 设计的框架。API 设计符合 Java 习惯。注意它不是 LangChain 团队开发的,是一个社区项目。 需要将 LLM 能力集成到现有 Java 企业应用中的场景,如微服务、大型后端系统。
Spring AI Spring 官方项目,与 Spring 生态无缝集成。提供统一的 API 和数据抽象,生产就绪特性强。 所有基于 Spring Boot 的项目,尤其是企业级生产系统,追求稳定性和框架原生集成。
Spring AI Alibaba Spring AI 的扩展项目,由阿里云官方支持。核心优势在于对阿里云灵积模型服务平台(及通义千问等模型)的深度集成和优化。它提供了开箱即用的配置,方便 Java 开发者以 Spring 的方式便捷、安全地调用阿里云的各种大模型。 深度依赖阿里云生态和服务的 Spring 项目。当需要直接、高效地使用通义千问系列模型、在阿里云 VPC 内网访问模型服务以获取更低延迟和成本,或者需要与阿里云的其它云服务(如 OSS、NAS)结合时,这是最自然和推荐的选择。

1.4 C++ 生态

C++ 生态在 LLM 应用开发的全栈框架领域相对缺失,但这背后有深刻的技术、生态和商业原因,主要 原因是因为 C++ 的角色定位不同:

  1. 开发效率与快速迭代的需求不匹配

LLM 应用开发目前仍处于高度实验性快速迭代的阶段。

• Python/JS:作为动态语言,具有快速原型设计的优势。开发者可以快速修改提示词、调整工作 流逻辑、集成新的 API,并立即看到结果。这种快速反馈循环对于探索LLM能力至关重要。

• C++:作为静态编译型语言,虽然性能极高,但编译时间长,代码修改和测试的周期也更长。这 种"厚重"的开发体验与当前LLM应用需要的"敏捷"开发模式背道而驰。

  1. 生态系统的重心不同

LLM 应用开发严重依赖丰富的第三方库和服务

• Python 生态:拥有无与伦比的库支持,包括但不限于:

◦ 机器学习框架:PyTorch, TensorFlow, JAX(它们虽然底层有C++,但主要API是Python)。

◦ 数据处理:NumPy, Pandas。

◦ Web 和 API 集成:FastAPI, Requests。

◦ 向量数据库客户端:种类繁多。

◦ 模型提供商 SDK:OpenAI, Anthropic 等官方 SDK 首选都是 Python。

• C++ 生态:其传统优势领域在于系统编程、游戏开发、高频交易、嵌入式等,对于现代Web API、云服务集成等领域的库支持远不如Python丰富和易用。

  1. 技术架构的天然分工(核心原因)

现代 LLM 应用架构普遍采用**" Python/JAVA 负责应用层(做什么)** ,**C++ 负责底层推理(怎么 做)"**的分工模式。

一个完美的例子是 llama.cpp (官网: https://github.com/ggerganov/llama.cpp):

• 它本身是一个用 C/C++ 编写的热门项目,用于高效推理 LLaMA 系列及众多其他架构的模型。它 以其出色的性能和极低的内存需求(通过量化)而闻名。

• 你可以将 llama.cpp 作为库链接到你的 C++ 应用程序中,从而在本地直接运行模型。我们可 以自行提供的 server 功能,启动一个 HTTP API 服务。

• 然后,上层的 Python 或 JavaScript 应用通过调用这个 API 来使用它,从而结合了 C++ 的推理性 能和 Python 的应用开发效率。

虽然缺少"全栈框架",但可以看到 C++ 在 LLM 技术栈中是不可或缺的基石,llama.cpp 就是最成功 的案例,使在消费级硬件上运行大模型成为可能。

1.5 如何选择?

团队技术栈:

优先选择团队最熟悉的语言生态,以降低开发和学习成本。

• 如果你所在的团队和技术栈是 Java,想快速为企业应用添加 AI 功能,LangChain4j 和 Spring AI 是绝佳的选择。

• 如果你的需求是极致性能、离线运行或在 资源受限的环境(如手机、嵌入式设备)中部署模型,那 么 C++ 生态的 llama.cpp 是你的不二之选。

• 在大多数情况下,一个混合架构也很常见:例如,用 C++ 实现高性能推理引擎,然后用 Java 或 Python 构建业务层和 API 接口。

项目需求:

• 如果项目是研究性质或需要最大灵活性Python(LangChain) 是不二之选。

• 如果项目是以 RAG 为核心 ,**LlamaIndex(Python/TS)**提供了更专业的工具。

• 如果项目需要深度集成到现有企业级后端(如 Spring 应用),则选择对应的 Spring AI。

• 如果项目是面向 Web 的全栈应用或边缘函数,LangChain.js 是最佳选择。

社区与支持: Python 和 JS 生态的框架(LangChain)更新最快、社区最活跃,遇到问题更容易找到解决方案,是 大多数人的选择。

2. LangChain 介绍

2.1 复杂场景下,LLM 嵌入应用的问题?

在 复杂的场景下使用,如将 LLM 嵌入应用程序遭遇了全新难题:

• 简单提示词(Prompt)得到的答案经常出现幻觉?

• 提示词结构是否可以统一规范?

• 如何实现开发过程中大模型的轻松、灵活切换?

• 大模型输出是非结构化的,怎样与要求结构化数据的程序接口交互?

• 如何克服预训练模型知识陈旧的问题,引入实时更新?

• 如何连接模型与外部工具或系统,执行具体任务?

• ...

为了解决上述难题,业界正在形成一整套称为 "LLM 应 用工程" 的最佳实践和技术栈:

• 针对幻觉、提示词规范:采用 "提示词工程" 和 "检索增强生成(RAG)"。为医疗助手设计严 谨、系统的提示词模板,并强制模型在回答前先从权威、实时的医疗知识库中检索信息,而不是仅 凭记忆回答。

• 针对模型切换:使用 LLM API 抽象层(如 LangChain)。这些中间件统一了不同模型的接口,让开 发者通过配置而非修改代码来切换模型。

• 针对非结构化输出:采用 "输出解析" 技术。强制要求模型以 JSON 等格式输出,并在提示词中 严格定义 JSON 的 Schema。一些框架(如 LangChain)可以自动将模型输出解析为预定义的 Pydantic 对象。

• 针对知识陈旧:主要依靠 RAG 来注入实时、外部的知识。可以加入一些工具,比如搜索引擎工具

• 针对连接外部工具:采用 "智能体(Agent)" 框架。让 LLM 作为大脑,根据用户请求规划步 骤、选择工具(如计算器、数据库API、搜索引擎),并执行任务。 最终,一个成熟的 "智能医疗咨询助手" 不会是直接调用原生大模型,而是一个由精心设计的提示 词、RAG 系统、外部工具 API、输出解析器等共同组成的复杂系统。原生大模型只是这个系统的核心 引擎之一,而非全部。

2.2 LangChain:解决痛点

LangChain 可以解决上述所有问题!

LangChain 是一个用于开发由大语言模型 (LLM) 驱动的应用程序的框架。它通过将自然语言处理 (NLP)流程拆解为标准化组件,让开发者能够自由组合并高效定制工作流。

• 组件(Components):用来帮助当我们在构建应用程序时,提供一系列的核心构建块,例如语 言模型、输出解析器、检索器等。

• 自然语言处理流程(NLP):指的是完成一个特定 NLP 任务所需的一系列步骤。例如,构建一 个"基于公司文档的问答机器人"的流程可能包括:读取文档、分割文本、将文本转换为向量 (嵌入)、存储向量、接收用户问题、搜索相关文本段、将问题和文本段组合发送给大语言模型 (LLM)、解析模型输出并返回答案等。

2.3 LangChain 的技术特点

LangChain 框架的设计精髓在于以链式(Chain)的方式整合多个组件,从而构建出功能丰富的大语 言模型应用。链式表示 LangChain 允许将多个步骤或多个组件串联起来,无需各个组件各自完成其能 力,而是一次性执行这个"链"上的所有流程!

举一个最简单的例子,若我们想借助提示词完成一次对于 LLM 的提问,在 LangChain 中至少需要定义 两个组件: • 提示词模板组件 • 大模型组件

这相当于,提示词模板组件执行了一次,大模型组件也执行了一次。而对于链式执行来说,只需执行 一次链即可:

LangChain 框架提供了一系列标准化模块与接口,主要包括以下方面:

• 统一的模型调用:通过抽象化的接口支持多种大语言模型(例如 OpenAI GPT-4/5、Anthropic Claude 等)和嵌入模型,使开发者可以灵活切换不同模型供应商。

• 灵活的提示词管理:提供提示词模板 (Prompt Templates),支持动态生成输入内容,并可管理 少样本示例与提示选择策略,以提升模型响应质量。

• 可组合的任务链(Chains): 允许将多个步骤串联成完整流程 ,如先检索文档再生成回复,或组合 多次模型调用。开发者能够通过自定义链实现复杂的任务编排

**• 上下文记忆机制(Memory):**用于存储多轮对话中的状态信息。LangChain 曾提供多种记忆管理 方案(如对话历史记忆和摘要记忆),以实现连贯的交互体验(注:该功能目前已由 LangGraph 支持,原有实现已过时)。

**• 检索与向量存储集成:**支持从外部加载文档,经分割和向量化处理后存储至向量数据库,在查询时 检索相关信息并输入大语言模型,帮助构建检索增强生成(RAG)类应用。LangChain 兼容多种主 流向量数据库(如 FAISS、Pinecone、Chroma)和文档加载工具,简化知识库应用的开发流程。

对于上述技术内容,LangChain 的开源组件和第三方集成可以轻松支持快速上手,帮助我们构建应用 程序。除此之外,使用 LangGraph 可以构建支持人机交互的有状态代理。LangChain 公司也在围绕框 架构建完整的生态系统,包括推出 LangSmith(一个用于调试、监控和评估 LLM 应用的平台)以及 LangGraph Platform(用于 LangChain 应用的部署、运维)等,为开发者提供从开发到生产的一站式 支持。

相关推荐
BizObserver2 小时前
从 SEO 到 GEO:2026 年品牌信息分发逻辑的颠覆性变革
大数据·运维·网络·人工智能·安全
AI服务老曹2 小时前
从底层协议对接说起:基于 GB28181/RTSP 的异构视频流接入架构设计与源码级解析
人工智能·docker
CoderJia程序员甲2 小时前
GitHub 热榜项目 - 日榜(2026-04-24)
人工智能·ai·大模型·github·ai教程
zhaoshuzhaoshu2 小时前
主流 AI 编程助手工具特点与对比
人工智能·python
KJ_BioMed2 小时前
AI赋能新药研发!化合物虚拟筛选春日特惠3天极速交付
人工智能·虚拟筛选·ai算法·生命科学
杨航 AI2 小时前
Skills:让 AI 拥有“可插拔能力”的一种工程化方案
网络·人工智能
逻辑君2 小时前
认知神经科学研究报告【20260015】
人工智能·神经网络·机器学习
萌新小码农‍2 小时前
神经系统与深度学习介绍 学习笔记day1
人工智能·深度学习·神经网络·机器学习·语言模型
适应规律2 小时前
深度学习专有名称发音
人工智能·深度学习