无人之路 09月25日
Pocket Flow:LLM框架清流
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Pocket Flow 是一个简洁的 LLM 框架,核心代码仅 100 行,证明了 AI Agent 本质上是图,并展示了如何从第一原则构建 AI 系统。它摒弃了传统框架的臃肿和复杂性,提供零依赖、零厂商锁定的解决方案,让开发者轻松实现 Agentic Flow。Pocket Flow 的核心组件包括 Node(节点)和 Flow(流程),通过简单的语法连接节点,形成灵活的工作流。它特别适合 Agentic Coding,让人类开发者专注于高层设计,AI 助手处理实现细节。

Pocket Flow 是一个极简的 LLM 框架,核心代码仅 100 行,证明了 AI Agent 本质上是图,并展示了如何从第一原则构建 AI 系统。

Pocket Flow 摒弃了传统框架的臃肿和复杂性,提供零依赖、零厂商锁定的解决方案,让开发者轻松实现 Agentic Flow。

Pocket Flow 的核心组件包括 Node(节点)和 Flow(流程),通过简单的语法连接节点,形成灵活的工作流。

Pocket Flow 特别适合 Agentic Coding,让人类开发者专注于高层设计,AI 助手处理实现细节。

Pocket Flow 的设计理念是回归基础,用最小的构建块创建强大的系统,为 AI 开发带来了一种新范式:代理编码(Agentic Coding)。

原创 Ace人生 2025-04-13 20:15 浙江

Pocket Flow:LLM框架清流。

题记
本周看到了一个非常简洁、可以从0开始实现Agentic Flow的LLM框架:Pocket Flow。

https://github.com/The-Pocket/PocketFlow

Pocket Flow极其简洁,核心代码只有100行。它不仅证明了"AI Agent仅仅是图"这一核心理念,还展示了如何从第一原则出发构建AI系统。本文将分享我对Pocket Flow的研究心得,以及它如何让我们以全新视角看待Agentic Workflow的实现。如果你也厌倦了框架的臃肿与复杂,这篇文章或许能为你提供一些启发。💡

LLM框架们:过度臃肿
如今的AI开发领域,LLM(大型语言模型)框架已成为构建智能应用的标配工具。然而,你有没有注意到,像LangChain这样的流行框架存在一个共同问题:过度复杂化

这些框架往往带来令人沮丧的开发体验:

臃肿的抽象层:简单功能被隐藏在复杂的抽象层后面,使代码晦涩难懂依赖地狱:数百MB的依赖包,经常引发版本冲突和稳定性问题频繁变化的接口:API不断变化,文档经常过时厂商锁定:与特定AI提供商绑定,限制灵活性正如一位开发者幽默地评论:"读完这句话的时间里,LangChain已经废弃了4个类,却没有更新文档。" 😅

LLM框架代码量对比这种复杂性不仅增加了学习成本,还阻碍了实际应用的开发和维护。你是否也思考过:我们真的需要这么多层的封装吗?

Pocket Flow:一股清流
面对这些挑战,Pocket Flow提供了一种令人耳目一新的简洁方案。与动辄数十万行代码的框架不同,Pocket Flow的核心仅有100行Python代码。这一极简主义方法背后有一个深刻的认识:

本质上,所有LLM系统都只是简单的有向图。

Pocket Flow彻底去除了不必要的复杂性,提供了一个零臃肿、零依赖、零厂商锁定的解决方案。它的优势包括:

完全透明:没有神秘的黑盒,每一行代码都清晰可见极小依赖:没有外部依赖,保持项目精简灵活高度可控:完全掌控系统的每一个组件框架自由:不与任何特定AI提供商绑定这种简洁性不仅降低了学习门槛,还提供了极高的灵活性和可维护性。

https://github.com/The-Pocket/PocketFlow/blob/main/pocketflow/__init__.py
Pocket Flow:核心理念
Pocket Flow的设计基于一个简单而强大的理念:将LLM应用建模为简单的有向图

