在大语言模型(LLM)应用开发日益复杂的今天,PocketFlow 以其极简的设计理念脱颖而出。它仅用 100 行代码,就实现了一个功能强大的 LLM 框架,让我们一起来探索这个精巧的工具是如何重新定义 AI 应用开发的。
什么是 PocketFlow?
PocketFlow 是一个由 Zachary Huang 主导开发的开源极简 LLM 框架,它的核心代码仅有 100 行,但却提供了构建复杂 AI 工作流所需的全部基础功能。与其他动辄数万行代码的 AI 框架相比,PocketFlow 专注于提供最核心的抽象,同时避免了任何外部依赖,整个包大小仅为 56KB。
PocketFlow 的三大特点:
- 轻量级:仅 100 行代码,零臃肿,零依赖,零供应商锁定
- 表达力强:支持你喜爱的所有功能------(多)智能体、工作流、RAG 等
- 智能编码:让 AI 智能体(如 Cursor AI)帮助构建智能体------提升 10 倍生产力
PocketFlow 的核心设计理念
1. 基于图的计算模型
PocketFlow 采用"图"作为其核心计算模型,而非传统的智能体(Agent)导向架构。在这个模型中:
- 节点(Node):代表最小的计算单元(如 LLM 调用、工具使用或人类反馈)
- 流(Flow):协调多个节点完成更大任务的子图
- 方向:边是有向的,表示数据或控制决策的流向
这种设计让 PocketFlow 能够轻松表达复杂的工作流程,包括条件分支、循环和并行执行。
2. 共享存储的通信模型
与许多使用消息传递的框架不同,PocketFlow 使用"共享存储"作为其通信模型。每个节点都可以从共享存储中读取数据并写入结果。这种设计实现了"关注点分离":
- 数据模式在一个中心位置设计和维护
- 计算逻辑在设计好的数据结构上运行
共享存储模式让开发者能够自由修改数据结构,而无需重构节点之间的通信模式。
3. 无应用或供应商特定模块
PocketFlow 不包含针对特定供应商或用例的模块。这种设计保持了框架的极简性,避免了依赖项的变化。现代 LLM 系统通常需要集成各种 API,这些 API 在单一框架中维护很困难。
PocketFlow 认为,处理供应商特定细节的工作最好留给 AI 助手,它们可以检索最新文档并动态组装相关代码。PocketFlow 保持轻量级核心,而 AI 助手(如 Cursor AI)则提供针对特定业务或应用需求的定制集成。
PocketFlow 是如何工作的(摘自 github)

在此基础上,可以搭建出流行的设计模式

