使用Google A2A协议构建自主AI代理指南

本文详细介绍了如何利用Google A2A协议、Llama Prompt Guard 2、Gemma 3和Gemini 2.0 Flash构建具备双重验证机制的多代理系统,实现安全可靠的自主AI代理部署,包括本地测试与云端生产环境配置方案。

为什么需要自主AI代理?

想象一下:凌晨3点,地球另一端的客户急需账户帮助。传统聊天机器人会通过升级流程唤醒支持团队。但如果AI代理能够自主、安全且正确地处理请求呢?这就是理想状态。

现实是,当今大多数AI代理就像持有学习驾照的青少年,需要持续监督。它们可能意外承诺客户大额退款(糟糕!),或陷入巧妙的提示注入陷阱,泄露公司机密或客户敏感数据。这显然不理想。

这就是"双重验证"的用武之地。将其视为为AI代理配备入口保安(输入验证)和出口质检员(输出验证)。有了这些最低限度的安全措施,您的代理可以自主运行而不会引发公关危机。

双重验证理念的诞生

当前关于AI代理的讨论很多。我自问:“阻碍AI代理广泛采用的最大挑战是什么?“结论是可信 autonomy。当AI代理可信时,它们更容易被扩展和采用。反之,如果代理 autonomy 受限,就需要增加人力投入,成本高昂且抑制采用。

接下来,我考虑了AI代理实现自主的最低要求。结论是:自主AI代理至少需要两个组件:

  • 输入验证:清理输入,防护越狱、数据投毒和有害内容
  • 输出验证:清理输出,确保品牌一致性,减少幻觉

我称此系统为"双重验证”。

基于这些见解,我构建了一个概念验证项目来研究双重验证概念。本文将探讨如何通过Google A2A协议、Google代理开发工具包(ADK)、Llama Prompt Guard 2、Gemma 3和Gemini 2.0 Flash构建多代理系统来实现双重验证,并如何优化以适应生产环境,特别是在Google Vertex AI上的部署。

对于输入验证,我选择Llama Prompt Guard 2,正是因为相关文章恰逢其时地出现。选择该模型是因为它专门设计用于防护提示注入和越狱攻击。它也非常小巧;最大变体Llama Prompt Guard 2 86M仅含8600万参数,因此可以下载并包含在Docker镜像中用于云部署,改善延迟。这正是我所做的,后文将详细说明。

本项目完整代码可在 github.com/alexey-tyurin/a2a-double-validation 获取。

如何构建?

架构使用四个通过Google A2A协议通信的专用代理,各司其职:

各代理在系统中的贡献:

  • 管理代理:协调代理间流程的指挥者
  • 防护代理:使用Llama Prompt Guard 2检查提示注入的守卫
  • 处理代理:使用Gemma 3处理合法查询的工作蜂
  • 评审代理:使用Gemini 2.0 Flash评估响应完整性和有效性的编辑

选择Gemma 3作为处理代理,因为它小巧、快速,且可根据需要微调——是生产的理想选择。某中心目前支持九种不同的Gemma微调框架或方法;详见某中心文档。

选择Gemini 2.0 Flash作为评审代理,因为它足够智能担任评审角色,同时比更大的Gemini 2.5 Pro Preview模型显著更快、更便宜。模型选择取决于需求;在我的测试中,Gemini 2.0 Flash表现良好。

我特意为处理和评审代理使用不同模型以避免偏见——LLM可能对自己输出的评判与对其他模型输出的评判不同。

以下是防护代理的关键实现:

行动计划

工作流遵循清晰的生产就绪模式: 用户发送查询 → 管理代理接收 安全检查 → 管理代理将查询转发给防护代理 漏洞评估 → Llama Prompt Guard 2分析输入 处理 → 如果输入安全,处理代理使用Gemma 3处理查询 质量控制 → 评审代理评估响应 交付 → 管理代理将验证后的响应返回用户

以下是管理代理的协调逻辑:

构建时间

准备好动手了吗?以下是您的生产就绪路线图:

本地部署

  1. 环境设置
  2. 配置API密钥
  3. 下载Llama Prompt Guard 2