这种方法类似于组织良好的厨房:

每个工作站(节点)专注于特定任务食谱(流程)指导整体工作流共享台面(共享存储)允许不同工作站之间交换信息所有复杂的AI代理系统,无论是搜索助手、自动编码工具还是数据分析应用,本质上都是这种简单模式的变体:一系列决策节点和操作节点,通过有向边连接,形成可能包含循环的图结构

Agents Are Just Simple Graphs现在你知道了秘密 - LLM代理仅仅是带分支的循环

思考:当前状态分支:选择多个选项中的一个行动执行:所选择的行动获取:该行动的结果循环回去:再次思考"思考"发生在提示中(我们问LLM的内容),"分支"是当代理在可用工具中选择时,"执行"是当我们调用外部函数时发生的。其他一切只是管道工作!

Pocket Flow:核心组件
Pocket Flow有三个核心组件,总共只需100行代码:

Node(节点):每个节点执行三个基本操作:

class BaseNode:
  def prep(self, shared): pass  # 准备:从共享存储获取所需信息
  def exec(self, prep_res): pass  # 执行:进行特定操作
  def post(self, shared, prep_res, exec_res): pass  # 后处理:保存结果并决定下一步
Flow(流程):管理节点之间的流转:

class Flow(BaseNode):
  def orch(self, shared, params=None):  # 协调节点执行
      # 找到下一个节点,根据当前节点的决定移动
共享存储:一个简单的字典,用于节点间通信:

shared = {"question""谁是世界上最高的人?"}
这种简单而优雅的设计使得系统既容易理解又高度灵活。开发者可以轻松添加新节点、修改流程,或扩展功能,而不会被框架本身所限制。

Pocket Flow核心组件Pocket Flow:对AI编程友好
Pocket Flow不仅简化了开发过程,还特别适合与AI配合进行开发,这种方式被称为Agentic Coding(代理编码)。在这种开发模式中:

人类开发者专注于高层设计和关键决策(Type 1任务)AI助手负责处理实现细节和技术执行Pocket Flow为AI编程提供了独特优势:

文档即代码:Pocket Flow不依赖硬编码的应用特定封装,而是通过清晰的文档教导如何组合基础构建块。这使AI助手可以快速理解整个框架。概念简单:100行核心代码意味着AI可以完全理解整个框架,无需猜测隐藏的复杂性。模式清晰:基于图的模式非常直观,易于AI理解和生成。自动生成API封装:需要连接到特定LLM服务?AI可以即时编写10行代码的封装,无需依赖过时的内置API。这种设计理念也意味着,随着更多开发者采用Pocket Flow模式,未来的LLM将自然而然地内化这些模式,使AI辅助开发变得更加无缝。

Pocket Flow:实现常用的Agentic Workflow
使用Pocket Flow实现代理工作流程非常直观。基本步骤如下:

定义节点:创建各种功能节点,每个节点负责特定任务

决策节点:使用LLM决定下一步行动操作节点:执行具体任务(搜索、计算、生成等)输出节点:格式化和呈现最终结果连接节点:使用简单的语法将节点连接成图:

# 如果决策返回"搜索",则执行搜索节点
decide - "search" >> search
# 如果决策返回"回答",则执行回答节点
decide - "answer" >> answer
设置共享存储:初始化包含输入数据的共享存储

执行流程:启动工作流并获取结果

flow = Flow(start=decide)
flow.run(shared)
这种方法可以实现多种常见的工作流模式:

RAG系统(检索增强生成)多代理系统(多个协作代理)Map-Reduce操作(并行处理和聚合)流式处理(实时响应)监督系统(监控和纠正代理行为)Pocket Flow based agentic workflows一个例子:构建简单搜索代理
让我们通过构建一个简单的网络搜索代理来展示Pocket Flow的强大和简洁。这个代理可以:

