Java开发者:构建AI智能体,多条路径任你选!

52 阅读15分钟

Java在企业AI开发中挑战Python。Azul预测Java在1.5-3年内或超越Python,因其可扩展性、性能及新框架。Python主导研究,Java更适企业生产。

译自:Java Developers Get Multiple Paths To Building AI Agents

作者:Darryl K. Taft

今年早些时候,我写了一篇关于 Java 将很快超越 Python 成为 AI 应用开发首选编程语言的文章。

当时,Azul Systems 的副首席技术官 Simon Ritter 告诉我,根据 Azul 的研究,包括对 Java 开发者进行的调查,Java 可能会在一年半内侵蚀 Python 在 AI 开发方面的领先地位。事实上,Ritter 说 2025 年将是 Python 在 AI 开发领域占据主导地位的最后一年。

那么 2026 年我们能期待什么呢?在我对这个主题进行研究的过程中,我注意到我的老朋友、来自 RedMonk 的 James Governor 撰写了一篇关于 Java 和智能体系统开发的重要文章。几天前,在我们自己的 TNS 网站上,我认识的另一位敏锐的分析师 Michael Coté 写了一篇文章,题为“你的企业 AI 战略必须从 Java 开始,而不是 Python。” 因此,我知道我走在了正确的轨道上。

Ritter 在最近的一次采访中告诉 The New Stack:“在开发者圈子里众所周知,Java 更适合开发企业 AI 应用,因为它具有更好的可扩展性和性能,但目前 Python 在其库和其他支持 AI 开发的基础设施方面超越了 Java。”“然而,企业正在意识到 Java 是企业级部署的更好选择。我们可能会在未来 18 个月到三年内看到 Java 超越 Python。”

智能体 AI 时代的 Java

现在,随着我们进入智能体 AI 时代,多个 Java AI 智能体框架和库——例如 EmbabelKoogLangChain4j 等——已经出现,以支持 Java 开发者构建 AI 应用。

然而,问题仍然是 Java 能否在 AI 开发方面追上 Python。

Azul 的 Ritter 在最近的一次采访中告诉 The New Stack:“我个人认为,Java 框架的日益普及将有助于缩小 Python 和 Java 在 AI 智能体领域的使用差距。”“尽管 Python 是 AI 开发中非常流行的语言,但核心技术,如 LLM [大型语言模型] 和 Torch,主要用 C 和 C++ 编写。Python 因 PyTorch 等库的广泛可用性及其感知到的易用性而变得流行。”

然而,“随着 LangChain4j 等更多 Java 框架和库的开发,我认为开发者会发现 Java 提供了额外、更具吸引力的优势,”Ritter 说。“Java 在可扩展性和性能方面表现出色,尤其是在处理多个并发执行线程方面(这是 Python 难以解决的问题)。随着 AI 智能体使用量的指数级增长,性能等因素将变得越来越重要。”

一线生机

Java 在这场未宣之战中有一线“生机”。有人说,不仅仅是一线生机。

Forrester Research 的分析师 Andrew Cornwall 告诉 The New Stack:“Java 最终有机会在企业级 AI 应用方面赶上 Python,但我不认为这会明天发生。”

但他指出:“AI 研究人员在 Python 中的舒适度仍然高于 Java,因此 Python 将首先看到最前沿的研究。然而,企业发现 Java 更容易集成。Java 拥有更 robust 的云生态系统和更成熟的工具。目前,行业正在努力跟上 GenAI [生成式 AI] 的发展,因此使用像 Python 这样的动态类型语言构建会更快。一旦速度放缓,模式变得众所周知,Java 的框架就会可用,并且可能更受企业青睐。”

The Futurum Group 的分析师 Brad Shimmin 表示,他不认为 Java 会超越或“取代”Python 成为数据科学的首选语言。