这是巧妙之处——我们首次启动Agent Critic时下载模型一次,并将其打包到Docker镜像中用于云部署:

关于Llama Prompt Guard 2的重要说明:要使用Llama Prompt Guard 2模型,您必须: 填写"LLAMA 4社区许可协议"于 https://huggingface.co/meta-llama/Llama-Prompt-Guard-2-86M 获取访问此存储库的请求并由某机构批准 只有在批准后,您才能下载和使用此模型

  1. 本地测试

生产部署

这里变得有趣。我们通过将Llama模型包含在Docker镜像中来优化生产:

  1. 在Cloud Shell终端中设置云项目 访问某中心云控制台:转到 https://console.cloud.google.com 打开Cloud Shell:点击某中心云控制台右上角的Cloud Shell图标(终端图标) 使用某中心云进行身份验证: 创建或选择项目: 启用所需API:

  2. 设置Vertex AI权限 为您的账户授予Vertex AI及相关服务的必要权限:

  3. 创建和设置VM实例 Cloud Shell不适用于此项目,因为Cloud Shell磁盘空间限制为5GB。此项目需要超过30GB的磁盘空间来构建Docker镜像、获取所有依赖项并在本地下载Llama Prompt Guard 2模型以部署到Google Vertex AI。因此,您需要使用专用VM而非Cloud Shell。

  4. 连接VM

  5. 克隆存储库

  6. 部署步骤

  7. 测试

替代方案

说实话——还有其他方法可以解决这个问题:

  • 单一模型方法:使用像GPT-4这样的大型LLM并谨慎设计系统提示 更简单但专业性较低 提示注入风险更高 使用相同LLM进行答案生成和自我批评存在LLM偏见风险

  • 单体方法:将所有流程放在一个代理中 延迟更好 无法独立扩展和发展输入验证和输出验证 代码更复杂,因为所有功能捆绑在一起

  • 基于规则的过滤:传统正则表达式和关键词过滤 更快但智能性较低 误报率高

  • 商业解决方案:如某中心内容审核器或某中心模型装甲等服务 更易实现但自定义性较差 相反,Llama Prompt Guard 2模型可以用客户数据微调 持续订阅成本

  • 开源替代方案:Guardrails AI或NeMo Guardrails 良好的框架,但需要更多设置 对提示注入的专业性较低

经验教训

  1. Llama Prompt Guard 2 86M存在盲点。测试期间,某些越狱提示,如: 和 未被标记为恶意。考虑使用领域特定示例微调模型,以提高对您重要攻击模式的召回率。

  2. Gemini Flash模型选择很重要。我的评审代理最初使用gemini1.5flash,经常将完全正确的答案评为4/5。例如: 切换到gemini2.0flash后,相同答案 consistently 被评为5/5:

  3. Cloud Shell存储是瓶颈。某中心Cloud Shell仅提供5GB磁盘空间——远不足以构建本项目所需的Docker镜像、获取所有依赖项并在本地下载Llama Prompt Guard 2模型以部署到Google Vertex AI。请配置至少30GB的专用VM。

结论

自主代理不是通过简单地将最大LLM应用于每个问题来构建的。它们需要一个无需人工监督即可安全运行的系统。双重验证——用专用输入和输出验证器包装面向任务的处理代理——提供了安全、性能和成本的平衡组合。

将轻量级防护如Llama Prompt Guard 2与生产友好模型如Gemma 3和Gemini Flash配对,可以在满足严格安全和质量要求的同时控制延迟和预算。

加入讨论。您在将自主代理投入生产时遇到的最大障碍是什么——技术限制、监管障碍还是用户信任?您如何将双重验证概念扩展到高风险领域如金融或医疗保健?

完整代码可在 github.com/alexey-tyurin/a2a-double-validation 获取。

参考文献

[1] Llama Prompt Guard 2 86M, https://huggingface.co/meta-llama/Llama-Prompt-Guard-2-86M [2] Google A2A protocol, https://github.com/google-a2a/A2A [3] Google Agent Development Kit (ADK), https://google.github.io/adk-docs/

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计