BabyAGI 與 AutoGPT:奠定現代 AI Agent 的基礎迴圈

BabyAGI 與 AutoGPT:奠定現代 AI Agent 的基礎迴圈

探討 2023 年誕生的開源專案 AutoGPT 與 BabyAGI,認識它們如何透過「任務隊列」與「自主迴圈」機制,定義了現代 AI Agent 能夠拆解目標並持續執行的底層邏輯。


當我們現在理所當然地使用各式各樣的 Agent 框架(如 LangChain 或 Pydantic AI)來開發應用時,如果把時間倒轉回 2023 年初,當時的業界對 LLM 的認知大多還停留在「一問一答的聊天機器人」。

直到兩個極具實驗性質的開源專案誕生:AutoGPTBabyAGI

它們提出了一個改變遊戲規則的問題:「如果我們不自己下指令,而是給 AI 一個最終目標,讓它自己寫計畫、自己執行、自己檢驗結果,然後在一個迴圈裡一直跑下去呢?」

這兩套專案雖然在現今看來屬於早期的實驗作品,但它們奠定了現代所有自主智能體(Autonomous Agents)運作的基礎邏輯。


什麼是 BabyAGI 與 AutoGPT ?

雖然它們經常被放在一起討論,但在設計哲學上略有不同:

  1. BabyAGI:由開發者 Yohei Nakajima 撰寫,最初只有約 140 行 Python 程式碼。它不強調複雜的工具,而是專注於「任務管理機制」。它示範了如何利用三個不同的 AI 代理(負責執行、負責創建新任務、負責排序)來推進一個專案。
  2. AutoGPT:它像是一個什麼都想自己來的全能助手。你給它一個大目標(例如:幫我研究市場上最好的筆電並寫一份報告),它會自己在背景連上網際網路、搜尋資料、讀取網頁、然後把結果寫進本地檔案裡。它的重點在於「工具的整合與無限制的探索」。

BabyAGI 的核心機制:任務隊列與執行迴圈

要理解現代 Agent 的專案管理邏輯,就必須理解 BabyAGI 提出的經典迴圈。我們可以用以下的流程圖來拆解它的運作原理:

Loading Diagram...

在這個架構中,系統不再是一個單一的對話框,而是一個由三個步驟組成的無限迴圈(While Loop):

  1. 執行 (Execute):拿清單上的第一件事情去做,並將結果存入記憶庫。
  2. 創建 (Create):看著剛剛做完的結果,思考「為了達成最終目標,我還缺什麼?」,並產生新的待辦事項。
  3. 排序 (Prioritize):把新產生的待辦事項與舊的清單合併,重新評估哪件事情最重要,排在第一順位。

程式碼概念解析

如果把這個概念簡化成 Python 虛擬碼,它其實就是一個不斷呼叫 LLM 的迴圈:

task_list = ["定義目標:寫一篇關於 AI 的文章"]

while task_list:
    # 1. 拿出第一個任務
    current_task = task_list.pop(0)
    
    # 2. 執行代理 (呼叫 LLM)
    result = llm.execute(current_task)
    
    # 3. 創建代理 (呼叫 LLM 產生新任務)
    new_tasks = llm.create_new_tasks(result, current_task)
    
    # 4. 排序代理 (呼叫 LLM 重新整理清單)
    task_list = llm.prioritize(task_list + new_tasks)

AutoGPT 的核心機制:全能決策迴圈

與 BabyAGI 專注於任務拆解不同,AutoGPT 把重點放在「單一大腦的全能決策」與「廣泛的工具整合」。

Loading Diagram...

AutoGPT 最大的創舉在於它的 System Prompt 設計。它強迫 LLM 在每次行動前,必須產出包含 `Thoughts`(思考)、`Reasoning`(推論)、`Plan`(計畫)與 `Criticism`(批判)的 JSON 格式。這套自我反思的邏輯,直接啟發了後來無數框架(包含 LangChain 與 Semantic Kernel)對於 Agent 提示詞的設計標準。

