Java助力Agentic AI应用开发:开发者须知

3 阅读9分钟

智能代理AI重塑软件世界,Java生态系统迎来变革。MCP、LangChain4j、Quarkus和OpenTelemetry等开源项目为Java构建智能代理AI应用奠定基础。Java在并发性、稳健性和可观测性方面优势明显,适合构建可扩展的生产级AI应用。

译自:Java for Agentic AI App Development: What You Need To Know

作者:Daniel Oh

过去一年,软件世界因智能代理(agentic AI)的兴起而发生了重塑——这些应用由具备决策、推理和长期交互循环能力的智能、自主代理驱动。从 Copilot 到 AI 原生后端,这类新型软件正迅速成为主流。

尽管大部分关注都集中在 PythonJavaScript 上,但 Java 生态系统中一场悄无声息的变革正在展开——它使 Java 开发者能够使用熟悉的工具和强大的新库来构建可扩展的、生产级别的智能代理 AI 应用。

假设你是一名 Java 开发者,想知道如何在不放弃你的技术栈的情况下参与到这场变革中。好消息是,Java 不仅适用于智能代理 AI,而且正成为其中不可或缺的一部分。

在本文中,我将探讨:

  • 为什么 Java 非常适合智能代理 AI
  • 智能代理应用的不同之处
  • 推动这种转型的关键开源项目,包括 模型上下文协议 (MCP)、LangChain4j、QuarkusOpenTelemetry (OTel)
  • 如何入门的高层视图

为什么是 Java?为什么是现在?

智能代理 AI 应用是长期存在的、有状态的,并且通常涉及跨 API、大型语言模型 (LLM)、数据库和用户交互的编排。它们需要:

  • 强大的并发性,用于处理后台作业或长时间运行的任务
  • 生产环境中的稳健性和可观测性
  • 安全性、性能以及与企业系统的集成

这些正是 Java 擅长的领域。现代 Java 及其不断发展的 JDK 特性(例如,虚拟线程)、云原生框架和成熟的工具,可以构建快速、可维护且安全的 AI 原生软件。

更重要的是,企业组织已经在 Java 中运行着庞大的系统。随着智能代理 AI 准备增强或嵌入到现有平台中,保留在 Java 生态系统中可以减少集成摩擦。Java 开发者不需要重新发明轮子;他们只需要新的组件来插入到他们已建立的开发流程中。

智能代理 AI 应用有何不同?

在深入研究工具之前,重要的是要了解智能代理 AI 应用与传统的 Web 或移动应用有何不同。智能代理 AI 系统的独特之处在于,它们从根本上是目标驱动的,而不仅仅是对单个请求做出响应。它们被设计为维护内部状态和记忆,使其能够跟踪长期进展和上下文。它们的操作特点是具有复杂的推理和规划能力,超越了简单的反应式逻辑。这些系统经常集成语言模型来指导其决策过程,从而实现更细致和智能的动作。

此外,它们的交互是通过多步骤工作流程展开的,这些工作流程通常包含各种工具的使用以及至关重要的人工反馈要素,以改进其性能。这意味着你的应用不仅仅是提供内容——它还在持续地思考、计划和交互。这种转变需要新的抽象和运行时模式,其中许多模式现在正在 Java 生态系统中涌现。

技术栈:MCP、LangChain4j、Quarkus 和 OpenTelemetry

几个开源项目正在为基于 Java 的智能代理 AI 奠定基础。以下是四个关键参与者的介绍:

1. MCP:LLM 应用的智能代理运行时

MCP 是一个新兴的来自 AI 原生应用社区的开源项目,提供专门为智能代理计算设计的运行时。其核心重点是使 LLM 应用的创建具有持久性、可组合性和易于检查性。

借助 MCP,开发者可以构建配备有版本控制的记忆和明确定义的目标的长期存在的代理。该项目还允许使用结构化格式精确定义工具和动作。此外,MCP 利用事件溯源,为应用操作提供全面的可追溯性。最后,它支持在各种环境中部署这些应用,从本地开发设置到强大的云基础设施。

MCP 通过为智能代理工作负载提供固化的执行环境、存储层和生命周期管理来补充 LangChain4j。将 MCP 视为基于代理的应用的“操作系统”——对于需要可重复性、可观测性和规模的团队非常有用。

2. LangChain4j:Java 的语言模型编排

受到 Python 中原始 LangChain 项目的启发,LangChain4j 将 LLM 编排原语引入 Java。它抽象化了 LLM 并提供了基本的构建块。这些构建块促进了代理和工具的创建,实现了有效的内存管理,提供了强大的提示模板功能,支持复杂的链式思考推理,并允许基于 LLM 的文档检索。

LangChain4j 支持主要的 LLM 提供商,如 OpenAI、Azure、Cohere,以及通过 Ollama 或 Hugging Face 提供的本地模型。它专为符合语言习惯的 Java 开发而设计:强类型、注解驱动的配置以及与 Spring 和 Quarkus 等依赖注入 (DI) 框架的简单集成。

