弃 Python 拥抱 JVM,Spring 之父 20 年后再造“革命性框架”:我从未如此确信一个新项目的必要性

B站影视 内地电影 2025-06-24 16:40 1

摘要:如今,随着生成式 AI 席卷各行各业,软件开发范式正面临新一轮重构。与此同时,Python 凭借其强大的生态系统,在这场 AI 浪潮中占据了主导地位。而此时,Johnson 再次站了出来。他亲手打造并开源了一个全新的项目——Embabel,这是一个专为 JVM

在 Java 世界,Rod Johnson 是一个无法忽视的名字,作为 Spring 框架的缔造者,他曾深刻改变了企业级 Java 应用的开发方式。

如今,随着生成式 AI 席卷各行各业,软件开发范式正面临新一轮重构。与此同时,Python 凭借其强大的生态系统,在这场 AI 浪潮中占据了主导地位。而此时,Johnson 再次站了出来。他亲手打造并开源了一个全新的项目——Embabel,这是一个专为 JVM 生态设计的 AI 智能体(Agent)框架,旨在为企业级 AI 应用提供坚实基础,弥合生成式 AI 的“承诺”与“现实”之间的巨大鸿沟。

“自从我创立 Spring 框架以来,我从未如此坚定地相信一个新项目的必要性。” Johnson 表示。“我真心认为,Embabel 有潜力成为 JVM 世界中的一个关键项目。我不仅希望它追上 Python 生态,更希望借此构建最强的 Agent 模型,释放真正的商业价值。”

作为一个开源项目,Embabel 和 Spring 一样采用的是 Apache 2.0 协议,目前已在 GitHub 上公开:https://github.com/embabel/embabel-agent

Spring 之父为何重构 AI 应用基础?

“九成可用”相当于“完全没用”,GenAI 不该止步于惊艳。

Rod Johnson 不仅是 Spring 创始人,更是推动现代企业级 Java 编程范式变革的关键人物。Spring 框架的诞生颇具传奇色彩,它最初源于 Johnson 撰写的一本书——《Expert One-on-One J2EE Design and Development》。这本书传递了一个明确的信息:“亲爱的 Java 企业开发者们,你们的痛苦到此为止了,你们再也不需要 EJB 了。”

当时的 EJB 开发流程繁复至极,仅实现一个 Hello World 就需要准备多个 XML 文件和类接口。所以 Spring 一出现就彻底改变了 Java 企业开发,并迅速成为了 Java 生态中最成功、最持久的开源项目之一。

Spring 作为开源框架已走过二十余年,依然活跃在全球无数企业的系统中,而 Johnson 也始终没有远离这个社区。他最新关注的技术焦点,则是生成式 AI。

“我认为,这是我们这个行业自互联网以来最重要的技术,”Johnson 在一次访谈中表示,“它不是一个可以忽视的东西,我必须深入理解它,也要尽我所能让它变得更有用。”

但生成式 AI 这项技术的“承诺”和现实之间存在着巨大的差距。他回忆起两三年前第一次使用 ChatGPT 时的震撼:“你居然可以和这个东西对话!”然而,几年过去了,我们在企业场景中其实并没有看到太多真正的成功案例。

“生成式 AI 在某些场景表现出色,比如个人助理。大约 90% 的回答都很不错,但 10% 完全不靠谱。”Johnson 强调,对于企业应用而言,这“10% 的错误”意味着系统的不可信,甚至是无法使用。“你实际上是在用一个‘九成时间有效、一成时间无效’的东西去构建系统,从效果上看,它就等于‘完全没用’。因为业务应用容不得这 10% 的错误。”

不仅如此,它“10% 的失败”还是设计上的必然结果。生成式 AI 是一种随机的、非确定性的系统,它给同一个提示生成的结果也会有所不同。这对应用开发者提出了新的挑战:“你要处理极其不可靠的系统、高失败率、非确定性行为,甚至还要与自然语言交互。”与此同时,一些 20 年前就遇到过的经典问题也依然存在——如何访问企业数据?系统记录源(system of record)在哪里?事务如何管理?系统如何扩展?

