现在各种框架满天飞,你是否想过这个问题,一个真正优秀的框架究竟需要多少代码?研究者Zach给出了一个令人惊讶的答案:仅需100行。这个名为PocketFlow的框架不仅体积小到令人难以置信(仅56KB),还能用来构建一个完整的Cursor编码助手。这个发现不仅挑战了我们对框架复杂性的认知,更揭示了一个重要的设计哲学:真正的创新往往来自于化繁为简。
图片来自本项目
https://github.com/The-Pocket/PocketFlow
https://github.com/cursor-ai-agent/Tutorial-Cursor
作为一名LLM agents研究者,Zach在过去几年中参与了超过10个AI项目的开发。在这个过程中,他发现一个普遍的痛点:现有的LLM框架往往过于庞大和复杂。以LangChain为例,其代码量达到405K行,安装包体积高达166MB。这种复杂性不仅增加了学习成本,还常常导致AI助手(如Cursor)在处理复杂问题时出现幻觉或错误。
正是这种困境促使研究者开始思考:如果LLM agents真的那么强大,为什么不能让它们来帮助我们构建agents呢?这个想法最终催生了PocketFlow——一个仅有100行代码的极简框架。
PocketFlow的核心是一个基于图(Graph)的抽象,这个设计看似简单,却能支持各种复杂的应用场景。让我们来看看它的主要组件:
class BaseNode:
def __init__(self):
self.params = {}
self.successors = {}
def prep(self, shared): pass
def exec(self, prep_res): pass
def post(self, shared, prep_res, exec_res): pass
这个看似简单的节点类实际上定义了一个强大的计算单元。每个节点都有三个关键步骤:
class Flow(BaseNode):
def __init__(self, start):
super().__init__()
self.start = start
Flow类通过简单的图结构连接各个节点,实现了复杂的工作流程控制。这种设计允许你轻松构建各种复杂的应用流程,从简单的串行处理到复杂的条件分支都能优雅地实现。
在LLM应用中,上下文长度管理是一个关键挑战。即使是最先进的模型也有其上下文长度限制,而且随着上下文增长,处理质量往往会下降。LLM通常会只记住头尾的上下文,而丢失中间的部分。这一点在Cursor的设计上也能体现出来,每次只读250行,PocketFlow采用了这样的设计策略来解决这个问题:
class ContextManager:
def __init__(self, max_chunk_size=250):
self.max_chunk_size = max_chunk_size
def split_content(self, content):
return [content[i:i+self.max_chunk_size]
for i in range(0, len(content), self.max_chunk_size)]
动作空间定义决定了AI助手能做什么、不能做什么,这对于构建可靠且安全的系统至关重要。PocketFlow通过清晰的动作空间定义来规范AI助手的行为:
class ActionSpace:
def __init__(self):
self.actions = {
'read': FileReader(),
'edit': FileEditor(),
'search': CodeSearcher(),
'analyze': CodeAnalyzer()
}
这种设计确保了AI助手在发挥强大功能的同时,始终在可控和安全的范围内运行。
PocketFlow的动作空间设计的理念可能与强化学习中的核心概念相关:
1. 马尔科夫决策过程(MDP)
class MDPAgent(BaseAgent):
def __init__(self, action_space):
self.states = CodeState() # 代码状态
self.actions = action_space # 可用动作
self.rewards = QualityMetrics() # 代码质量度量
def select_action(self, state):
# 基于当前状态选择最优动作
return self.policy.get_action(state)
2. 蒙特卡洛树搜索(MCTS)
class MCTSPlanner:
def plan_edits(self, code_state):
root = Node(code_state)
for _ in range(SIMULATION_COUNT):
# 选择-扩展-模拟-回传
node = self.select(root)
child = self.expand(node)
reward = self.simulate(child)
self.backpropagate(child, reward)
return self.best_action(root)
这种结合让AI助手能够:
PocketFlow支持多种工作流模式,从简单到复杂,能够满足各种应用场景的需求。让我们通过具体的例子来理解这些模式:
1. Node(单步处理)
2. Chain(多步链式)
3. Shared(共享通信)
4. Nesting(嵌套复用)
1. Batch(批量处理)
2. Async(异步处理)
3. Branch(条件分支)
4. Looping(循环处理)
1. Workflow(定向路径)
2. Map-Reduce(分治合并)
3. Chat(对话系统)
4. RAG(检索增强生成)
5. CoT(思维链)
1. Agent(智能代理)
2. Multi-Agent(多智能体)
3. Supervisor(监督控制)
这些工作流模式不是孤立的,而是可以灵活组合的构建块。通过组合不同的模式,你可以构建出适应各种复杂场景的应用系统。例如,一个完整的代码开发助手可能同时使用:
PocketFlow最巧妙的设计之一是其任务分解模式。以代码编辑为例,它将复杂的编辑操作分解为两个步骤:
这种设计大大提高了代码编辑的可靠性。就像一个经验丰富的程序员,先规划整体修改策略,再处理具体的代码细节。
PocketFlow的成功告诉我们,真正的创新往往来自于对问题本质的深刻理解。100行代码,56KB大小,这个看似不可能的目标,通过精心的设计和巧妙的抽象,不仅变为现实,还开创了一种全新的开发范式。
正如研究者所说:"如果大语言模型真的那么强大,为什么不能让它们来帮助我们构建agents呢?"这个问题不仅推动了PocketFlow的诞生,也可能引领着AI开发工具的未来方向。
文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。
【免费】cursor-auto-free是一个能够让你无限免费使用cursor的项目。该项目通过cloudflare进行托管实现,请参考教程进行配置。
视频教程:https://www.bilibili.com/video/BV1WTKge6E7u/
项目地址:https://github.com/chengazhen/cursor-auto-free?tab=readme-ov-file
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0