“老实说,HaskellMojo——Python 的扩展——更有可能做到这一点。正如我们一次又一次看到的,开发者选择 a) 他们熟悉的和 b) 他们认为能最有效地完成工作的,”他说。“我认为更多开发者考虑用 Python 而不是 Java 来构建 AI 成果,仅仅是因为关联性和熟悉度。如果你比较支持库的 GitHub 项目,就会发现这一点。目前,LangChain 的 star 数比 LangChain4j 多大约 1,132%。这是否意味着 Python 更好?当然不是。我认为,考虑到用 Java 编写关键任务代码的开发者数量,准备好 LangChain4j 和 Crew4J 等工具至关重要。坦率地说,很多 Python 代码为了提供关键任务性能、安全性等而被重构为 Java 和 Scala。”

但我们谈论的是企业。

当被问及是否相信 Java 能够超越 Python 进行 AI 应用开发时,LangChain4j 的创建者兼 Red Hat 高级软件工程师 Dmytro Liubarskyi 回答说:“当涉及到将 LLM 集成到企业应用中时,我相信它可以。Python 可能会继续作为研究、实验和原型开发的主导语言。然而,Java 在企业环境中的生产使用方面具有极好的优势。”

此外,Liubarskyi 补充道:“Java 长期以来一直是构建大型企业系统的实际标准,我相信它也将成为企业 AI 和 LLM 集成的首选语言。”

Embabel:面向 JVM 和企业

Embabel 的创建者,也是广受欢迎的 Spring Framework 的创建者 Rod Johnson 表示,他认为 Java 更适合在企业中构建 AI 应用。

Johnson 告诉 The New Stack,他之前主要使用 TensorFlowPyTorch 在 Python 中做了很多机器学习 (ML) 相关的工作,并训练神经网络。

“所以,我决定看看构建智能体的理想框架会是什么样子,这会很有趣。我很快得出结论,对于我想做的事情,以及我认为正在释放现有业务价值的事情,JVM [Java 虚拟机] 将是一个更好的选择,因为你希望能够将这种功能从你已有的有价值的核心业务功能中发展出来,而不是添加一个不相关的、只是与其通信的东西,”他说。

Johnson 补充说:“Python 非常适合数据科学,但当你在启用 GenAI 业务应用时,你谈论的不是这个。你谈论的是应用开发,传统的应用开发,而不是数据科学或纯粹的 ML,而 Java 一直是构建这类应用最流行的语言,这背后有很多原因。因此,对我来说,在 JVM 上构建它,在 Spring 上构建它,在人们已经拥有的功能和集成之上构建它,并创造出对开发者来说非常容易采用的东西,这是非常有意义的。”

Spring Boot 优势

事实上,Johnson 说,如果开发者了解 Spring Boot,他们可以在不到五分钟的时间内开始使用 Embabel。

Johnson 在博文中提到,Embabel 是一个最初用于 JVM 的智能体框架,其目的不仅是为了追赶 Python 智能体框架,更是为了超越它们。

Johnson 告诉 The New Stack,随着这个领域趋于成熟,人们意识到关键的相邻性不是调用你的 LLM 或数据科学。关键的相邻性是你现有的业务功能和你现有的开发者技能组合。他指出,企业中现有的开发者技能组合是 Java。

“所以,当你这样思考时,在一个 GenAI 应用中,你通过 HTTP 调用 LLM。它不是在进程中。你不需要 Python 拥有什么神奇的东西来做这件事。它通常是一个非常简单的 HTTP 调用,”Johnson 说。

更好的编程模型

Johnson 最初创建 Spring Framework 的目的是为企业 Java 提供一个更好的编程模型,现在 Embabel 的目标是为构建基于 JVM 的 AI 智能体实现同样的目标。

Johnson 解释说,在 Python 中,你创建一个状态机;在 Embabel 中,你部署你的动作,框架可以计算出按什么顺序运行这些动作以达到目标。这是框架在使用一种名为“面向目标的动作规划”的规划方法来完成的。

他说:“它的美妙之处在于它既智能又确定性,所以框架能够告诉你为什么它会这样做,如果它再次遇到相同的输入对象,它也会做同样的事情。” Johnson 说,这“绝对是企业中的一个有价值的差异化因素,因为可解释性至关重要。”“确定性至关重要,我相信 Embabel 是唯一一个在保持智能能力的同时,绝对直接专注于此的框架,并且你可以添加更多动作并做更多你没有明确编程的事情。”

