100行代碼速通Agent開發
大家好,我卡頌
自從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。