×

10 个基于 Java 的生成式 AI 工具和框架

hqy hqy 发表于2025-04-27 05:13:34 浏览4 评论0百度已收录

抢沙发发表评论

Python 开发人员没有理由应该享受所有的乐趣。以下是 10 种流行的基于 Java 的工具,用于将人工智能集成到您的 Java 应用程序和工作流中。

Java 并不是大多数程序员在开始涉及人工智能 (AI) 和机器学习 (ML) 的项目时首先想到的语言。许多人首先转向 Python,因为有大量基于 Python 的框架和工具用于 AI、ML 和数据科学。

但 Java 在 AI、机器学习和生成式 AI 革命中也占有一席之地。对于许多欣赏其技术优势和大型生态系统的开发人员来说,它仍然是首选语言。虚拟机速度如此之快,设计精良,以至于其他语言都借用了它。甚至一些 Python 爱好者也使用 Jython 运行他们的代码以享受 JVM 的速度。

Sun 和 Oracle 已经交付了 30 年的创新流,Oracle 和 OpenJDK 项目继续添加新功能 ,大多数情况下没有破坏旧代码。Java 传统上对稳定性和性能的关注缓慢但稳定,这意味着有很多不错的选择来处理 AI 和机器学习。

对于需要将 AI 集成到其应用程序和工作流程中的基于 Java 的团队来说,有许多不错的选择。Python 程序员没有理由应该享受所有的乐趣。

Spring AI

多年来,Spring 为创建从 Web 应用程序到微服务的任何内容提供了备受推崇的基础。现在 ,Spring AI 旨在通过提供一组组织和定义流程的抽象,使将任何类型的 AI 引入此环境变得更加简单。

想要与 Anthropic 和 OpenAI 等主要提供商交互的开发人员可以使用 Spring AI 抽象快速集成模型,以处理聊天完成或审核等任务。支持所有主要的模型提供程序,包括商业和开源。

想要将数据本地存储在向量数据库中的开发人员可以直接插入十几个选项中的任何一个,例如 Milvus 或 Pinecone。Spring AI 将数据编组到嵌入中或从嵌入中传出,以便开发人员可以在数据库存储纯向量时处理 Java 对象。

Spring AI 还具有用于各种任务的功能,这些功能正迅速成为应用程序开发中的标准。 聊天对话可以自动存储以供以后恢复。AI 模型评估功能支持元评估模型,以减少或至少标记幻觉。

LangChain4j

许多应用程序希望将矢量数据库LLMs集成到一个门户中。很多时候,一个LLM是不够的。假设生成式 AI 模型生成了一些文本,然后图像生成LLM对其进行了说明。在管道的开始和结束时,AI 会进行审核,以确保没有人被冒犯。

LangChain4j 是 LangChain 的 Java 优先版本,LangChain 是 JavaScript 和 Python 社区中的常用框架。该代码充当统一开发人员需要集成的所有不同部分的纽带。 数十种不同的模型和数据存储与一些标准的强大抽象捆绑在一起。

Deeplearning4J

正在处理 AI 分类项目的 Java 开发人员可以求助于 Eclipse Deeplearning4J (DL4J) 生态系统,该生态系统支持各种机器学习算法。输入原始数据,输出一个经过全面调整的模型,随时可以做出决策。

该系统的核心是 libnd4j,这是一个 C++ 库,可确保快速执行核心机器学习基元。它由 nd4j 和 Samediff 驱动,这是两个图形、NumPy 和 TensorFlow/PyTorch 作捆绑包,它们可以链接在一起以实现机器学习算法。数据流由 Apache Spark 定义。

虽然整个框架由 Java 统一,但 Deeplearning4J 的许多移动部分可能用不同的语言编写。该管道旨在以多种语言(如 Kotlin 或 Scala)进行实验,这些语言可以直接与 JVM 一起使用。Python 算法可以直接在 Python4j 中运行。

该项目是开源的,其文档中有许多很好的示例 ,可以释放其组件的强大功能。

Apache Spark MLib

长期以来,处理大型问题集的数据科学家一直转向 Spark,这是一个旨在支持大规模数据分析的 Apache 项目。MLib 是针对机器学习算法优化的额外层。