为什么选择 Kotlin

Embabel 是用 Kotlin 编写的,这是一种来自 JetBrains 的现代、静态类型编程语言,以其简洁性和与 Java 的互操作性而闻名,因为它面向 JVM。

Johnson 说:“我个人更喜欢用 Kotlin 编程而不是 Java。”此外,“我们觉得用 Kotlin 而不是 Java 开发框架的速度会更快,但我们用 Java 编写了我们大部分的示例应用和相当多的内部应用。”

JetBrains Koog

Koog 是 JetBrains 的 Kotlin 原生框架,用于创建在本地运行、与工具交互并自动化复杂任务的 AI 智能体。JetBrains 创建 Kotlin 作为 Java 的基于 JVM 的替代品,它以其简洁性、空安全特性和与 Java 的完全互操作性而闻名。

JetBrains Koog 的技术负责人 Vadim Briliantov 告诉 The New Stack:“对于许多企业来说,Python 不被认为是生产就绪的语言,尽管大多数现代 AI 工具都是基于它构建的。这使得通常使用 Java 或 Kotlin 等类型安全语言的开发者陷入困境。Koog 有效地弥补了这一差距,为这些开发者提供了一个长期需要的解决方案,并以类型安全的方式将许多‘AI 粘合代码’抽象化,使其远离不一定遵循所有 ML 文献的开发者。”

同时,Briliantov 呼应了 Johnson 关于 Python 与 Java 在基于 LLM 的 AI 方面的观点。

他说:“虽然这看起来违反直觉,但 Python 在 ML 库和工具方面的优势实际上并不适用于基于 LLM 的 AI。LLM 调用本质上只是对某个外部服务的 HTTP 请求。这里没有任何魔法。同时,AI 智能体是一个长时间运行的系统,可能会失败或在另一台机器上重启。一个与你的数据库交互并授权某些用户操作的系统。”

实际优势

Briliantov 断言,Java 在“实际”应用方面比 Python 具有显著优势。

他说:“人们在 JVM 上构建此类系统已有数十年,原因充分。一旦 AI 演示离开实验室,它们就会面临实际限制。例如,它们需要容错。而 Koog 已经通过数据库集成提供了这种容错能力。”

JVM 优势

Briliantov 说,JVM 比 Python 提供了其他重要的优势。

第一个优势是它与现有企业生态系统的集成。他认为,如果你的企业后端已经在 JVM 上,就没有理由为了 AI 而更换技术栈。

他指出,第二个优势是它的类型安全和领域建模不仅可以让你构建更易于维护的代码,还可以构建更可预测和更好的 AI 智能体。

Briliantov 说:“你不需要到处依赖提示工程,你可以将你想要的东西描述为一个数据类;Koog 将保证一个智能体步骤会产生一个符合该形式的结果——LLM 不会偶尔遗漏任何东西。这就像一个范式转变:你只需考虑数据和过程,框架就会强制 LLM 遵循你的类型安全规则。”

Crew4J

Crew4J 是一个基于 Java 的框架,用于构建和管理协作式多智能体 AI 系统。它与 CrewAI 无关。

Crew4J 的创建者 Mahesh Awasare 在一份关于他的开发哲学的声明中说:“我的使命是让 Java 开发者和企业能够使用先进的 AI 功能,而无需强迫他们放弃现有的基础设施和专业知识。”

Awasare 是一名在金融产品公司 Avaloq 工作的企业架构师。他还曾在汇丰银行、花旗银行、瑞士信贷和 Worldline 等其他国际银行和金融机构工作。

Awasare 告诉 The New Stack:“我注意到企业系统是用 Java 编写的,而且 90% 的企业系统很难迁移到 Python 技术栈来利用 AI。所以,我想,为什么不创建一个易于现有实现采用的 AI 智能体开发框架呢。这就是我创建 Crew4J 的原因。”

