被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

AITNT-国内领先的一站式人工智能新闻资讯网站
# 热门搜索 #
AITNT-国内领先的一站式人工智能新闻资讯网站 搜索
被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新
7944点击    2025-03-31 09:48

你是否曾对着一个繁复的AI框架,无奈地想:"真有必要搞得这么复杂吗?"在与臃肿框架斗争一年后,Zachary Huang博士决定大刀阔斧地革新,剔除所有花里胡哨的部分。于是Pocket Flow诞生了——一个仅有100行代码的超轻量级大语言模型框架!本文帮你彻底打通Pocket Flow+.cursorrules.file的最前沿用法。Zachary Huang博士用100行代码证明:真正的技术突破源于本质洞察,而非堆砌抽象。


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


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新


现有的大语言模型框架实在太臃肿了!


过去一年,许多开发者一直在使用LangChain这类热门框架构建AI应用。这种体验简直令人抓狂:


  • 臃肿的抽象层 - Octomind工程团队一针见血地指出 (https://www.octomind.dev/blog/why-we-no-longer-use-langchain-for-building-our-ai-agents):"LangChain最初确实很有用,但它那些高级抽象很快就让我们的代码变得晦涩难懂,维护起来简直是噩梦。"这些框架把本该简单的功能隐藏在一堆不必要的复杂性之后!
  • 开发者噩梦 - 这些框架不仅抽象复杂,还让开发者背负了依赖包臃肿、版本冲突和接口频繁变动等诸多问题。开发者们经常吐槽 (https://www.reddit.com/r/LangChain/comments/1j1gb88/why_are_developers_moving_away_from_langchain/):"太不稳定了,接口总在变,文档永远跟不上进度。"甚至有人调侃道:"你读完这句话的功夫,langchain已经悄悄弃用了4个类,而且文档压根没更新。"


这不禁让人思考:我们真的需要这么多层复杂的封装吗?如果把所有冗余的部分都去掉会怎样?真正简洁实用的方案到底是什么?


PocketFlow:核心抽象仅需100行代码!


PocketFlow的创建者Zachary Huang是一位即将从哥伦比亚大学计算机博士毕业的研究者,曾在Microsoft Gray Systems Lab和Databricks实习,凭借杰出研究赢得谷歌奖学金,即将加入微软研究院担任研究员继续大语言模型智能体的开发工作。Zachary在实际开发大语言模型应用的过程中,深切体会到现有框架的种种问题。这些框架虽然功能丰富,但过度复杂的设计给开发者带来了沉重负担。于是,Zachary决定回归本质,探寻更加简洁有效的解决方案。


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新


经过一年从零开始打磨大语言应用的经验,Zachary得出了一个关键洞见:所有复杂性的背后,大语言系统本质上不过是一个简单的有向图!基于这一发现,PocketFlow应运而生——一个零臃肿、零依赖、零供应商锁定的框架,全部代码仅有100行!


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

comparison


极简构建块


PocketFlow最核心的就是三个极简构建块。可以想象成一个井井有条的厨房:


  • 节点就像各个烹饪工位 (切菜区、炒菜区、装盘区) :class BaseNode:


def__init__(self):

self.params,self.successors={},{}

defadd_successor(self,node,action="default"): self.successors[action]=node;return node

defprep(self,shared): pass

defexec(self,prep_res): pass

defpost(self,shared,prep_res,exec_res): pass

defrun(self,shared): p=self.prep(shared);e=self.exec(p);returnself.post(shared,p,e)


  • 流程就是告诉你下一步该去哪个工位的菜谱:


class Flow(BaseNode):

def__init__(self,start): super().__init__();self.start=start

defget_next_node(self,curr,action):

return nxt=curr.successors.get(action or"default")

deforch(self,shared,params=None):

curr,p=copy.copy(self.start),(params or {**self.params})

while curr: curr.set_params(p);c=curr.run(shared);curr=copy.copy(self.get_next_node(curr,c))

defrun(self,shared): pr=self.prep(shared);self.orch(shared);returnself.post(shared,pr,None)


  • 共享存储就是所有工位都能取用食材的中央台面。在实际实现中,共享存储通常是内存中的Python字典,或者是数据库连接器:


load_data_node = LoadDataNode()

summarize_node = SummarizeNode()

load_data_node >> summarize_node

flow = Flow(start=load_data)


shared = {"file_name": "data.txt"}

flow.run(shared)


在这个高效厨房系统中:


1. 每个工位 (节点) 只做三件简单的事:

  • 准备 (prep) :从中央台面 (shared) 取用所需食材
  • 执行 (exec) :专注完成自己的任务
  • 收尾 (post) :把成果放回中央台面 (shared) 并告知下一站

2. 菜谱 (流程) 根据情况智能引导 (orch) :

  • "蔬菜切好了?去炒菜区!"
  • "菜炒熟了?去装盘区!"


PocketFlow还支持批处理 (Batch) 、异步执行 (Asynchronous) 和并行处理 (Parallel) 。就这么简单!没有华丽辞藻,没有复杂架构——只有能组合成强大系统的简单积木!


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

abstraction


那OpenAI的API封装呢?


与其他框架不同,PocketFlow刻意避开特定供应商API的绑定。为什么?


  • 零依赖烦恼 - 当前大语言框架动辄就带来几百兆的依赖包。PocketFlow保持零依赖,项目轻盈灵活!
  • 零供应商锁定 - 想用OpenLLaMA等本地模型?随时可以,无需改动核心架构!
  • 完全掌控自由 - 需要提示缓存、批处理或流式处理?直接按需构建,不必与预设抽象较劲!


开发时需要OpenAI API封装?让ChatGPT给你写一个!通常只需10行代码。这比预设的僵化封装灵活多了!


def call_llm(prompt):

from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY_HERE")

r = client.chat.completions.create(

model="gpt-4o", messages=[{"role": "user", "content": prompt}]

)

return r.choices[0].message.content


# Example usage

call_llm("Hello World!")


有了这些精简又强大的构建块,开发者可以轻松搭建复杂的智能体 (Agent) 、检索增强生成系统 (RAG) 和大语言工作流 (Workflow) ,完全掌控每个环节。来看个例子!


实战:10分钟搭建一个网络搜索智能体!


我们用PocketFlow来构建一个网络搜索智能体,类似Perplexity AI这样能搜索网络并回答问题的工具。


流程设计:简单明了的流程图就够了


这是智能体行为的简单流程图:


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

flow


# Create instances of each node

decide = DecideAction()

search = SearchWeb()

answer = AnswerQuestion()


# Connect the nodes

# If DecideAction returns "search", go to SearchWeb

decide - "search" >> search


# If DecideAction returns "answer", go to AnswerQuestion

decide - "answer" >> answer


# After SearchWeb completes and returns "decide", go back to DecideAction

search - "decide" >> decide


# Create and return the flow, starting with the DecideAction node

return Flow(start=decide)


每个节点干啥?超简单:


1. DecideAction"搜索还是回答?"

  • 准备 (prep) :读取用户问题和已有搜索结果
  • 执行 (exec) :让大语言模型判断是该搜索还是直接回答
  • 收尾 (post) :返回"search""answer"指令

2. SearchWeb"找点新信息!"

  • 准备 (prep) :获取搜索关键词
  • 执行 (exec) :调用搜索API获取结果
  • 收尾 (post) :保存结果并返回给决策节点

3. AnswerQuestion"信息够了,回答问题!"

  • 准备 (prep) :整合问题和所有搜索内容
  • 执行 (exec) :让大语言模型生成有用的回答
  • 收尾 (post) :保存回答并结束任务


这个流程图灵活透明又易扩展!想换搜索引擎、使用不同的大语言模型或添加新决策点?分分钟搞定,不会动摇核心逻辑!


实际运行一个例子


假设用户问:"谁赢了2023年超级碗?"来看看流程怎么走:


1. DecideAction处理

  • 检查 (prep) :问题内容 (还没有信息)
  • 判断 (exec) :"不知道2023超级碗结果,需要搜索一下"
  • 行动 (post) :生成搜索关键词"2023年超级碗冠军"
  • 转向 (orch) :SearchWeb节点

2. SearchWeb处理

  • 接收 (prep) :搜索"2023年超级碗冠军"
  • 执行 (exec) :搜索网络 (找到"堪萨斯城酋长队赢了")
  • 保存 (post) :搜索结果
  • 返回 (orch) :回到DecideAction

3. DecideAction再次处理

  • 检查 (prep) :问题+搜索结果
  • 判断 (exec) :"已有足够信息可以回答了"
  • 行动 (post) :决定现在可以回答
  • 转向 (orch) :AnswerQuestion节点

4. AnswerQuestion处理

  • 整合 (prep) :问题和所有搜集到的信息
  • 生成 (exec) :友好清晰的回答
  • 完成 (post) :任务结束!


就是这么简单高效!整个智能体实现只需几百行代码,建立在100行框架基础上。可组合的节点和简单的流程图就能创建智能、高效的AI系统。没有黑科技,没有框架冗余,只有清晰的逻辑和完全的掌控权!想自己试试?查看完整示例代码:https://github.com/The-Pocket/PocketFlow/tree/main/cookbook/pocketflow-agent


不止于搜索智能体,还能搭建更多强大应用!


PocketFlow远不止于搜索智能体。开发者可以搭建各种应用:多智能体系统 (multi agents) 、工作流自动化 (workflow) 、检索增强生成系统 (RAG) 、映射归约处理 (map-reduce) 、流式数据处理 (streaming) 、监督控制系统 (supervisor) 、聊天记忆管理 (chat memory) 、模型上下文协议 (model context protocol) 等等。


每个实现都遵循相同模式:从基本原则出发,简洁而强大。不必啃几十万行代码,PocketFlow让你从基础开始构建自己的理解。查看完整教程和示例:https://github.com/The-Pocket/PocketFlow/tree/main/cookbook


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

design


未来展望:智能体编码?人机协作的最高境界!


PocketFlow的真正魅力远超其极简设计。最具革命性的是它开启了智能体编码 (https://zacharyhuang.substack.com/p/agentic-coding-the-most-fun-way-to) 的大门——一种全新的编程方式,让AI助手帮你构建和改进AI应用!


智能体编码说白了就是与AI一起写代码的实践。打个比方,就像盖房子——开发者是有远见和专业知识的建筑师,而AI则是负责具体施工的建筑队:


  • 你是建筑师:提供愿景和关键决策 (人类擅长的事)
  • AI是建筑队:处理所有细节实现 (AI擅长的活)
  • 你负责验收:审查和完善最终成果


这种协作能让生产力提升10倍!开发者少写重复代码,多做创造性思考!


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

agentic


如何教AI构建强大的大语言模型应用?


传统框架的困境:代码膨胀,文档匮乏 以前的框架思路完全走偏了——它们在代码中硬编码各种特定应用的封装:


  • 代码膨胀:智能体 (langchain.agents) 、检索增强生成 (langchain.retrievers) 、记忆管理 (langchain.memory) 等功能都被固化在代码库中,导致代码库膨胀到几十万行,依赖关系复杂
  • 文档滞后:核心功能在代码中,文档往往简短、过时且晦涩难懂


PocketFlow革命:文档即第二代码库! Pocket Flow的解决方案颠覆了传统思维。与其将功能固化在代码中,不如让它灵活存在于文档中:


  • 极简核心代码:仅保持100行,只保留核心构建块,永远不会膨胀
  • 丰富文档生态:将丰富的功能实现方法和应用场景详细阐述在几千行的文档中,而非固化在代码库里


AI辅助开发的未来:文档直接指导AI (.cursorrules)


这些文档不仅仅是给人类看的参考资料,更是AI助手的"指导手册"。通过将文档转化为AI助手的规则文件,如.cursorrules (https://github.com/The-Pocket/PocketFlow/blob/main/.cursorrules),Cursor等智能工具能够快速掌握PocketFlow的设计理念,在对话中灵活应用其设计模式。开发者只需专注于系统架构设计,学习少量基础构建块,就能让AI助手针对特定需求生成完美契合的解决方案,而不必被繁琐的框架限制所困扰。


更令人振奋的是:随着Pocket Flow代码的广泛传播,它们最终会进入未来大语言模型的训练数据。到那时,甚至不需要明确的文档,AI助手将自然而然地掌握这些原则,让大语言应用开发真正畅通无阻!


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

cursor


返璞归真,掌控未来


PocketFlow颠覆了"更复杂才更强大"的传统思维,用100行代码证明:真正的技术突破源于本质洞察,而非堆砌抽象。通过将大语言应用简化为基础有向图,它不仅让开发者摆脱了框架束缚,更为人机协作的智能体编码时代奠定了基础。


简洁并不意味着能力有限,恰恰相反,它赋予了开发者最大的自由和掌控力。正如伟大设计常常遵循的原则:"不是无法再添加,而是无法再简化时,才达到完美。"


别忘记给项目点亮Star,以感谢Zachary Huang博士为AI进步所做出的卓越贡献!


立即体验PocketFlow,感受100行代码如何取代成千上万行!

GitHub仓库:https://github.com/the-pocket/PocketFlow

文档: https://the-pocket.github.io/PocketFlow

TypeScript版本: https://github.com/The-Pocket/PocketFlow-Typescript


文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。


被LangChain折磨够了吗?试下100行代码打造的LLM有向图框架PocketFlow | 独家最新

关键词: AI , LangChain , PocketFlow , 模型训练
AITNT-国内领先的一站式人工智能新闻资讯网站
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
cursor

【免费】cursor-auto-free是一个能够让你无限免费使用cursor的项目。该项目通过cloudflare进行托管实现,请参考教程进行配置。

视频教程:https://www.bilibili.com/video/BV1WTKge6E7u/

项目地址:https://github.com/chengazhen/cursor-auto-free?tab=readme-ov-file


2
AI代理

【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。

项目地址:https://github.com/browser-use/browser-use


3
AI工作流

【开源免费】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/(付费)

4
智能体

【开源免费】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

5
RAG

【开源免费】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

6
AI搜索

【开源免费】MindSearch是一个模仿人类思考方式的AI搜索引擎框架,其性能可与 Perplexity和ChatGPT-Web相媲美。

项目地址:https://github.com/InternLM/MindSearch

在线使用:https://mindsearch.openxlab.org.cn/


【开源免费】Morphic是一个由AI驱动的搜索引擎。该项目开源免费,搜索结果包含文本,图片,视频等各种AI搜索所需要的必备功能。相对于其他开源AI搜索项目,测试搜索结果最好。

项目地址:https://github.com/miurla/morphic/tree/main

在线使用:https://www.morphic.sh/

7
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0