Skip to content

PocketFlow 原理入门(Interactive Intro to PocketFlow)

学习指南:本章节只需要基础的 Python 知识,通过交互式演示带你了解 PocketFlow —— 一个仅 100 行代码、零依赖的 LLM 应用框架。从"它能做什么"讲起,一直到"它是怎么做到的"。

多语言版本Python · TypeScript · Java · C++ · Go · Rust · PHP

🚀PocketFlow 快速体验
选择一个场景,看看 100 行代码如何驱动 LLM 应用
ChatBot Flow:接收输入 → 调用 LLM → 返回回复
📥GetInput
prep从 shared 读取对话历史
exec拼接用户消息为 prompt
post将回复存回 shared
🤖CallLLM
prep读取 prompt
exec调用大模型 API
post返回 action 决定是否继续
📤SendReply
prep读取 LLM 输出
exec格式化回复内容
post输出给用户,返回 "continue"

💡核心洞察:PocketFlow 的全部魔力来自两个抽象 —— Node(节点,执行 prep→exec→post 三阶段)和 Flow(流程,串联多个 Node 的有向图)。 仅此而已,100 行代码,零依赖。

0. 引言:为什么需要 LLM 框架?

大语言模型(LLM)本身只是一个"文字接龙"引擎 —— 你给它一段文字,它预测下一个词。

但要把 LLM 变成真正有用的应用,你需要解决三个核心问题:

  1. 流程编排:如何把多个步骤(检索、生成、验证)串联成完整的流程?
  2. 状态管理:步骤之间如何传递数据?对话历史怎么管理?
  3. 容错与扩展:API 调用失败了怎么办?如何批量处理大量数据?

市面上的框架(LangChain、CrewAI 等)用数万到数十万行代码来解决这些问题。

而 PocketFlow 的回答是:100 行就够了。

⚖️框架对比:为什么选择 PocketFlow?
维度
PocketFlow
LangChain
CrewAI
AutoGen
Agno
PydanticAI
SmolAgents
OpenAI SDK
📏核心代码量
~100 行
~405K
~18K
~7K
~15K
~8K
~5K
~3K
📦依赖数量
0
大量
中等
中等
中等
少量
少量
少量
🔒供应商锁定
部分
部分
部分
📈学习曲线
极低
陡峭
中等
中等
🧩心智模型
有向图
状态机
角色团队
Actor
声明式
类型函数
代码生成
Handoff
💡
极简不等于简陋
100 行代码覆盖了 Node、Flow、Batch、Async 四大核心抽象,足以构建 RAG、Agent、工作流等所有主流模式。
🔧
零依赖 = 完全掌控
没有第三方库意味着你可以完整理解框架的每一行代码,也不会被供应商版本升级所绑定。
🤖
Agentic Coding 友好
PocketFlow 鼓励"人类设计架构,AI 写实现代码"的开发模式,其极简核心让 AI 也能轻松理解和生成代码。

0.1 框架全景:PocketFlow 与主流框架的本质区别

初次阅读可跳过 —— 先跑通代码,再回来对比框架差异

在深入学习之前,先建立一个关键认知 —— PocketFlow 和其他框架不在同一个抽象层级

框架核心心智模型给你的是什么
Agno声明式记忆代理智能体 构造器内置 Memory + Knowledge + Tools
AutoGenActor 消息传递智能体 是 Actor,通过异步消息协作
CrewAI角色扮演团队智能体(角色/目标/背景故事)+ Manager 分配 Task
LangGraph有状态状态机强类型 State + 条件边函数 + 持久化检查点
OpenAI Agents SDK轻量 智能体 + Handoff智能体 + Handoff + Guardrails + Tracing
PydanticAI类型安全函数智能体 = 带 Pydantic 验证的函数调用
SmolAgents代码即动作LLM 直接生成 Python 代码而非 JSON tool call
PocketFlow最小有向图运行时只有 Node + Flow 两个原语,其他一切自己搭

类比理解

可以把这些框架想象成不同的建筑方式:

  • LangGraph / CrewAI / AutoGen = 精装房 —— 框架替你预制了"智能体 客厅"、"RAG 厨房"、"Memory 卧室",你在现有房间里摆家具
  • PydanticAI / Agno / SmolAgents = 毛坯房 —— 给你墙体和水电,你自己做装修
  • PocketFlow = 一块地 + 物理定律 —— 只给你"节点"和"连线"这两条规则,你从地基开始搭

PocketFlow 的 100 行代码相当于"物理定律" —— 少到不能再少,但足以构建一切。

这意味着 PocketFlow 里没有任何预制模式类 —— RAG、智能体、CoT、MapReduce 都是你用 Node + Flow 搭出来的不同图拓扑。

"Every LLM application is a directed graph. Nothing more." —— PocketFlow 创作者 Zachary Huang

理解了这一点,接下来学习 Node 和 Flow 时你会发现:它们不是"框架的功能",而是"图的物理定律"。具体的图拓扑与自动机映射,见 §2.4 形式化视角

0.2 PocketFlow 架构总览

初次阅读可跳过 —— 先跑通代码,学完再回来看全貌

PocketFlow 的 100 行源码由 12 个类组成,分为两大家族,通过三种机制通信:

PocketFlow 架构:Node 家族(执行)+ Flow 家族(调度)+ 三种通信机制

维度同步异步顺序异步并行
单节点NodeAsyncNode
批量节点BatchNodeAsyncBatchNodeAsyncParallelBatchNode
流程FlowAsyncFlow
批量流程BatchFlowAsyncBatchFlowAsyncParallelBatchFlow

12 个类 = BaseNode 基类 + 上表 10 个组合 + _ConditionalTransition 辅助类。详细继承关系见 §5 深入源码

Easy-Pocket —— 从零掌握 PocketFlow