大家好,我卡颂
自从23年初GPT爆火后,每年都会涌现一些爆火的AI概念。
今年最火的概念无疑是Agent。
伴随而来的,是各家都在争夺「Agent的解释权」:
- openAI发布a-practical-guide-to-building-agents[1]
- Antropic发布building-effective-agents[2]
- langchain作者发文how-to-think-about-agent-frameworks[3]反驳openAI的观点(目的是推销自家的langGraph)
这些繁杂的信息无疑加深了开发者对Agent的理解成本。
实际上,Agent的概念非常简单。本文会用一个「100行代码的Agent框架」讲解「Agent的开发原理」。
什么是 PocketFlow?
PocketFlow[4]是一款仅有100行代码的Agent框架,作者是Zachary Huang[5]。
他的概念非常简单 —— 所有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[6]的「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应用。
参考资料
[1] a-practical-guide-to-building-agents: https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf。
[2] building-effective-agents: https://www.anthropic.com/engineering/building-effective-agents。
[3] how-to-think-about-agent-frameworks: https://blog.langchain.dev/how-to-think-about-agent-frameworks/。
[4] PocketFlow: https://github.com/The-Pocket/PocketFlow-Typescript。
[5] Zachary Huang: https://github.com/zachary62。
[6] Agentic Coding: https://pocketflow.substack.com/p/agentic-coding-the-most-fun-way-to。