无人之路 前天 14:08
【AI启示录】2025 w15: Pocket Flow - 如何从0开始实现Agentic Flow
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

文章介绍了Pocket Flow,一个仅有100行代码的极简LLM框架,它颠覆了人们对复杂LLM框架的认知。Pocket Flow的核心是将LLM应用建模为有向图,强调简洁、透明、灵活。文章探讨了Pocket Flow的设计理念、核心组件,以及如何通过Agentic Coding实现高效的AI编程。通过构建简单的搜索代理示例,展示了Pocket Flow的强大功能和易用性,为开发者提供了构建LLM应用的全新视角。

💡 **框架臃肿的挑战:** 传统的LLM框架如LangChain,存在过度复杂、依赖地狱、接口频繁变化等问题,增加了学习成本和开发维护的难度。

📦 **Pocket Flow的简洁方案:** 核心代码仅100行,Pocket Flow通过将LLM应用建模为有向图,实现了零臃肿、零依赖、零厂商锁定的目标,具有完全透明、极小依赖、灵活高度可控的优势。

⚙️ **核心组件与设计理念:** Pocket Flow基于将LLM应用建模为简单有向图的设计理念,由Node(节点)、Flow(流程)、Shared(共享存储)三个核心组件构成,使得系统易于理解和扩展。

🤖 **Agentic Coding的优势:** Pocket Flow特别适合Agentic Coding(代理编码)的开发模式,人类开发者负责高层设计,AI助手处理实现细节,提高了开发效率,并使AI编程更加无缝。

🚀 **构建搜索代理的示例:** 通过构建一个简单的网络搜索代理,展示了Pocket Flow如何定义节点、连接节点并执行流程,整个系统清晰、透明,且易于扩展,展现了其强大和简洁。

原创 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这样的流行框架存在一个共同问题:过度复杂化

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

正如一位开发者幽默地评论:"读完这句话的时间里,LangChain已经废弃了4个类,却没有更新文档。" 😅

LLM框架代码量对比

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

Pocket Flow:一股清流

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

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

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

这种简洁性不仅降低了学习门槛,还提供了极高的灵活性和可维护性。

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(代理编码)。在这种开发模式中:

Pocket Flow为AI编程提供了独特优势:

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

这种设计理念也意味着,随着更多开发者采用Pocket Flow模式,未来的LLM将自然而然地内化这些模式,使AI辅助开发变得更加无缝。

Pocket Flow:实现常用的Agentic Workflow

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

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

连接节点:使用简单的语法将节点连接成图:

# 如果决策返回"搜索",则执行搜索节点
decide - "search" >> search
# 如果决策返回"回答",则执行回答节点
decide - "answer" >> answer

设置共享存储:初始化包含输入数据的共享存储

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

flow = Flow(start=decide)
flow.run(shared)

这种方法可以实现多种常见的工作流模式:

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 Workflow AI代理 极简主义
相关文章