他说他相信“所有企业系统都在寻求集成 AI,由于它们中的大多数都是 Java,因此对这种框架的需求很高。人们正试图将 Java 实现与 Python 混合以集成 AI,这并不容易。”

然而,Crew4J 使用起来非常简单,只需六步流程

尽管如此,Awasare 说他不认为 Java 会在 AI 开发方面超越 Python。“我不确定它是否会超越,但它会共存吗?绝对会,”他通过电子邮件回复道。

LangChain4j

LangChain4j 是一个开源 Java 框架,它简化了 LLM 和其他 AI 功能与 Java 应用的集成。

它为各种 LLM 提供商和向量存储提供了统一的 API,使其能够轻松地在它们之间切换,只需最少的代码更改。

LangChain4j 的创建者 Liubarskyi 告诉 The New Stack,该库还包括许多用于检索增强生成 (RAG) 管道、智能体和相关模式的开箱即用构建块,允许开发者专注于应用逻辑而不是样板代码。

它专为希望构建生产就绪型 LLM 应用和智能体系统的 Java 开发者而设计。

一切如何开始

2023 年初,Liubarskyi 正在用 Java 开发基于 LLM 的聊天机器人,并很快意识到没有可用的合适库。一切都必须从头开始实现。大约在那个时候,他发现了 LangChain 并想:“我们需要类似的东西,但适用于 Java。” 这个想法成为了 LangChain4j 的基础,甚至启发了它的名称。

他说,尽管有这个名字,LangChain4j 并不是 LangChain 的直接移植。“相反,它结合了 LangChain、Haystack、LlamaIndex 和更广泛社区的想法和概念,以及我们自己的创新,所有这些都适应了 Java 的生态系统和设计原则,”Liubarskyi 告诉 The New Stack。

需求一直非常强劲。在 2023 年秋季的 Devoxx Belgium 大会上展示 LangChain4j 之后,该项目获得了显著的动力,并在所有指标上持续稳步增长。它最近达到了 10,000 个 GitHub star,并在下载量和独立用户方面都显示出持续增长。

社区庞大而活跃,持续不断地有 pull request 和贡献。如今,LangChain4j 被从初创公司到大型企业的各种团队使用。

事实上,围绕 LangChain4j 的讨论引起了 Microsoft 的关注,该公司已投资该项目并帮助增强其安全性。

Microsoft 投资

在一篇题为“Microsoft 和 LangChain4j:安全企业级 Java AI 应用的合作伙伴关系”的博文中,Java 开发者关系首席经理 Julien Dubois 写道:“我们的遥测数据显示 LangChain4j 的采用率显著增长,数百家 Microsoft 客户在生产环境中使用该框架。认识到这项开源计划的重要性,Microsoft 为增强该项目的 Azure 和 OpenAI 集成功能做出了重大贡献。”

Liubarskyi 在一份声明中说:“我们特别感谢 Microsoft 致力于加强库的安全性——他们紧密的合作和彻底的审计流程帮助我们为 Java 中的 AI 开发建立了一个更安全、更值得信赖的基础。”

与其他方案的区别

与此同时,Liubarskyi 表示 LangChain4j 在几个方面与 Embabel、Koog 等有所不同。

他说,他的目标是让 LangChain4j 保持轻量级而又强大。它被有意设计成一个无主见的库,而不是一个完整的框架,这使得它易于与任何 JVM 语言一起使用并集成到几乎任何技术栈中。

他说:“它与流行的 Java 框架和运行时(如 Quarkus、Spring、Helidon、Micronaut、WildFly 和 Liberty)无缝协作。”

LangChain4j 也是该领域最早的库之一,这意味着它有时间成熟。

他补充说:“我们非常重视 API 稳定性,并尽量避免破坏性更改。另一个主要优势是集成的广度:开箱即用,用户可以使用各种 LLM 提供商和向量存储。”

“最后,该库提供了两个不同的抽象级别。开发者可以使用低级 API 以获得最大程度的控制,或者使用更高级别的 AI 服务和智能体以更少的设置获得更多功能。”