Google 发布 Java 版 Agent 开发工具包 1.0 版本
Google ADK for Java 1.0 引入了全新的应用与插件架构、外部工具支持等功能
Google 的 Java 版智能体开发套件(Agent Development Kit,简称 ADK)现已发布 1.0 版本。该版本引入了对多种外部工具的集成、全新的应用与插件架构、先进的上下文工程能力、人机协同(Human-in-the-loop)工作流等特性。
此次新增的支持工具包括:
GoogleMapsTool:提供对 Google 地图数据的访问。UrlContextTool:可直接获取并总结网页内容。ContainerCodeExecutor和VertexAICodeExecutor:支持通过 Docker 容器在本地,或利用 Vertex AI 在云端进行稳健的代码执行。ComputerUseTool:能够操控网页浏览器或计算机(此功能需要集成 Playwright)。
为了增强智能体工具的交互能力,ADK for Java 1.0 引入了两个新的 API:
App类:作为智能体应用的高层容器,用于托管根智能体、保存全局配置并处理插件集成。Plugins:用于定义新扩展的基类。
框架开箱即用的一些插件包括:LoggingPlugin(用于对智能体执行过程和工具调用进行结构化日志记录)、ContextFilterPlugin(通过过滤旧的对话轮次来管理上下文窗口)以及 GlobalInstructionPlugin(用于向所有智能体动态应用一套一致的指令)。
该版本中另一个实用的功能是支持事件压缩(event compaction)。通过“仅保留最近事件的滑动窗口和/或总结较早的事件”,这一功能有助于管理智能体的上下文规模。这是一种基础的上下文工程实践,旨在防止上下文窗口超出 Token 限制,同时降低长会话中的延迟和成本。事件压缩 API 允许开发者控制压缩间隔、Token 阈值、重叠大小、事件保留限制以及所使用的摘要算法。
同样重要的是,该框架内置了对人机协同工作流的支持。借助新的 ADK,智能体在执行关键操作前可以暂停、请求人工批准,并在获得确认后恢复执行。
注册的工具可以访问其
ToolContext并调用requestConfirmation()。这将自动拦截运行流程,暂停大语言模型(LLM)的执行,直到接收到输入。[...] ADK 会自动清理中间事件,并将确认后的函数调用显式注入到后续的 LLM 请求上下文中。这确保了模型能够理解该操作已获得批准,而不会陷入循环。
ADK for Java 还原生支持 Agent2Agent (A2A) 协议,使不同的智能体能够跨语言或框架进行通信与协作。为此,ADK 集成了官方的 A2A Java SDK 客户端。
要通过 A2A 协议公开您自己的 ADK 智能体,您可以创建一个
A2A AgentExecutor。它会封装您的 ADK 智能体并通过 JSON-RPC REST 端点将其公开,从而使您的 ADK 作品能够即刻接入更广泛的 A2A 生态系统。
Google 同时提供了 Java 和 Python 版本的智能体开发套件。当 ADK for Java 在几个月前发布时,其主要贡献者 Guillaume Laforge 在 Reddit 上澄清道:“新特性和新实验通常先在 Python 中启动,然后再逐步移植到 Java”。最近,Reddit 用户 Qubit99 建议开发者优先选择 Python 版本而非 Java 版本,理由是 Google 在维护 Java 库方面的记录存在疑虑。另一方面,José Carlos Sancho 在 X.com 上指出,Java 的类型安全性是“一项重大优势”,有助于尽早发现编排中的 Bug,这可能使 Java 智能体在规模化应用时比 Python 版本更稳定。
ADK for Java 可通过 GitHub 下载。