掘金 人工智能 04月29日 15:28
PocketFlow:一个 100 行代码实现的极简主义 LLM 框架
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

PocketFlow是一个极简的开源LLM框架,仅用100行代码就实现了构建复杂AI工作流所需的所有基础功能。它采用基于图的计算模型和共享存储的通信模型,避免了对特定供应商或用例的依赖,保持了框架的轻量级和灵活性。PocketFlow支持多智能体、工作流和RAG等功能,并提倡“智能编码”范式,通过AI智能体辅助完成细节实现,极大地提高了开发效率。与动辄数万行代码的其他框架相比,PocketFlow以其极简的设计和强大的功能脱颖而出。

💡PocketFlow以其仅100行代码的极简设计,提供构建复杂AI工作流所需的核心功能,无需外部依赖,包大小仅为56KB,避免了传统框架的臃肿和复杂性。

🧮PocketFlow采用基于图的计算模型,将工作流程表示为节点和流的组合,节点代表计算单元,流协调节点完成任务,这种设计支持条件分支、循环和并行执行等复杂场景。

📦PocketFlow使用共享存储作为通信模型,节点可以从共享存储中读取数据和写入结果,实现了关注点分离,允许开发者自由修改数据结构而无需重构节点间的通信模式。

🤖PocketFlow推崇“智能编码”范式,人类负责设计高层次架构,AI智能体负责细节实现,从而大幅提升开发效率,简化了LLM应用的构建过程。

在大语言模型(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)导向架构。在这个模型中:

这种设计让 PocketFlow 能够轻松表达复杂的工作流程,包括条件分支、循环和并行执行。

2. 共享存储的通信模型

与许多使用消息传递的框架不同,PocketFlow 使用"共享存储"作为其通信模型。每个节点都可以从共享存储中读取数据并写入结果。这种设计实现了"关注点分离":

    数据模式在一个中心位置设计和维护计算逻辑在设计好的数据结构上运行

共享存储模式让开发者能够自由修改数据结构,而无需重构节点之间的通信模式。

3. 无应用或供应商特定模块

PocketFlow 不包含针对特定供应商或用例的模块。这种设计保持了框架的极简性,避免了依赖项的变化。现代 LLM 系统通常需要集成各种 API,这些 API 在单一框架中维护很困难。

PocketFlow 认为,处理供应商特定细节的工作最好留给 AI 助手,它们可以检索最新文档并动态组装相关代码。PocketFlow 保持轻量级核心,而 AI 助手(如 Cursor AI)则提供针对特定业务或应用需求的定制集成。

PocketFlow 是如何工作的(摘自 github)

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

PocketFlow 的实现

让我们看看 PocketFlow 的核心代码是如何实现的。整个框架只有 100 行代码,但却提供了完整的功能集。以下是核心类的简化版本:

# 基础节点类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 框架相比有何不同?以下是一个简单的对比:

框架计算模型通信模型应用特定模块供应商特定模块代码行数包大小
LangChainAgent, Chain消息多种多种405K+166MB
CrewAIAgent, Chain消息+共享多种多种18K+173MB
SmolAgentAgent消息一些一些8K+198MB
LangGraphAgent, Graph消息+共享一些一些37K+51MB
AutoGenAgent消息一些多种[可选]7K(仅核心)+26MB(仅核心)
PocketFlowGraph共享100+56KB

从表中可以看出,PocketFlow 以其极简的设计和微小的代码量脱颖而出,同时不牺牲功能性。

PocketFlow 的应用场景

PocketFlow 设计了多种应用场景的示例,从基础的聊天机器人到复杂的多智能体系统。以下是一些基础示例:

    聊天:基础聊天机器人,带有对话历史结构化输出:通过提示从简历中提取结构化数据工作流:写作工作流,包括大纲、内容编写和样式应用智能体:可以搜索网络并回答问题的研究智能体RAG:简单的检索增强生成过程批处理:将 Markdown 内容翻译成多种语言的批处理器

更复杂的应用包括:多智能体通信、监督流程、并行执行、思维链推理、短期和长期记忆聊天机器人等。

智能编码:PocketFlow 的革命性方法

PocketFlow 引入了一种称为"智能编码"(Agentic Coding)的开发范式,这是构建 LLM 应用的最快方法。在这种范式中:

这就像是由人类绘制蓝图,然后由机器人团队在夜间构建整个房子。无需处理繁琐的实现、调试奇怪的边缘情况或与语法错误作斗争!

传统编码意味着设计系统、自己实现每一个细节、调试数小时,最后在数天或数周后交付某些东西。而通过智能编码,你只需设计系统,让 AI 智能体实现一切,明天早晨就能交付。就是这么简单。

结语:PocketFlow 的未来

PocketFlow 通过证明 LLM 框架不需要复杂就能强大,为 AI 应用开发领域带来了一股清新的空气。它的 100 行代码框架提供了构建复杂 AI 工作流所需的一切,而不会带来任何不必要的复杂性或依赖性。

随着越来越多的开发者厌倦了臃肿的框架和复杂的依赖关系,PocketFlow 的极简主义方法可能代表了 AI 框架开发的未来方向。它不仅适用于专业开发者,也非常适合 AI 智能体自己使用,这开启了一个新时代,在这个时代,智能体不仅可以编写代码,还可以设计和构建整个系统。

无论你是经验丰富的开发者,还是刚刚开始探索 AI 应用开发的新手,PocketFlow 都提供了一个简单而强大的入口点,让你能够快速构建复杂的 AI 应用,而不会陷入框架复杂性的泥沼。

如果你想了解更多关于 PocketFlow 的信息或尝试使用它,可以访问 GitHub 仓库:github.com/The-Pocket/…,或通过pip install pocketflow安装使用。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

PocketFlow LLM框架 智能编码 AI应用开发
相关文章