Appearance
PocketFlow 原理入门(Interactive Intro to PocketFlow)
学习指南:本章节只需要基础的 Python 知识,通过交互式演示带你了解 PocketFlow —— 一个仅 100 行代码、零依赖的 LLM 应用框架。从"它能做什么"讲起,一直到"它是怎么做到的"。
🚀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 变成真正有用的应用,你需要解决三个核心问题:
- 流程编排:如何把多个步骤(检索、生成、验证)串联成完整的流程?
- 状态管理:步骤之间如何传递数据?对话历史怎么管理?
- 容错与扩展: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 |
| AutoGen | Actor 消息传递 | 智能体 是 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 家族(调度)+ 三种通信机制
| 维度 | 同步 | 异步顺序 | 异步并行 |
|---|---|---|---|
| 单节点 | Node | AsyncNode | — |
| 批量节点 | BatchNode | AsyncBatchNode | AsyncParallelBatchNode |
| 流程 | Flow | AsyncFlow | — |
| 批量流程 | BatchFlow | AsyncBatchFlow | AsyncParallelBatchFlow |
12 个类 = BaseNode 基类 + 上表 10 个组合 +
_ConditionalTransition辅助类。详细继承关系见 §5 深入源码。
