Apache Burr: 一個用於可靠 AI Agent 的狀態機框架

Apache Burr (Incubating) 是一個純 Python 框架,旨在透過將 AI agent 與應用程式視為狀態機來簡化開發。藉由使用標準的 Python 函數與裝飾器(decorators)來取代複雜的領域特定語言(DSLs)和 YAML 配置,Burr 使開發者能夠專注於可靠性與可觀測性,構建從簡單聊天機器人到複雜的多 Agent 系統。

核心架構與 API

Apache Burr 利用基於動作(actions)與轉換(transitions)的可組合介面來定義應用程式邏輯。這種方法讓開發者能夠完全控制執行流程,而無需依賴「魔術」般的抽象層。

基於動作的邏輯

開發者使用 @action 裝飾器來定義 Agent 的構建單元。每個動作會指定它讀取與寫入狀態的哪些部分,從而確保清晰的數據邊界。例如,一個聊天動作可能會讀取訊息歷史紀錄,並在 LLM 調用之後寫入更新後的歷史紀錄。

狀態機構建

應用程式是使用 ApplicationBuilder 模式進行組裝的。此過程包括:

  • 定義動作:註冊執行工作的 Python 函數。
  • 設定轉換:映射應用程式如何從一個動作轉換到另一個動作。
  • 初始化狀態:設定應用程式狀態的初始值。
  • 配置追蹤器:設定本地或遠端追蹤以實現可觀測性。

關鍵技術特性

Burr 提供了一套專門旨在將 AI agent 從原型轉向生產就緒系統的工具。

可觀測性與除錯

Burr 包含一個內建的 UI,允許開發者即時監控、除錯與追蹤應用程式的每一步。此 UI 提供了狀態變更發生時的可視化,這對於除錯 LLM 輸出中非確定性的本質至關重要。

狀態管理與持久化

該框架會自動將狀態持久化到磁碟、資料庫或自定義後端。這種能力讓應用程式能夠從上次中斷的地方精確地恢復執行,為長期運行的 Agent 提供了一種強大的機制。

人機協作整合 (Human-in-the-Loop)

Burr 支持在任何步驟暫停執行以等待人類輸入。這對於審核工作流與互動式 Agent 至關重要,在這些場景中,人類必須在 AI 做出決定之前進行驗證。

並行性與模組化設計

該框架支持分支與並行處理,允許動作並行執行(fan-out/fan-in),並能創建複雜的有向無環圖(DAGs)。開發者也可以組合子應用程式以維持模組化設計。

生態系統與整合

Burr 的設計與底層的 LLM 或框架無關,可與各種產業工具整合:

  • LLMs:OpenAI, Anthropic.
  • Frameworks:LangChain, Hamilton, Haystack.
  • Validation and Serving:Pydantic, FastAPI, Instructor.
  • Storage:PostgreSQL.
  • UI:Streamlit.

社群觀點與技術評論

雖然該專案已獲得關注,但 Hacker News 上的開發者討論揭示了對於其結構化方法與偏好極簡抽象層的人之間存在分歧。

支持 Burr 的論點

用戶強調了從其他框架遷移的便利性。一位開發者指出:

"從 LangChain 遷移到 Burr 簡直是個遊戲規則改變者!與我花費數天或數週試圖理解 LangChain 的過程相比,我只需要幾個小時就能開始使用 Burr。"

其他用戶讚揚了狀態管理與可觀測性,指出 UI 讓除錯變得 "輕鬆愉快"。

技術批評

一些資深的工程師認為,Agent 框架往往會掩蓋核心邏輯。一位評論者建議,對於許多 Agent 而言,核心迴圈(上下文構建、LLM 調用、工具執行、解析)足夠簡單,因此使用 1:1 的自定義代碼比使用框架的抽象層更具可維護性。

此外,一些開發者批評在 Python 中使用 Builder 模式與裝飾器來進行流程控制,認為這些模式更適合 Rust 等語言,或者應該作為過濾器而非註冊機制來使用。

與其他工具的比較

社群成員將 Burr 與 LangGraph 進行了比較,認為 Burr 使用 Builder 模式實現的狀態機,在 Agent 編排方面提供了與 LangGraph 方法類似的功能結果。

Sources