
由 Spring 创始人Rod Johnson推出的Embabel Agent框架是一个新的基于 JVM 的平台,用于构建基于Spring框架的 AI 驱动应用程序。它旨在改变开发人员将大语言模型(LLMs)与传统 Java 应用程序集成的方式,从实验性方法转变为生产就绪的类型安全解决方案。
Embabel 使用行动、目标和条件对“智能流”进行建模。与更简单的框架不同,它利用了面向目标的行动规划(GOAP),这是一种传统上用于游戏的 AI 算法,用来进行适当的规划。这允许应用程序通过以新颖的方式组合步骤并在每个操作后动态重新规划,来执行没有显式编程的任务,从而形成OODA循环。
Embabel 的一个核心原则是其强类型和面向对象。这确保了所有 LLM 交互都是强类型的,提供了编译时检查、重构支持和 IDE 辅助,使 AI 开发与严格的工程实践保持一致。
Rod Johnson 强调,Embabel 将规划视为一种独特的能力,利用专门的算法,而不是仅依赖于 LLMs。该框架的 GOAP 实现通过综合考虑前置条件和效果来确定最优动作序列。这产生了几个好处:通过最小化不必要的 LLM 调用来提高效率,通过重新规划来实现动态适应性,通过允许在不修改现有代码的情况下添加新动作和目标增加可组合性,以及并行化操作的能力。这种规划周期显著提高了复杂的多步骤流程的可靠性。

