17611538698
info@21cto.com

Java 开发 AI 不再麻烦,谷歌发布 Java 版 AI Agent 开发工具包

动态 0 21 11小时前


21CTO 导读:现在,Java 工程团队现在可以利用 Google 的 Agent Development Kit (开发工具包)来简化复杂的工具和架构。

当今,人工智能正从Python实验阶段过渡到成熟的、生产级的部署阶段。而这种成熟需要一种框架,要尊重现有的系统架构,而不是强行引入全新的范式。
鉴于此类需求,谷歌正式发布了 Java 版 Agent 开发工具包 1.0 版本。该框架为软件工程师编写智能应用提供了一种结构化的方法,使人们摆脱了分散的脚本编写模式,转而使用成熟的多语言生态系统。目前该系统现已全面支持 Python、Java、Go 和 TypeScript。
过往的一段时间,将大语言模型集成到高度结构化的后端服务中曾造成巨大的阻力。工程团队将以 Python 为主的数据科学工作流程与现有的 Java 后端服务连接起来时,经常会遇到与依赖管理和持续集成瓶颈相关的集成问题。
Google Agent Development Kit 1.0.0 版本为这类研发团队提供了一种原生途径,可以直接将智能功能嵌入到现有服务中。

利用应用程序和插件实现集中式架构控制

在复杂环境中,管理人工智能交互的生命周期通常会导致代码库庞大且难以维护。
以往的方法通常依赖于在每个单独的代理和子代理级别应用回调,随着应用程序规模的扩大,技术债务也会随之增加。
此次谷歌的新版本通过以全新App容器为核心的集中式插件架构解决了这一难题。
App类作为应用程序的顶层容器,承载全局配置并管理应用程序范围内的插件,以实现全局执行控制。对于开发者而言,这种面向切面的设计允许他们拦截和修改整个系统中大型语言模型、代理和工具的行为,而无需重复编写逻辑。
图片
Google 提供了多种开箱即用的解决方案,包括用于结构化、详细记录错误、工具调用和模型请求的LoggingPlugin 。
为了规范行为,GlobalInstructionPlugin会动态地将一致的指令(例如安全规则或身份参数)应用于所有代理。团队还可以扩展BasePlugin抽象类,以强制执行他们自己的架构规则和自定义防护措施。
通过LoggingPlugin集中管理遥测数据,确保可观测性平台能够接收统一的数据,从而简化复杂逻辑链的调试。解决技术债务问题正是需要这种标准化,摆脱分散的实现细节,走向连贯一致的系统级治理。

上下文工程和优化令牌约束

在对话式架构中,管理上下文窗口通常是一个难题。超出令牌限制会直接降低性能、增加运营成本并延长响应延迟。1.0 版本通过增强上下文工程功能(特别是引入事件压缩)正面解决了这个问题。
通过应用容器上的eventsCompactionConfig方法进行配置,事件压缩允许开发者控制代理历史记录的大小。系统不会突然截断对话,而是维护一个包含近期事件的滑动窗口,并对较早的数据进行汇总。这种机制有效地防止上下文窗口超出令牌限制,从而直接降低延迟,并在长时间会话期间减少计算成本。
平台工程师可以精确控制这一过程,调整诸如压缩间隔、重叠大小、令牌阈值和事件保留大小等参数。当默认的LlmEventSummarizer不足以满足特定领域的需求时,团队可以实现BaseEventSummarizer和EventCompactor接口,从而完全自定义事件的评估和丢弃方式。
正确实施这种摘要机制可以确保模型保留准确推理所需的全部上下文信息,而无需承载逐字逐句的历史聊天记录所带来的大量标记负载。这要求对数据成熟度有深刻的理解,迫使工程团队仔细规划哪些会话历史记录会影响未来模型的准确性。

工具集成和安全代码执行