在 Johnson 看来,解决这一切问题,JVM 社区具备天然优势。“我觉得 JVM 和 JVM 社区,在让这些事情‘变得有用’方面拥有巨大的潜力。”

Johnson 的这番判断并非没有实战经验支撑。在过去 10 到 15 年里,他使用过包括 Scala、Node 、TypeScript 和 Python 在内的多种语言,尤其是在 2019 年真正开始接触 AI 领域(不是 Gen AI)后,写了大量 Python 代码。然而,当他认真思考如何真正把生成式 AI 用在企业系统中时,他发现——“解决这些问题所需要的技能,JVM 社区比 Python 社区更加具备。”

尽管 Johnson 承认 “Python 是一门很棒的语言,也非常容易上手”,他也坦言:“我不会说我‘热爱’ Python,但我很庆幸自己对它很熟练。”他甚至会忍不住用 Python 去重写复杂的 Bash 脚本,让维护变得更轻松。

但说到构建复杂的企业级软件系统,Python 并不是一个特别优秀的语言。“比如它对可见性(visibility)的支持几乎没有,泛型(generics)也很原始。”更重要的是,企业系统通常要集成各种已有的代码资产,而这些资产绝大部分是基于 JVM 和 Java 的,而不是 Python 的。所以,这也让他下定决心:“如果我们要填补 GenAI 的承诺与现实之间的鸿沟,让它真正对企业有用,JVM 必须发挥作用。”于是,Embabel 应运而生了。

迟早,AI 能力将会成为应用开发中的“新常态”。阅读文档后,我的第一印象是:它将有望像当年 Spring 简化 Java 开发那样,简化 AI 驱动应用的开发过程。非常期待它的发展。

Embabel 的架构之道

在 Rod Johnson 看来,MCP 是试图填补这个鸿沟的一种尝试。“作为一个服务器平台,它在理论上是语言无关的,这意味着大家可以跨不同平台共享功能。”但 MCP 只是“解决方案的一部分”,“它并没有解决很多实际问题,比如 discoverability(可发现性)、security(安全性)等。”

针对当下流行的“工具堆砌型” Agent 方案,Johnson 更是毫不掩饰自己的质疑:“我并不认同那种观点:只要给一个 LLM 一堆工具,它就能解决任何问题。”他认为,这不仅会造成巨大的算力和资源浪费,还存在混乱与不可控的结构性风险。“即使是最先进的模型,在面对 200 个工具时,也会迷失方向。”

相比之下,Johnson 更支持“Agentic 模型”的做法——以小提示驱动、精简聚焦的工具集、合理边界控制的架构方式:“这些工具可能来自 MCP,但一定是有限且高效的;也可以接入本地模型,获得隐私与成本上的优势。”在他看来,这种方式才更有可能实现企业级 AI 所需的三大目标:更高的确定性、更低的成本和更强的安全性。

他强调,这些 Agentic 应用并非只与 LLM 对话,它们同样需要与企业的系统记录源、消息总线、已有代码资产深度集成——“这些需求,显然更适合在 JVM 上完成,而不是 Python。”

有趣的是:Embabel 最初其实是以一个 Python 框架的形式起步的,直到我最终得出结论——JVM 更适合构建我认为真正需要的东西,也更适合作为 Agentic 应用的平台。

因此,Embabel 被设计为了一个用于在 JVM 上构建 Agentic 应用的框架,面向所有 JVM 开发者,尤其是使用 Spring 的开发者。

Embabel 基于 Spring AI 构建,并拥抱 Spring 组件模型。但与 Spring AI 不同,Embabel 工作在更高的抽象层之上。

“Embabel 的层级比 LangChain4j 和 Spring AI 要高得多。它建立在这一层级之上,之所以选择 Spring AI,是因为它与 Spring 生态系统的密切关系,但它提供了更高层次的抽象,并引入了独到的理念。代理框架层级在 Python 中已经很常见,但在 JVM 上却非常新。而 Java 要想在企业级及其他领域保持领先地位,就迫切需要它。”