PocketFlow 的实现
让我们看看 PocketFlow 的核心代码是如何实现的。整个框架只有 100 行代码,但却提供了完整的功能集。以下是核心类的简化版本:
python
# 基础节点类
class BaseNode:
def __init__(self): self.params,self.successors={},{}
def set_params(self,params): self.params=params
def next(self,node,action="default"):
self.successors[action]=node; return node
def prep(self,shared): pass
def exec(self,prep_res): pass
def post(self,shared,prep_res,exec_res): pass
def _run(self,shared): p=self.prep(shared); e=self.exec(p); return self.post(shared,p,e)
# 增强的节点类(带重试功能)
class Node(BaseNode):
def __init__(self,max_retries=1,wait=0): super().__init__(); self.max_retries,self.wait=max_retries,wait
def exec_fallback(self,prep_res,exc): raise exc
def _exec(self,prep_res):
for self.cur_retry in range(self.max_retries):
try: return self.exec(prep_res)
except Exception as e:
if self.cur_retry==self.max_retries-1: return self.exec_fallback(prep_res,e)
if self.wait>0: time.sleep(self.wait)
# 流类(协调节点执行)
class Flow(BaseNode):
def __init__(self,start=None): super().__init__(); self.start_node=start
def start(self,start): self.start_node=start; return start
def get_next_node(self,curr,action):
return curr.successors.get(action or "default")
def _orch(self,shared,params=None):
curr,p=copy.copy(self.start_node),(params or {**self.params})
while curr: curr.set_params(p); last_action=curr._run(shared); curr=copy.copy(self.get_next_node(curr,last_action))
return last_action
这段代码展示了 PocketFlow 的核心抽象:BaseNode
(基础节点)、Node
(带重试功能的节点)和Flow
(流,用于协调节点执行)。虽然简洁,但已包含了构建复杂 AI 工作流所需的全部基础功能。
PocketFlow vs 其他框架
PocketFlow 与其他流行的 LLM 框架相比有何不同?以下是一个简单的对比:
框架 | 计算模型 | 通信模型 | 应用特定模块 | 供应商特定模块 | 代码行数 | 包大小 |
---|---|---|---|---|---|---|
LangChain | Agent, Chain | 消息 | 多种 | 多种 | 405K | +166MB |
CrewAI | Agent, Chain | 消息+共享 | 多种 | 多种 | 18K | +173MB |
SmolAgent | Agent | 消息 | 一些 | 一些 | 8K | +198MB |
LangGraph | Agent, Graph | 消息+共享 | 一些 | 一些 | 37K | +51MB |
AutoGen | Agent | 消息 | 一些 | 多种[可选] | 7K(仅核心) | +26MB(仅核心) |
PocketFlow | Graph | 共享 | 无 | 无 | 100 | +56KB |
从表中可以看出,PocketFlow 以其极简的设计和微小的代码量脱颖而出,同时不牺牲功能性。
PocketFlow 的应用场景
PocketFlow 设计了多种应用场景的示例,从基础的聊天机器人到复杂的多智能体系统。以下是一些基础示例:
- 聊天:基础聊天机器人,带有对话历史
- 结构化输出:通过提示从简历中提取结构化数据
- 工作流:写作工作流,包括大纲、内容编写和样式应用
- 智能体:可以搜索网络并回答问题的研究智能体
- RAG:简单的检索增强生成过程
- 批处理:将 Markdown 内容翻译成多种语言的批处理器
更复杂的应用包括:多智能体通信、监督流程、并行执行、思维链推理、短期和长期记忆聊天机器人等。
智能编码:PocketFlow 的革命性方法
PocketFlow 引入了一种称为"智能编码"(Agentic Coding)的开发范式,这是构建 LLM 应用的最快方法。在这种范式中:
- 人类负责设计高层次架构(人类擅长的事)
- AI 智能体处理所有细节工作和实现(AI 擅长的事)
这就像是由人类绘制蓝图,然后由机器人团队在夜间构建整个房子。无需处理繁琐的实现、调试奇怪的边缘情况或与语法错误作斗争!
传统编码意味着设计系统、自己实现每一个细节、调试数小时,最后在数天或数周后交付某些东西。而通过智能编码,你只需设计系统,让 AI 智能体实现一切,明天早晨就能交付。就是这么简单。
结语:PocketFlow 的未来
PocketFlow 通过证明 LLM 框架不需要复杂就能强大,为 AI 应用开发领域带来了一股清新的空气。它的 100 行代码框架提供了构建复杂 AI 工作流所需的一切,而不会带来任何不必要的复杂性或依赖性。
随着越来越多的开发者厌倦了臃肿的框架和复杂的依赖关系,PocketFlow 的极简主义方法可能代表了 AI 框架开发的未来方向。它不仅适用于专业开发者,也非常适合 AI 智能体自己使用,这开启了一个新时代,在这个时代,智能体不仅可以编写代码,还可以设计和构建整个系统。
无论你是经验丰富的开发者,还是刚刚开始探索 AI 应用开发的新手,PocketFlow 都提供了一个简单而强大的入口点,让你能够快速构建复杂的 AI 应用,而不会陷入框架复杂性的泥沼。
如果你想了解更多关于 PocketFlow 的信息或尝试使用它,可以访问 GitHub 仓库:github.com/The-Pocket/...,或通过pip install pocketflow
安装使用。