框架支持三种执行模式:专注(特定智能体调用)、封闭(用户意图分类智能体选择)和开放(平台评估用户意图,使用所有可用资源实现目标)。Embabel 还优先考虑测试的易用性,智能体可以像 Spring Bean 一样进行单元测试,并且有一个专门的库用于提示测试库。它的可扩展性允许在不更改现有代码的情况下添加域对象、操作、目标和条件。
该框架还提供了编程模型和平台内部之间的明确分离,支持本地运行和生产中更高质量的服务。它支持 LLM 混合以提高成本效益和增强功能,包括用于隐私和成本管理的本地模型。
Embabel 为 JVM 生态系统带来了 agent 功能,构建在 Spring AI 之上,为复杂需求提供了更高层次的抽象。它通过最大化重用、促进测试、增加可组合性、增强可管理性和提供类型安全解决了关键的 AI 应用程序开发的挑战。
InfoQ 与 Embabel 和 Spring 的创始人 Rod Johnson 进行了交流,以进一步了解该框架的设计和战略定位。
InfoQ:鉴于现代 Java 的进步,为什么选择 Kotlin 作为 Embabel 的编程语言?
Rod Johnson:Java 在 Oracle 的管理下做得非常好。现代 Java 无疑有了很大的改进。我个人更喜欢用 Kotlin 编码,并且觉得使用 Kotlin 可以加速 Embabel 的开发。我特别喜欢空安全、更易读的集合用法,无需提升到流,以及更简洁的语法。Reification 还通过减少类型擦除的影响来使纯 Kotlin 的使用更加优雅。
然而,实现框架的语言选择并不意味着在其上构建应用程序的语言选择。我鼓励所有 JVM 开发者考虑 Kotlin,但有很好的理由让许多项目仍然使用 Java。Kotlin 与 Java 有出色的互操作性。这是无痛的。我们致力于确保 Java 的使用完全是符合习惯的,不受 Kotlin 的任何影响。在必要的地方,我们添加了一些 Java 代码来确保这一点。例如,如果用 Java 构建应用程序,你永远不会看到 Kt 导入。
无论你是用 Kotlin 还是 Java 构建,Embabel 的类型安全性和丰富的领域模型的核心价值都非常突出。我们的目标是在两种语言中都是符合习惯的——还有一个 Kotlin DSL。
Embabel 是一个 JVM 框架,而不是一个 Kotlin 框架。我们知道 JVM 的主导语言是 Java, Java 正在向前发展,这是件好事。
InfoQ:与其他基于 Jave 的 AI 项目(如 LangChain4j 和 Spring AI)相比,你如何定位 Embabel ?
Rod Johnson:Embabel 比 LangChain4j 和 Spring AI 的级别更高。它建立在它们那一层之上,选择 Spring AI 是因为与 Spring 生态系统密切相关,但它提供了更高层次的抽象,并引入了原创思想。agent 框架的层次在 Python 中已经很熟悉了,但在 JVM 上却非常新。如果 Java 想要保持它在企业和其他领域的地位,这是迫切需要的。
InfoQ:传统的 Java 团队是否可以采用 Embabel,或者是否需要 AI 专业知识?
Rod Johnson:我认为,对领域和现有业务应用程序及基础设施的理解对于使 Gen AI 提供商业价值至关重要。Embabel 旨在使 JVM 开发者编写智能体就像使用他们的核心技能编写 Spring MVC 应用程序一样容易。
许多人和组织认为你需要用 Python 编写通用人工智能(Gen AI)应用。这意味着要投入生产一个新的技术栈,可能需要一套新的技能,以及在获取现有业务逻辑和基础设施时产生很多摩擦。我坚信这是完全错误的——我非常熟悉 Python 生态系统。Java 团队完全可以很好地在其应用程序中利用 AI,摩擦最小,并且能够从他们现有的理解和工具集中获益。
话虽如此,大语言模型(LLMs)是一项强大的新技术,具有深远的影响。组织和开发人员需要理解风险和成本,以及回报。一个好的智能体框架会使通用人工智能更安全、更可预测,但仍然必须了解起作用的力量。这个警告适用于你构建应用程序的任何技术栈。
InfoQ:鉴于你与 Spring 的历史以及当前与生态系统的关系,你如何看待 Embabel 与 Spring AI 以及更广泛的 Spring 产品组合的演变?是否有关于更紧密集成或潜在包含在官方 Spring 项目家族中的讨论?
Rod Johnson:我刚刚在巴塞罗那的 Spring I/O 大会上发言。这是一场很棒的展会。我很高兴能在 Spring 的基础上进行构建,因为 Spring 是一项伟大的技术,而且它是企业级 Java 中占主导地位的组件模型,从采用的角度来看,这是理所当然的。当然,出于个人原因,我也很乐意在 Spring 上进行构建。看到我在 23 年前创立的东西仍在蓬勃发展,并且掌握在可靠的人手中,这是一种乐趣。
Embabel 是一个独立的项目,拥有新颖的想法,目标是成为任何平台上最好的智能体框架。它的层次比 Spring AI 要高,并引入了新颖的想法。我认为它的存在对 Spring 和 Java 来说是一件好事。
当我创建 Spring 时,我专注于解决当时最重要的企业 Java 问题——事实上 J2EE 使得构建应用变得过于困难。在创建 Embabel 时,我专注于解决最重要的 JVM 问题:如何将业务应用程序带入通用人工智能时代。
虽然我认为 JVM 在通用人工智能的未来中扮演着特别重要的角色,但 Embabel 想要成为任何地方都是最好的智能体框架的目标,意味着最终将模型移植到其他平台上,这并不适用于 Spring。我肯定绝对会可以看到 TypeScript 版本(我不会说是移植,因为它需要符合习惯),因为我喜欢 TypeScript,Node 很重要。当然,Python 非常受欢迎。
我相信 Embabel 可以像 Spring 一样成为一项重要的技术,同时扩展 Spring 生态系统的力量。
InfoQ:开发者在哪里可以找到 Embabel 的示例和学习资源?
Rod Johnson:我们正在努力改进示例。embabel存储库是探索的起点,里面包含了入门说明。我们正逐渐将示例移动到embabel-agent-examples子目录中,编码智能体也可以作为示例,它有自己的存储库,位于https://github.com/embabel/embabel-coding-agent。
我们计划将编码智能体和旅行规划器等示例发展到不仅对学习 Embabel 的开发者有帮助,而且能真正有用的地步。我肯定可以看到其中的一些会凭借自身的力量成为有趣的开源项目。
原文链接:
https://www.infoq.com/news/2025/06/introducing-embabel-ai-agent/
评论