如果说 Johnson 曾经打造的 Spring 框架是在为企业级 Java 提供更好的编程模型,那么 Embabel 的出现就是向着 AI 智能体编程迈出的重要一步。

智能体编程,能否既聪明又可靠?

与 Spring 使用基于依赖项注入与控制反转这一新型编程模型颠覆企业级 Java 类似,Embabel 致力于建立一种编程模型,帮助开发者使用符合生产代码要求的最佳实践来构建智能体,同时继续为智能体追求特定目标、执行工作流任务并自主做出动态运行时决策留出充裕的空间。

确定性似乎一直是 AI 模型难以达成的核心指标。当我们构建应用程序时,习惯于其应用行为具备确定性——换句话说,对于相同的输入与初始状态,我们的代码应当始终产生相同的输出和行为结果。

而大模型的运作方式并非如此。大模型会产生幻觉——有人说,人类不也充满了不确定性吗?但也正是因为存在不确定性,在被赋予自由发挥的创造力时,人类反而能够做出令人意外但却成效出众的成果。

对于基于提示词的简单人类交互循环来说,这种不确定性往往令人头痛,但影响还不算太大。而对于需要在无人交互的前提下采取行动的全闭合 OODA 循环(即观察、调整、决策与行动)的智能体来说,结果的确定性则变得至关重要。

建立对智能体工作流程的信任,要求我们找到一种保证智能体在整个工作流程中实现确定性的可行方法。简单来讲,我们既希望智能体拿出令人眼前一亮的开发成果,又要确保对工作的推进方式保留一定的知情权与控制权。为此,Embabel 采用了 GOAP 方法。

这套机制的第一步被称为“Planning Step”,是 Embabel 最有特色的一环,并且是可插拔的。比如在 Crew AI 中,执行流程是顺序嵌套的;在 LangChain 或 LangGraph 中,你需要手动搭建状态机。用状态机去定义流程,系统只能做你预先设想过的事。要想做出调整或扩展,就需要改动很多逻辑,每次都得重新跑一遍。但 Embabel 不同,它工作在一个更高的抽象层上。

Embabel 还引入了“行为(Actions)”“目标(Goals)”和“智能体(Agents)”的语义建模,每个目标和行为都有清晰的前置条件和预期后置条件。这使得 Embabel 能够使用非 LLM 的 AI 算法进行“规划”。它采用的是一种路径规划算法(path finding algorithm),用于从当前世界状态出发,寻找通往目标的路径。这样的机制其中一个优势是:系统可以执行那些你没有显式编程指令的操作,但前提是这些操作是“安全的”。

“你给它相同的世界状态和目标,它每次都会生成同样的计划。”Johnson 表示,“而不像 LLM 一样,背后藏着 3000 亿个参数,让你根本无法解释它为何那样决策。”

这一机制的另一个亮点在于弹性执行与动态重规划:它可以围绕失败情况来重新规划。当流程中某个行为失败,比如尝试提取信息失败、数据源访问异常,系统会自动切换路径寻找替代方案,而无需显式写出复杂的 if-else 判断逻辑。这种“围绕失败自动重规划”的能力,让 Embabel 既具备传统工程体系的可控性,也拥有现代 AI 系统的柔性应对力。

最好的 Agent 框架?!

AI 智能体的构建尚处于起步阶段,Embabel 项目同样处在萌芽期。但 Johnson 的目标并不止于 JVM。他直言:“我们并不是想做 JVM 上最好的 Agent 框架,而是想做最好的 Agent 框架。”

目前 Embabel 项目 95% 使用 Kotlin 语言编写,同时亦支持用纯 Java 代码开发智能体。

如果你是 JVM 开发者,使用 Embabel 启动一个运行中的 AI Agent,只需一分钟。