如果你想构建能够使用自然语言思考、计划和交互的代理,LangChain4j 是你的首选编排层。

3. Quarkus:云原生 Java 运行时

Quarkus 是一个 Kubernetes 原生的 Java 框架,针对容器、微服务以及现在的 AI 工作负载进行了优化。Quarkus 具有超快的启动时间、低内存使用率以及通过 GraalVM 进行的本机编译,使 Java 非常适合部署可扩展的 AI 代理。

Quarkus 最近的扩展现在为几个关键领域提供了强大的支持。它们通过 LangChain4j 等强大的库实现 LLM 集成。此外,这些扩展还有助于反应式工作流程和高级事件驱动编程。开发者还可以受益于诸如实时重新加载和 Dev UI 等功能,这些功能简化了 AI 模型的实验过程。最后,这些扩展提供了全面的容器原生工具,可以有效地在 Kubernetes、Knative 或函数即服务 (FaaS) 环境等平台上部署和执行代理。

将 Quarkus 视为 AI 代理可以在其上生存、扩展并连接到外部世界的“平台”。

4. OpenTelemetry:可观测性框架

OpenTelemetry (OTel) 由于这些系统固有的复杂性和不确定性,为观察由 LLM 驱动的智能代理 AI 应用提供了显著的好处。与具有可预测执行路径的传统应用不同,AI 代理通常涉及多步骤、动态的工作流程、工具使用和迭代推理。

OTel 的跟踪功能在这里尤其有利,它允许开发者可视化代理的整个“思考过程”和执行流程,跟踪不同模块之间的交互、LLM 调用、外部 API 使用,甚至人工反馈循环。这种端到端的可见性对于调试意外行为、识别瓶颈以及了解代理为何做出特定决策或未能实现目标至关重要。

此外,OTel 的指标和日志收集的标准化方法提供了对 LLM 交互的性能和成本的关键见解。开发者可以捕获特定指标,例如令牌使用情况、LLM 调用的延迟、错误率和资源消耗(例如,GPU 使用率),这些对于优化性能和运营支出至关重要。

OTel 的供应商无关性确保了无论选择哪个特定的 LLM 提供商或可观测性后端,工具Instrumentation 始终保持一致。这种标准化在快速发展的 AI 领域中非常宝贵,可以防止供应商锁定并促进不同框架和工具之间的互操作性,最终为复杂的 AI 系统实现稳健的、生产级别的可观测性。

这一切如何结合在一起

基于 Java 的智能代理 AI 堆栈使用 Quarkus、LangChain4j、MCP 和 OpenTelemetry

来源:Daniel Oh, Red Hat。

Java 并不是构建 AI 代理的唯一语言,但当现有基于 Java 的系统投资或对生产级可观测性、强大的线程功能和高性能有关键需求时,它成为一种战略选择。这包括受监管的、高合规性环境,尤其是在 Kubernetes 或无服务器架构等平台上大规模部署代理时。

这正是这一切如何结合在一起的: 基于 Java 的智能代理 AI 堆栈可以利用 Quarkus 等运行时来实现云原生微服务;利用 LangChain4j 库来实现无缝的 LLM 编排、内存管理和复杂的操作链接;并集成到 MCP 中以自主执行外部工具来构建智能代理 AI 应用。

Quarkus LangChain4j 集成(扩展)还可以通过注入 AI 服务来增强现有的企业服务(例如,REST API、数据库事务、事件流),从而实现从原型到 Java 生态系统中稳健的生产部署的平稳过渡。为了观察这些复杂的 AI 注入应用,OTel 变得非常宝贵;它为跟踪代理的多步骤、动态工作流程、捕获 LLM 交互(如令牌使用和延迟)的基本指标以及整合日志提供了关键框架。这种架构提供了对代理复杂推理、工具利用和整体性能的无与伦比的洞察力,这对于调试和优化此类智能系统至关重要。

最终,由于智能代理 AI 超越了仅仅复杂的提示,从根本上涉及围绕智能决策编排真正的软件,因此 Java 成为在全球范围内编排这些复杂软件系统的首选工具之一,使其通过 OTel 增强的生产级可观测性功能变得不可或缺。

最后的想法

软件的未来是智能代理,而未来不属于任何一种语言。Java 凭借其无与伦比的生态系统和日臻完善的 AI 库,在为下一代智能、自主应用提供动力方面具有独特的优势。

如果你是一名 Java 开发者,现在是探索这种转变的时候了。你已经了解了困难的部分——并发性、架构和部署。借助 MCP、LangChain4j、QuarkusOTel 等工具,AI 原生堆栈也正在变成 Java 原生。

智能代理 AI 不仅仅适用于初创公司或研究人员。它适用于所有人。在 Java 中,它已经发生了。