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(例如将高成本的前沿模型与本地低成本模型混合使用)。
  • 强类型:通过类型化的领域模型取代“魔法映射”,用于提示和代码交互。
  • 可插拔规划:支持不同的规划算法,并为未来与其他代理框架的联邦做好设计准备。