Diagram of our research agent分析用户问题决定是否需要搜索网络执行搜索并收集信息根据收集的信息回答问题步骤1:定义决策节点class DecideAction(Node):
    def prep(self, shared):
        # 获取问题和当前上下文
        context = shared.get("context""无先前搜索")
        question = shared["question"]
        return question, context
        
    def exec(self, inputs):
        question, context = inputs
        # 让LLM决定是搜索还是直接回答
        prompt = f"""
        问题: {question}
        已知信息: {context}
        决定: 是搜索更多信息还是直接回答?
        """
        response = call_llm(prompt)  # 调用语言模型
        # 解析决策
        return {"action""search"if"需要搜索"in response else"answer"}
        
    def post(self, shared, prep_res, exec_res):
        if exec_res["action"] == "search":
            # 生成搜索查询
            shared["search_query"] = f"关于{shared['question']}的信息"
        return exec_res["action"]  # 返回"search"或"answer"
步骤2:定义搜索节点class SearchWeb(Node):
    def prep(self, shared):
        return shared["search_query"]
        
    def exec(self, query):
        # 实际中会调用搜索API
        results = f"搜索'{query}'的结果: 相关信息..."
        return results
        
    def post(self, shared, prep_res, exec_res):
        # 保存搜索结果
        shared["context"] = exec_res
        return "decide"  # 返回决策节点重新评估
步骤3:定义回答节点class AnswerQuestion(Node):
    def prep(self, shared):
        return shared["question"], shared.get("context""")
        
    def exec(self, inputs):
        question, context = inputs
        # 生成答案
        prompt = f"基于以下信息回答问题:\n问题: {question}\n信息: {context}"
        return call_llm(prompt)
        
    def post(self, shared, prep_res, exec_res):
        # 保存最终答案
        shared["answer"] = exec_res
        return"done"# 流程结束
步骤4:连接节点并执行# 创建节点实例
decide = DecideAction()
search = SearchWeb()
answer = AnswerQuestion()

# 连接节点
decide - "search" >> search
decide - "answer" >> answer
search - "decide" >> decide

# 创建流程
flow = Flow(start=decide)

# 执行!
shared = {"question""谁是第一个登上月球的人?"}
flow.run(shared)
print(shared["answer"])
这个简单的例子展示了代理如何动态决策、执行操作并生成答案。整个系统清晰、透明,且易于扩展。

The Whole Process Visualized小结
Pocket Flow通过其极简设计展示了一个重要事实:复杂的AI代理系统可以基于简单的基础构建。与大型框架相比,它提供了几个关键优势:

极低的学习曲线:100行代码可以在短时间内完全理解高度灵活性:轻松定制和扩展,无框架限制完全控制:系统的每个部分都清晰可见,没有黑盒高效开发:减少依赖冲突和版本问题最重要的是,Pocket Flow变革了我们思考和构建AI代理的方式。它将复杂性还原为基础组件,让我们看到最重要的本质:LLM Agents仅仅是图

这种方法不仅使系统更容易构建和维护,还为AI开发带来了一种新范式:代理编码(Agentic Coding)—— 人类专注于高层设计,而AI助手处理实现细节。

对于那些希望构建LLM应用而不希望陷入框架复杂性的开发者来说,Pocket Flow提供了一条清晰的道路:回归基础,从第一原则出发,用最小的构建块创建强大的系统。

正如Pocket Flow的理念所示,有时候,少即是多。💡

欢迎加入「AI行动派」,"用AI做点什么"。

我在公众号「无人之路」每周更新"AI启示录",输出"学AI,用AI"的最新实践与心得。不过这只是冰山一角。

在知识星球「AI行动派」中,有更多更丰富"学AI,用AI"的各种资源、技术、心得,每天更新。 最近主要集中在用AI和Agent来自动编程,实现心中的想法💡。欢迎加入,一起行动!

AI行动派

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

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

FishAI

FishAI

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

联系邮箱 441953276@qq.com

相关标签

Pocket Flow LLM框架 Agentic Flow 代理编程 极简主义
相关文章