数据可以存储在任何 Hadoop 样式的存储位置。这些算法可以用任何主要语言进行编码。Java、Scala 或任何以 JVM 为中心的语言都是天作之合。但 Spark 用户也添加了使用 Python 或 R 的胶水代码,因为它们在数据分析中非常受欢迎。

MLib 之所以吸引人,一个重要方面是它为许多经典机器学习和数据分析算法(决策树、聚类、交替最小二乘法和数十种其他经典算法)提供的预构建例程。大型计算(如海量矩阵的奇异值分解)可以分布在多台机器上,以加快一切速度。许多开发人员根本不需要实现太多代码。

Spark 通过专为迭代流程设计的管道处理其余工作。MLib 的开发人员非常注重速度,以至于吹嘘它通常比 MapReduce 快 100 倍。这才是真正的吸引力。

Testcontainers

大部分LLM生态系统都在 Docker 容器内运行,因此帮助处理所有这些容器的工具非常有用。Testcontainers 是一个开源库,用于启动、关闭和管理容器的 IO 和其他通道。这是与堆栈集成LLMs的最简单方法之一。如果您需要数据库、服务总线、消息代理或任何其他常见组件,Testcontainers 有许多预定义的模块可供启动。

GraalPy

是的,它看起来像是 Python 代码的东西,确实如此。GraalPy 是 Python3 的可嵌入版本,经过优化,可以更轻松地在 JVM 中运行 Python 代码。Java 程序员可以利用所有各种 Python 库和工具。GraalPy 声称 Python 在 JVM 中的执行速度最快,是更大的 GrallVM 项目集合的一部分,旨在部署和维护虚拟机中的堆栈。

Apache OpenNLP

从文本中学习需要大量的预处理。此类文本需要清除无关的排版命令,组织成多个部分,并分成小块,以便算法可以开始从模式中提取含义。这就是 Apache OpenNLP 的用武之地,它有许多基本算法,可为机器学习奠定坚实的基础。

这些工具涵盖从低级细分和分词化到更高级别解析的各种范围。语言检测或命名实体提取等附加功能已准备好根据需要进行部署。OpenNLP 的 JAR 文件中包含超过 32 种语言的模型,或者您可以开始训练自己的模型。

该工具与 Java 生态系统完美集成。UIMA 或 Solr 等项目已经利用 OpenNLP 来解锁自然语言文本中的模式。与 Maven 和 Gradle 集成使启动变得简单。

Neo4j

当应用程序调用 RAG 数据存储时,Neo4j 是可以处理工作负载的图形数据库。Neo4j 已经支持各种图形应用程序,例如欺诈检测或社交网络管理。其坚实的 Java 基础使您可以轻松地将 RAG 应用程序和图形数据库与 Java 堆栈集成到一个称为 GraphRAG 的统一数据存储中。

Stanford CoreNLP

Stanford CoreNLP 来自 Stanford NLP Group,是另一个自然语言例程的集合,可以处理大部分分解大块文本的杂务,以便将其提供给机器学习算法。它可以做任何事情,从分割到规范化数字或日期等标准词性。

开发人员希望 CoreNLP 具有更高的准确性和预构建选项。例如,用于情绪分析或共指检测的模型已准备就绪。更复杂的解析算法和策略更容易使用库的高级功能实现。

该软件包很容易包含在 Gradle 或 Maven 中。九种主要语言的模型已准备就绪。

Jllama

有时,在您控制和监督的 JVM 中运行模型是有意义的。也许硬件更便宜。也许隐私和安全更简单。与信任云中遥远角落中的某个遥远 API 相比,LLM 在本地启动具有许多优势。

Jllama 将加载许多最流行的开源模型并使用它们运行推理。如果您的应用程序需要聊天、提示完成或兼容 OpenAI 的 API,Jllama 将提供响应。该代码还将下载并启动任意数量的预量化模型 ,如 Gemma、Llama、Qwen 或 Granite。

该代码利用了一些最新的 Java 功能,如 Vector API 和 SIMD 感知扩展,可以加快推理的LLM并行执行速度。该代码还将工作负载划分为多个部分,这些部分可以分布在集群中的可用计算资源周围。