Embabel (Em-BAY-bel) 是一个在 JVM 上编写 agentic flows 的框架,它将 LLM 触发的交互与代码和领域模型无缝融合。支持智能路径查找,以达到目标。它使用 Kotlin 编写,但提供了 Java 的自然使用模型。它出自 Spring 的创始人之手。
- Actions:Steps an agent takes
- Goals:agent 试图实现的目标
- Conditions:执行操作或确定目标是否已达成之前需要评估的条件。每次执行操作后都会重新评估条件。
- Domain model:支撑流程并告知动作、目标和条件的对象。
- Plan:为实现目标而采取的一系列行动。计划由系统而非程序员动态制定。系统会在每次行动完成后重新制定计划,使其能够适应新的信息并观察前一次行动的效果。这实际上是一个OODA 循环。
这些概念巩固了与其他 agent 框架的区别:
- 复杂的规划。通过引入真正的规划步骤,使用非LLM AI算法,超越有限状态机或嵌套顺序执行。这使得系统能够通过以新的顺序组合已知步骤来执行未编程的任务,并做出有关并行化和其他运行时行为的决策。
- 卓越的可扩展性和重用性:由于动态规划,添加更多的域对象、动作、目标和条件可以扩展系统的功能,而无需编辑 FSM 定义或现有代码。
- 强类型和面向对象的优势:操作、目标和条件由领域模型(可包含行为)定义。所有内容均为强类型,提示符和手动编写的代码可以清晰交互。告别 magic maps。享受全面的重构支持。
其他好处:
- 平台抽象:编程模型和平台内部之间的明确分离允许在本地运行,同时可能在生产中提供更高的 QoS,而无需更改应用程序代码。
- 专为 LLM 混合设计:轻松构建混合 LLM 的应用程序,确保提供最具成本效益且功能强大的解决方案。这使得系统能够利用不同模型的优势来执行不同的任务。特别是,它有助于使用本地模型执行点任务。这对于成本和隐私至关重要。
- 基于 Spring 和 JVM 构建,可轻松访问现有企业功能和能力。例如:
- Spring可以注入和管理代理,包括使用Spring AOP来装饰功能。
- 提供强大的持久性和事务管理解决方案。
- 专为可测试性而设计。单元测试和代理端到端测试都非常简单。
评论