embabel/embabel-agent

Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/

它解決了什麼問題

Embabel 提供了一個在 JVM(Java 與 Kotlin)上建立代理式工作流程的框架,將大型語言模型(LLM)互動與傳統程式碼及領域模型結合。它透過動態規劃取代僵硬的有限狀態機或簡單的順序執行,解決了管理 LLM 驅動流程的複雜性,使代理能夠根據新資訊調整並找到達成目標的全新路徑。

它如何運作

此框架使用四個核心概念來建模代理行為:

  • Actions:代理可以執行的單一步驟。
  • Goals:代理試圖達成的期望結果。
  • Conditions:在執行動作或判斷目標是否達成前的檢查。
  • Domain Model:提供給動作、目標與條件的底層物件。

Embabel 不使用硬編碼的路徑,而是利用 Plan——在執行時動態產生的動作序列。它採用非 LLM 的 AI 演算法,具體為目標導向行動規劃(Goal Oriented Action Planning,GOAP)或效用 AI,來決定最佳的動作順序。系統遵循 OODA 迴圈(Observe、Orient、Decide、Act),在每次動作後重新規劃以因應變化。

開發者可以使用基於註解的模型(類似 Spring MVC)或慣用的 Kotlin DSL 來定義這些流程。框架透過 AgentPlatform 執行,支援三種執行模式:Focused(直接方法呼叫)、Closed(根據意圖動態選擇代理)以及 Open(在所有可用資源中動態選擇目標與動作)。

適用對象

在 JVM 生態系(Java/Kotlin)中工作的軟體工程師與企業開發者,想要構建可測試、可擴充且能利用現有 Spring 基礎設施與領域模型的高階 AI 代理。

重點特色

  • 動態規劃:使用 GOAP 與效用 AI 找到達成目標的路徑,而非依賴固定的狀態機。
  • JVM 原生:基於 Spring 與 JVM,提供強類型、物件導向的優勢,且易於存取企業級持久化與交易管理。
  • LLM 混合:簡化在單一流程中同時使用多個 LLM(例如將高成本的前沿模型與本地低成本模型混合使用)。
  • 強類型:透過型別化的領域模型取代「魔法映射」,用於提示與程式碼互動。
  • 可插拔規劃:支援不同的規劃演算法,並為未來與其他代理框架的聯合設計做好準備。