程式碼概念解析

如果把 AutoGPT 的運作邏輯簡化,它其實就是一個不斷解析 JSON 並執行對應工具的迴圈:

memory = []
goal = "寫一份關於 AI 趨勢的分析報告"

while True:
    # 1. 結合目標與歷史記憶,向 LLM 索取下一步動作
    prompt = build_prompt(goal, memory)
    response_json = llm.execute(prompt)
    
    # 2. 從 JSON 中解析出思考過程與要執行的指令
    thought = response_json["thoughts"]["text"]
    command_name = response_json["command"]["name"]  # 例如: "google_search"
    command_args = response_json["command"]["args"]
    
    # 3. 執行實體工具,並取得結果
    result = execute_tool(command_name, command_args)
    
    # 4. 將執行結果寫入記憶中,提供給下一輪迴圈參考
    memory.append({"command": command_name, "result": result})
    
    # 若 LLM 判定目標達成,會回傳特定指令來終止程式
    if command_name == "task_complete":
        break

實務場景:為什麼現在少用於生產環境?

儘管 AutoGPT 與 BabyAGI 的概念非常有啟發性,但在目前的企業實務中,我們很少直接將這兩套原始框架部署到正式環境,原因在於:

  • 無限迴圈陷阱:由於目標太過發散,AI 很容易陷入「一直在規劃新任務,卻沒有實際產出」的迴圈,導致 API 費用暴增。
  • 錯誤累積:一旦在「執行代理」階段產生了幻覺(Hallucination),後續的「創建代理」就會根據錯誤的資訊不斷衍生出無意義的任務。

這也是為什麼後來的發展(如 LangGraph 或前一篇介紹的 Pydantic AI)開始轉向:用固定流程(Graph)來限制 AI 的發散範圍,並用強型別(Type-Safe)來確保輸出的穩定性。


實用建議:三個起步行動

如果你想深入理解 Agent 的底層邏輯,非常推薦從這兩個專案著手學習:

步驟 1:閱讀 BabyAGI 的原始碼

去 GitHub 搜尋 babyagi,找到最初版本的 babyagi.py。它沒有使用任何複雜的框架,完全是用標準的 Python 呼叫 OpenAI API。閱讀這 140 行程式碼,是理解 AI Agent 運作原理最好的捷徑。

步驟 2:觀察 AutoGPT 的 System Prompt

AutoGPT 之所以能思考,是因為它有一份非常龐大且嚴謹的 System Prompt,要求模型必須以 Thought (思考)、Reasoning (推論)、Plan (計畫)、Criticism (反思) 的結構來輸出 JSON。這個結構直接影響了後續所有 Agent 的設計標準。

步驟 3:動手寫一個屬於你的微型迴圈

試著不依賴套件,自己寫一個具有簡單 While 迴圈的 Python 腳本。給它一個簡單的陣列當作任務隊列,並練習處理任務成功與失敗的流程。這會大幅提升你未來除錯大型 Agent 框架的能力。


我的反思

如果要研究最簡單的代理人(Agent)架構,或許可以從 BabyAGI 與 AutoGPT 開始解析。

現在的主流框架(如 LangChain 或 LlamaIndex)雖然功能強大,但底層往往包裝了厚厚的抽象層次,對於初學者來說,很容易迷失在龐大的 API 文件中,反而看不清 Agent 運作的本質。

相反地,BabyAGI 和 AutoGPT 最初的版本沒有華麗的包裝,只有最純粹的 Python while 迴圈、API 呼叫與簡單的資料結構。它們用最原始的程式碼向我們證明了:只要有明確的迴圈控制,加上良好的 Prompt 設計,語言模型就能展現出驚人的自主性。 撥開現代框架複雜的迷霧,這兩個專案絕對是每一位想深入理解 Agent 底層邏輯的開發者,最值得拆解的起點。