智能体需要连接到外部数据源和执行环境,才能提供超出其自身知识范围的价值。
更新后的开发工具包引入了更强大的新工具,用来简化这一过程。例如,UrlContextTool允许模型直接从提示中提供的 URL 获取 Web 内容,从而无需开发人员构建和维护单独的 Web 获取管道。
此外,GoogleMapsTool使用 Gemini 2.5 将基于位置的数据直接集成到响应中。例如,用户向地面代理查询埃菲尔铁塔附近的餐饮选择时,将收到有关 Jules Verne 餐厅的详细信息,包括它的 4.5 星评级。
此外,提示该模型总结有关 Nano Banana 2 的特定博客文章 URL,即可获得高级图像生成模型的详细概述,突出其主题一致性能力。
对于注重安全性的团队而言,安全地执行代码是另一项挑战。该框架提供了专用的代码执行工具,特别是 ContainerCodeExecutor 和 VertexAiCodeExecutor。这些抽象层允许开发人员在本地针对 Docker 容器运行生成的代码,或在 Google Cloud 的 Vertex AI 中以云原生方式运行。
通过隔离执行过程,这些执行器能够与现有的持续集成和部署管道无缝集成,同时保持严格的安全边界。希望自动化界面交互的开发人员还可以利用ComputerUseTool抽象来驱动真实的计算机或者 Web 浏览器,这需要通过Playwright等工具实现BaseComputer 的集成。

状态持久性和云集成

无状态代理在复杂的企业生态系统中用途并不太多。
但该框架现在为跨多个会话的状态管理、历史记录和文件处理定义了清晰的契约。该工具包没有强制使用特定的数据库范式,而是提供了多种会话服务,这些服务可以直接在运行器循环中配置。
对于本地开发和测试,工程师可以使用轻量级的InMemorySessionService。对于生产环境,该框架提供了一个由托管的 Vertex AI Session API 支持的VertexAiSessionService,以及一个由开发者社区贡献的、由 Google Cloud Firestore 支持的可扩展FirestoreSessionService 。
长期对话记忆的运作遵循类似的契约。
通过将LoadMemoryTool附加到代理,系统会自动查询已配置的内存服务(例如持久化的 FirestoreMemoryService 或本地的 InMemoryMemoryService)以获取历史上下文。
会话期间交换的大型数据有效负载(例如 PDF 或图像)的处理由工件服务负责。开发人员可以使用GcsArtifactService通过 Google Cloud Storage 进行持久化的版本化管理,确保团队不会遗漏过去会话的详细信息或丢失已交换的文件。

保持人的参与

大语言模型通常需要人工审批来验证某些操作,如遵守公司流程或避免执行危险的操作。为了支持这些管理要求,此框架实现了围绕工具确认概念构建的人机交互工作流程。
当已注册的工具需要人工干预时,它会访问其ToolContext并调用requestConfirmation方法。此操作会自动拦截运行,暂停执行流程,直到收到人工输入为止。
用户通过ToolConfirmation提供批准以及任何可选的有效负载数据后,框架会自动恢复流程。系统会清理中间事件,并将已确认的函数调用显式地注入到后续请求上下文中。
这种上下文管理机制确保模型能够理解操作已获批准,而不会陷入无限循环。例如,可以对配备搜索工具的报告助手进行显式编程,使其在启动搜索代理生成报告之前请求用户确认。

通过 Agent2Agent 协作实现互操作性

现代系统较少用单体架构,人工智能生态系统也在不断发展以适应这一趋势。新发布的 Java 版本原生支持官方的Agent2Agent(A2A) 协议,从而实现了跨越完全不同框架和语言的远程代理之间的无缝协作。
该框架利用了官方的 A2A Java SDK 客户端。
软件工程师们可以通过特定端点解析AgentCard ,该 AgentCard 代表远程代理的身份、通信偏好和功能。构建客户端后,可以将其封装在RemoteA2AAgent中,并直接添加到本地代理层级结构中。该远程代理的行为与本地实体完全相同,能够原生地将事件流式传输回运行器。
开发团队还可以通过将内部创建的功能封装在AgentExecutor中,将其暴露给更广泛的生态系统。这样,代理应用就会通过 JSON-RPC REST 端点对外开放,从而立即被其他服务访问。
通过采用这些标准协议,工程团队可以构建庞大的可互操作组件生态系统,并在过程中不断发现更新的集成方案。

作者:场长

网址:https://adk.dev/

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信