Spring AI, LangChain和LangGraph(一)
Spring AI 架构
+---------------------------------------------------------+
| 应用层 |
|---------------------------------------------------------|
| • 前端 / API 层 |
| • REST / GraphQL 接口 |
| • 客户端 SDK(Java、Python 等) |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 编排层 |
|---------------------------------------------------------|
| • ChatClient / AI 会话管理器 |
| • 工具调用分发器 |
| • Advisor 拦截器(前/后处理钩子) |
| • 上下文与内存管理 |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 核心 AI 层 |
|---------------------------------------------------------|
| • Prompt 引擎(结构化 Prompt 对象) |
| • 模型适配器 / LLM 抽象层 |
| • 输出 Schema 与校验(结构化 JSON 输出) |
| • 插件 / 工具集成框架 |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 数据与集成层 |
|---------------------------------------------------------|
| • 向量存储 / Embeddings |
| • 知识库 / 外部 API |
| • 数据库访问(SQL / NoSQL) |
| • 缓存与会话存储 |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 基础设施层 |
|---------------------------------------------------------|
| • 计算资源 / GPU 或 CPU 集群 |
| • 消息系统 / 队列 |
| • 日志、指标与监控 |
| • 安全与访问控制 |
+---------------------------------------------------------+
关键亮点(Key Highlights)
1. Prompt 作为一等公民(Prompt as First-Class Object)
与简单的字符串不同,Prompt 不只是文本,而是携带完整元数据的结构化对象,包括:
-
System Message(系统指令)
-
User Message(用户输入)
-
工具调用指令
-
结构化输出 Schema
这使得 Prompt 可以进行精确、强类型、安全的处理与校验。
2. Advisor 机制(类似拦截器)
-
在模型执行前 / 后提供钩子(Hook)
-
可以用于:
-
修改 Prompt
-
丰富上下文
-
校验模型输出
-
触发或调度工具调用
-
在理念上非常接近 Spring 体系中的 Interceptor / AOP。
3. 结构化输出 / JSON 映射
-
确保 AI 输出可预测、可解析、机器可读
-
与 Prompt Engine 深度集成
-
特别适合:
-
企业系统
-
工作流
-
下游自动处理
-
4. 工具集成框架(Tool Integration Framework)
-
Spring AI 可在 AI 流程中直接调用外部工具:
-
API
-
数据库
-
自定义代码
-
-
与现代 LLM 中的 Function Calling 概念高度一致
5. 记忆 / 上下文管理(Memory / Context Management)
-
支持:
-
短期记忆(会话上下文)
-
长期记忆(跨会话)
-
-
可结合 Embedding 存储,实现:
-
语义检索
-
RAG(检索增强生成)
-
LangChain 架构
LangChain 的核心定位是:LLM 编排(orchestration)+ 流水线管理(pipeline management)。
它的架构主要围绕 Chains、Agents 和 Memory 展开。
+---------------------------------------------------------+
| 应用层 |
|---------------------------------------------------------|
| • 前端 / API 层 |
| • 聊天机器人 / 自定义应用 |
| • SDK(Python、JS 等) |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 编排层 |
|---------------------------------------------------------|
| • Chains(顺序 / 条件步骤) |
| • Agents(基于 LLM 的决策 + 工具调用) |
| • Memory 模块(对话记忆 / 长期记忆) |
| • Callbacks / Hooks(前处理 / 后处理) |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 核心 AI 层 |
|---------------------------------------------------------|
| • LLM 封装(OpenAI、HuggingFace 等) |
| • Prompt 模板 / Prompt 管理 |
| • 工具集成(API、Python 函数、SQL) |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 数据与集成层 |
|---------------------------------------------------------|
| • 向量数据库 / Embeddings |
| • 知识库 / 外部 API |
| • 数据库 / 外部存储 |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 基础设施层 |
|---------------------------------------------------------|
| • 计算资源 / GPU / CPU |
| • 日志 / 指标 / 监控 |
| • 安全与访问控制 |
+---------------------------------------------------------+
关键要点:
-
Chains
线性或分支执行步骤,本质上是一个 Pipeline。 -
Agents
基于 LLM 的决策实体,可以动态决定是否、以及如何调用工具。 -
Memory
用于维护短期或长期上下文(如对话历史)。 -
整体关注点
-
代码层面灵活
-
Python 优先
-
强调模型与工具的快速集成
-
LangGraph 架构
LangGraph 是一种更偏向“图(Graph)”的编排模型。
它使用 节点(Node)+ 边(Edge) 来表示 LLM 调用、工具执行与控制流。
+---------------------------------------------------------+
| 应用层 |
|---------------------------------------------------------|
| • 前端 / API 层 |
| • 图形化 UI(节点流程设计) |
| • 运行时 SDK |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 图编排层(核心) |
|---------------------------------------------------------|
| • 节点图(Node = LLM 调用 / 工具 / 逻辑) |
| • 边管理(数据流、依赖关系) |
| • 执行引擎(遍历图结构,支持异步) |
| • 上下文传播(状态 / 记忆在节点间传递) |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 核心 AI 层 |
|---------------------------------------------------------|
| • LLM 封装(OpenAI、HuggingFace 等) |
| • Prompt 模板 / 动态 Prompt |
| • 工具集成(API、函数、数据库) |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 数据与集成层 |
|---------------------------------------------------------|
| • 向量数据库 / Embeddings |
| • 知识库 / 外部 API |
| • 数据库 / 存储 |
+---------------------------------------------------------+
|
v
+---------------------------------------------------------+
| 基础设施层 |
|---------------------------------------------------------|
| • 计算资源 / GPU / CPU |
| • 日志 / 指标 / 监控 |
| • 安全与访问控制 |
+---------------------------------------------------------+
关键要点:
-
Graph Nodes(节点)
可以是:-
LLM 调用
-
工具 / 函数调用
-
自定义逻辑块
-
-
Edges(边)
定义节点之间的数据流和依赖关系。 -
执行引擎
-
动态遍历图结构
-
支持条件分支、循环、异步执行
-
-
整体关注点
-
可视化
-
模块化
-
适合复杂、多步骤、可复用的工作流编排
-
Spring AI、LangChain、LangGraph 对比
| 功能 / 概念 | Spring AI | LangChain | LangGraph |
|---|---|---|---|
| Prompt 处理 | 一等公民(结构化对象) | Prompt 模板 + Chains | 节点级 Prompt 模板 |
| 拦截器 / Advisor | ✅ 支持(前/后处理) | Callbacks / Hooks | 节点级 Hook |
| 编排方式 | 线性或条件(通过 Advisor) | Chains & Agents | 基于图(节点 & 边) |
| 工具集成 | 原生支持 + 结构化指令 | Python 函数 / API / SQL | 节点级工具调用 |
| 记忆 / 上下文 | Session + 长期记忆 | Memory 模块 | 状态在图中传播 |
| 结构化输出 | 强(JSON Schema) | 多为自由 JSON / 字符串 | 节点级结构化输出 |
| 关注点 | 企业级、结构化、强类型、安全 | 开发者灵活性、Python 优先 | 可视化图编排、复杂流程 |
更多推荐



所有评论(0)