另外几个点也很有意思,可能会让人感到惊喜——Embabel 与 Spring 紧密集成。如果你是一个 Spring 开发者,使用 Embabel 创建一个 Agentic 流程会像写一个 Spring MVC 应用一样简单。“毕竟归根结底,这一切都是组件抽象,差别只是你用这些组件来做什么。”

而且在模型调用的可移植性方面,因为 Embabel 是建立在 Spring AI 的基础之上的,这也是为什么它有着非常强的 MCP 支持——得益于之前社区在 Spring AI MCP 上的出色工作,所以 Embabel 能够在 Spring 的基础上构建这些能力。并且,除了 MCP 支持之外,Embabel JVM 代理框架现在还实现了 Google A2A 服务器。

Spring AI 正迅速成为企业领域的 MCP(Model-Connected Platform)首选。它是目前这一方向上最值得关注的方案,结合了 Spring Security 实现认证与信任机制,以及 Actuator 提供可观测性能力。更关键的是,大多数企业本就使用 Spring,因此切换到 MCP 模式变得异常顺滑。

在 Embabel 框架中,可测试性被视为一项基本能力。得益于与 Spring 提供的强大能力,开发者不仅可以像测试 Spring 服务一样对每个 Action 方法进行单元测试,还可以验证提示词是否包含正确的数据元素、是否调用了合适的 MCP 工具、是否指定了超参数等。

Embabel 另一个重要理念是对 LLM 使用的“分级控制”。开发者可以定义哪些工具可暴露给模型使用、哪些只能只读访问,并在运行时动态验证是否具备执行权限。以编码 Agent 为例,文件系统的访问权限被明确划分为读取和写入两类。模型在执行写入操作前,会先验证例如项目是否成功构建等前置条件,只有在满足要求时才允许真正执行写入。这种设计既保证了流程的可控性,也提升了系统整体的安全性与稳定性。

为了进一步提升 LLM 生成内容的可控性,Embabel 引入了“意图完整性链(Intent Integrity Chain)”的设计机制。“确保在流程的最后,生成的代码与我们最初的意图完全一致。”

整个流程链条从 prompt 构建开始,依次经过规范生成、规范审核、测试用例编译,最终进入代码生成阶段。每一个环节都可以嵌入人工审查或自动化验证机制,测试集则以只读形式锁定预期行为,确保结果可控。

LLM 的角色则被聚焦在“不断尝试通过测试”这一任务上——它需要反复生成代码,直到全部通过测试为止。“一旦达成这一点,我们就能 100% 确认生成的代码与 prompt 所表达的意图一致,或至少与我们审核过的规范保持一致。”

“我真心相信,AI 是生产力的游戏规则改变者。”Johnson 表示,“不论你是开发者还是市场人员,都应该被 AI 增强。我们的理念是:最大限度增强人的能力,而不是依赖任何商业化或封闭的 AI 工具。”

参考链接:

https://www.youtube.com/watch?v=3Qtc0yQTsyw&list=PLqcGn3yCaveQN33xDe2goHlQrUE1TuHlF&index=1

声明:本文为 InfoQ 翻译整理,不代表平台观点,未经许可禁止转载。

今日好文推荐

印度裔 AI 负责人删掉 Karpathy 90%遗留代码,马斯克 Robotaxi 终上线!用户体验:不要小费,还可能倒给你钱

AI正在淘汰“中间层”!昆仑万维方汉:要么冲进前10%,要么学会“向下兼容”

月烧4万元,两工程师用Claude Code 跑出15人团队效率:值不值全网吵翻了!

53万美金训练出顶级AI?揭秘MiniMax的「省钱」绝招

6 月 27~28 日的 AICon 北京站将继续聚焦 AI 技术的前沿突破与产业落地,围绕 AI Agent 构建、多模态应用、大模型推理性能优化、数据智能实践、AI 产品创新等热门议题,深入探讨技术与应用融合的最新趋势。欢迎持续关注,和我们一起探索 AI 应用的无限可能!

来源:极客邦科技

相关推荐