大家好,我卡颂,专注于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。
再考虑一些流程设计,比如:
- 循环:
NodeA 与 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应用。