大家好,我卡颂,专注于AI助力程序员转型(阅读我的更多思考)
自从23年初GPT
爆火后,每年都会涌现一些爆火的AI
概念。
今年最火的概念无疑是Agent
。
伴随而来的,是各家都在争夺Agent的解释权:
-
Antropic
发布building-effective-agents -
langchain
作者发文how-to-think-about-agent-frameworks反驳openAI
的观点(目的是推销自家的langGraph
)
这些繁杂的信息无疑加深了开发者对Agent
的理解成本。
实际上,Agent
的概念非常简单。本文会用一个100行代码的Agent框架讲解Agent的开发原理。
什么是 PocketFlow?
PocketFlow是一款仅有100行代码的Agent框架
,作者是Zachary Huang。
他的概念非常简单 —— 所有AI应用的核心流程,本质来说是不同复杂度的图
(graph,一种数据结构),由最基本的数据结构Node
组合而成。
以AI总结邮件内容这个场景举例:
只让AI总结邮件内容,那么核心流程就是一个Node
:
如果AI总结邮件后再生成回复草稿,就是两个Node
组成的Flow
:
如果要重复总结多份邮件,就是多个Node
重复执行,这些Node
组成Batch
:
如果要同时总结多份邮件,就是多个Node
同时执行,这些Node
组成Parallel
。
再考虑一些流程设计,比如:
- 循环:
Node
A 与 B 的输出分别作为对方的输入
- 分支:
Node
根据条件与不同Node
连接
当有了这些基础的结构与流程后,就能组合更复杂的图。
比如循环和分支可以组合成Agent
。
下图是一个总结邮件内容并生成回复的Agent
,他会分析邮件内容、确定是否需要人工审核、草拟回复并不断迭代优化。
一些常用的AI工具也能组合生成,比如下图是RAG
的结构:
有了RAG
,再结合流
与循环
就能组合成AI聊天应用中的聊天消息记忆模块:
到这里你应该能理解为什么PocketFlow
代码只有100行 —— 他只实现了构成AI应用所需的基本数据结构。
要开发任何AI应用,只需要:
-
了解该应用可以设计为什么结构的图(graph)
-
用
PocketFlow
描述图结构 -
实现图结构、辅助方法、图的状态管理
听起来是不是有种库太简单,以至于需要开发者自己写很多代码的感觉?
在AI时代,这恰恰不是问题。
Agentic Coding
由于PocketFlow
代码量极少(100行),这意味着你能将他的源代码、设计理念、使用方法、案例合并为一条提示词给到大模型。
通过这条提示词,现代大模型(比如Claude-sonnet-3.7
、Gemini2
...)可以轻松掌握PocketFlow
使用方法的最佳实践。
作者还为上述最佳实践设计了一套称为Agentic Coding的AI辅助开发模式。
这套开发模式是人类设计与AI实现的协作模式 —— 人类负责理解需求、定义高层架构和评估结果,AI负责实现细节和优化。
假设我要基于PocketFlow
开发一个mini Cursor
,Agentic Coding
的流程如下:
-
我去调研
mini Cursor
需要实现哪些功能 -
与AI协作确定这些功能对应什么图结构
对于Cursor
应该是Agent
结构。
- 与AI协作确定工具的类型定义
mini Cursor
需要如下工具:
-
codebase_search:语义搜索工具
-
read_file:读取文件内容(或大纲)
-
run_terminal_cmd:代表用户在终端执行命令
-
list_dir:快速列出目录内容
-
等等
-
AI使用
PocketFlow
实现我在步骤2确定的图结构 -
AI实现我在步骤3确定的工具
-
评估、优化效果
就我个人体验,基于Agentic Coding
,开发mini Cursor
我只用了1天时间,结构如下:
核心代码就是定义不同Node
,比如核心Agent
、各种工具Node
。
再将各个Node
连接形成图。
总结
所有AI应用的核心流程,本质来说是不同复杂度的图
(graph,一种数据结构),由最基本的数据结构Node
组合而成。
PocketFlow
提供了最基本的数据结构以及一套人类设计 + AI实现的协作开发模式Agentic Coding
(本质是一段可以作为cursor rule
的提示词)
你可以在cursor
(或其他AI IDE)帮助下,快速开发各种AI应用。