选择智能体 AI 架构组件

本文档提供了相关指南,可帮助您为 Google Cloud中的智能体 AI 应用选择架构组件。本文档介绍了如何评估应用和工作负载的特征,以便选择最符合您需求的产品或服务。设计自主 AI 架构的过程是迭代的。随着工作负载特征的变化、要求的演变或新 Google Cloud 产品和功能的推出,您应定期重新评估架构。

AI 代理非常适合解决开放式问题的应用,这些问题可能需要自主决策和复杂的多步骤工作流管理。智能体擅长使用外部数据实时解决问题,也擅长自动执行知识密集型任务。与 AI 模型的辅助功能和生成功能相比,这些功能可帮助客服人员创造更高的业务价值。

对于具有预定义步骤的确定性问题,您可以使用 AI 代理。 不过,其他方法可能更高效且更经济实惠。例如,对于总结文档、翻译文本或对客户反馈进行分类等任务,您不需要使用智能体工作流。

如需了解其他非代理型 AI 解决方案,请参阅以下资源:

代理架构概览

智能体是一种应用,它通过处理输入内容、使用可用工具进行推理,并根据推理结果采取行动来实现目标。智能体使用 AI 模型作为其核心推理引擎来自动执行复杂任务。智能体使用一组工具,让 AI 模型能够与外部系统和数据源进行交互。智能体可以使用记忆系统来保持上下文并从互动中学习。智能体架构的目标是创建一个自主系统,该系统能够理解用户意图、制定多步计划,并使用可用工具执行该计划。

下图简要展示了代理系统的架构组件:

代理系统的架构组件。

代理系统架构包括以下组件:

  • 前端框架:一组预构建的组件、库和工具,用于构建应用的用户界面 (UI)。
  • 代理开发框架:用于构建和构造代理逻辑的框架和库。
  • 智能体工具:一组工具,例如用于提取数据和执行操作或事务的 API、服务和函数。
  • 代理记忆:代理用于存储和回忆信息的系统。
  • 智能体设计模式:用于构建智能体应用的常见架构方法。
  • 代理运行时:代理的应用逻辑运行所在的计算环境。
  • AI 模型:为代理的决策制定能力提供支持的核心推理引擎。
  • 模型运行时:用于托管和部署 AI 模型的基础设施。

以下各部分详细分析了这些组件,可帮助您决定如何构建架构。您选择的组件会影响代理的性能、可伸缩性、成本和安全性。本文档重点介绍用于构建和部署代理的核心推理和执行逻辑的基本架构组件。Responsible AI 安全框架和代理身份管理等主题不在本文档的讨论范围内。

前端框架

前端框架是一组预构建的组件、库和工具,可用于构建代理应用的界面。您选择的前端框架决定了后端的要求。内部演示的简单界面可能只需要同步 HTTP API,而生产级应用则需要支持流式传输协议和稳健状态管理的后端。

请考虑以下类别的框架:

  • 原型设计和内部工具框架:为了快速开发、进行内部演示和创建概念验证应用,请选择优先考虑开发者体验和速度的框架。这些框架通常倾向于采用一种简单且同步的模型,称为请求-响应模型。借助请求-响应模型,您可以构建功能性界面,与生产框架相比,只需编写极少的代码,并使用更简单的后端。此方法非常适合快速测试代理逻辑和工具集成,但可能不适合需要实时互动的高度可伸缩的面向公众的应用。此类别中的常见框架包括 MesopGradio
  • 生产框架:对于面向外部用户的可伸缩、响应迅速且功能丰富的应用,请选择允许使用自定义组件的框架。这些框架需要能够支持现代用户体验的后端架构。生产框架应包含对流式传输协议的支持、无状态 API 设计,以及用于跨多个用户会话管理对话状态的强大外部化内存系统。生产应用常用的框架包括 StreamlitReactFlutter AI 工具包

如需管理这些框架与 AI 代理之间的通信,您可以使用 Agent-User Interaction (AG-UI) 协议。AG-UI 是一种开放协议,可让后端 AI 智能体与您的前端框架互动。AG-UI 会告知前端框架何时渲染代理的回答、更新应用状态或触发客户端操作。如需构建交互式 AI 应用,请将 AG-UI 与智能体开发套件 (ADK) 结合使用。如需了解 ADK,请继续阅读下一部分“代理开发框架”。

智能体开发框架

智能体开发框架是一些库,可简化智能体 AI 应用的构建、测试和部署流程。这些开发工具为核心代理功能(包括推理循环、内存和工具集成)提供预构建的组件和抽象。

为了加快 Google Cloud中的智能体开发速度,我们建议您使用 ADK。ADK 是一个开源的模块化框架,可为构建和编排工作流提供高级别的抽象,从简单任务到复杂的多代理系统。

ADK 针对 Gemini 模型和 Google Cloud进行了优化,但它可与其他框架兼容。ADK 支持其他 AI 模型和运行时,因此您可以将其与任何模型或部署方法搭配使用。对于多智能体系统,ADK 支持通过共享会话状态进行交互、通过模型驱动的委托在智能体之间路由任务,以及通过显式调用让一个智能体将另一个智能体作为函数或工具来调用。

为了帮助您快速入门,ADK 提供了 Python、Java 和 Go 代码示例,这些示例展示了多个行业中的各种应用场景。虽然许多示例都重点介绍了对话流程,但 ADK 也非常适合构建执行后端任务的自主代理。对于这些非互动式使用情形,请选择一种擅长处理单个自包含请求并实现稳健的错误处理的智能体设计模式

虽然您可以选择使用通用 AI 框架(例如 Genkit),但我们建议您使用 ADK。Genkit 提供了可用于开发您自己的智能体架构的原语。不过,ADK 等专用代理框架可提供更专业的工具。

代理工具

智能体通过工具与外部系统互动的能力决定了其有效性。智能体工具是 AI 模型可用的函数或 API,智能体使用这些工具来增强输出并实现任务自动化。将 AI 代理连接到外部系统后,工具会将代理从简单的文本生成器转变为可以自动执行复杂的多步骤任务的系统。

如需启用工具互动,请从以下工具使用模式中进行选择:

使用场景 工具使用模式
您需要执行一项常见任务,例如完成网页搜索、运行计算或执行代码,并且希望加快初始开发速度。 内置工具
您希望构建模块化或多代理系统,该系统需要可互操作且可重复使用的工具。 Model Context Protocol (MCP)
您需要以企业级规模管理、保护和监控大量基于 API 的工具。 API 管理平台
您需要与没有 MCP 服务器的特定内部或第三方 API 集成。 自定义函数工具

为智能体选择工具时,请评估其功能和运行可靠性。优先考虑可观测、易于调试且包含强大错误处理功能的工具。这些功能有助于确保您可以跟踪操作并快速解决故障。此外,还要评估智能体选择合适工具以成功完成分配任务的能力。

内置工具

ADK 提供了多种直接集成到代理运行时的内置工具。您可以将这些工具作为函数调用,而无需配置外部通信协议。这些工具提供常见的功能,包括从网络访问实时信息、在安全环境中以编程方式执行代码、从私有企业数据中检索信息以实现 RAG,以及与云数据库中的结构化数据进行交互。内置工具可与您创建的任何自定义工具搭配使用。

MCP

为了让代理系统的各个组件能够互动,您需要建立清晰的通信协议。 MCP 是一种开放协议,可为智能体提供标准化接口,以便其访问和使用必要的工具、数据和其他服务。

MCP 将代理的核心推理逻辑与其工具的具体实现分离,类似于标准硬件端口允许不同的外围设备连接到设备的方式。MCP 简化了工具集成,因为它提供了一份不断增长的预建连接器列表,并提供了一种构建自定义集成的一致方式。集成工具的灵活性有助于实现不同模型和工具之间的互操作性。

您可以连接到远程 MCP 服务器(如果有),也可以自行托管 MCP 服务器。自行托管 MCP 服务器时,您可以完全控制如何向代理公开专有 API 或第三方 API。如需托管您自己的自定义 MCP 服务器,请将其作为容器化应用部署到 Cloud Run 或 GKE。

API 管理平台

API 管理平台是一个集中式系统,可让您通过 API 保护、监控和控制内部或外部服务。API 管理平台提供了一个集中位置来编目组织的所有 API,简化了数据公开方式,并通过使用情况监控提供可观测性。

如需在 Google Cloud上大规模管理基于 API 的代理工具,建议您使用 Apigee API Hub。借助 API 中心,客服人员可以通过直接 HTTP 调用、预建的连接器、在中心注册的自定义 API 或直接访问 Google Cloud 数据源,立即连接到数据。这种方法可让客服人员立即访问所需的信息,而无需构建复杂的数据加载和集成流水线。

API 管理平台和 MCP 等通信协议可解决不同的架构问题。通信协议可标准化代理与工具之间的互动格式,从而确保组件可重复使用且可互换。相比之下,API 管理平台可管控 API 端点的生命周期和安全性,并处理身份验证、速率限制和监控等任务。这些模式是互补的。例如,代理可以使用 MCP 与工具通信,而该工具反过来可以是 API Hub 管理和保护的安全 API 端点。

自定义函数工具

功能工具可为智能体提供新功能。您可以编写自定义函数工具,为智能体提供专业功能,例如与外部 API 或专有业务系统集成。编写自定义函数工具是将智能体的能力扩展到内置工具所能提供的范围之外的最常见模式。

如需创建自定义函数工具,您可以使用自己喜欢的编程语言编写函数,然后以清晰的自然语言说明其用途、参数和返回值。代理的模型会使用此说明来推理何时需要该工具、要提供哪些输入,以及如何解读输出以完成用户的请求。

您还可以创建一个实现智能体即工具功能的自定义函数工具。 代理即工具函数将一个代理公开为可调用函数,供其他代理调用。借助此技术,您可以构建复杂的多智能体系统,其中一个智能体可以协调并将专门的任务委托给其他专门的智能体。如需详细了解代理设计模式和协调多代理编排,请参阅本文档后面的代理设计模式部分。

智能体记忆

代理记住过往互动内容的能力对于提供连贯且实用的对话体验至关重要。如需创建有状态、情境感知的代理,您必须实现短期记忆和长期记忆机制。以下部分探讨了可用于为代理实现短期记忆和长期记忆的设计选择和 Google Cloud服务。

短期记忆

短期记忆使代理能够在单个持续进行的对话中保持上下文连贯。如需实现短期记忆,您必须同时管理会话及其关联的状态。

  • 会话:会话是指用户与代理之间的对话消息串,从初始互动到对话结束。
  • 状态:状态是指代理在特定会话中使用的和收集的数据。收集的状态数据包括用户和代理之间交换的消息历史记录、任何工具调用的结果,以及代理为了了解对话上下文而需要的其他变量。

以下是使用 ADK 实现短期记忆的选项:

  • 内存存储:对于在单个实例上运行的开发、测试或简单应用,您可以将会话状态直接存储在应用的内存中。代理使用数据结构(例如字典或对象)来存储键值对列表,并在整个会话期间更新这些值。不过,当您使用内存中存储时,会话状态不会持久存在。如果应用重启,则会丢失所有对话记录。
  • 外部状态管理:对于需要可伸缩性和可靠性的生产应用,我们建议您构建无状态代理应用,并在外部存储服务中管理会话状态。在此架构中,每次代理应用收到请求时,都会从外部存储区检索当前对话状态,处理新的对话轮次,然后将更新后的状态保存回存储区。这种设计可让您横向扩缩应用,因为任何实例都可以处理任何用户的请求。外部状态管理方面的常见选择包括 Memorystore for RedisFirestoreVertex AI Agent Engine 会话

长期记忆

长期记忆可为代理提供持久的知识库,该知识库在单个用户的所有对话中都存在。借助长期记忆,智能体可以检索和使用外部信息,从过往互动中学习,并提供更准确、更相关的回答。

以下是使用 ADK 实现长期记忆的选项:

  • 内存中存储:在开发和测试期间,您可以将会话状态直接存储在应用的内存中。此方法易于实现,但不是持久的。如果应用重启,则会丢失对话记录。您通常通过在开发框架中使用内存中提供程序来实现此模式,例如 ADK 中包含的 InMemoryMemoryService 以进行测试。
  • 外部存储:对于生产应用,请在外部持久性存储服务中管理代理的知识库。外部存储服务可确保代理的知识持久、可伸缩,并且可在多个应用实例中访问。使用记忆库在 Google Cloud上将长期存储与任何代理运行时搭配使用。

代理设计模式

代理设计模式是构建代理型应用的常见架构方法。这些模式提供了一个独特的框架,用于组织系统组件、集成 AI 模型,以及编排单个智能体或多个智能体来完成工作流。如需确定哪种方法最适合您的工作流程,您必须考虑任务的复杂程度和工作流程、延迟时间、性能和费用要求。

单智能体系统依靠一个模型的推理能力来解读用户请求、规划一系列步骤并决定使用哪些工具。这种方法是一个有效的起点,可让您在添加架构复杂性之前,专注于优化核心逻辑、提示和工具定义。不过,随着任务和工具数量的增加,单个代理的性能可能会下降。

对于复杂问题,多智能体系统会协调多个专业智能体,以实现单个智能体难以实现的目标。这种模块化设计可以提高系统的可伸缩性、可靠性和可维护性。不过,与单智能体系统相比,多智能体系统还带来了额外的评估、安全性和成本方面的考虑因素。

在开发多智能体系统时,您必须为每个专用智能体实现精确的访问权限控制,设计可靠的编排系统以确保可靠的智能体间通信,并管理因运行多个智能体而产生的计算开销所带来的运营成本增加。如需促进代理之间的通信,请使用 Agent2Agent (A2A) 协议和 ADK。A2A 是一种开放标准协议,可让 AI 智能体跨不同平台和框架进行通信和协作,而无需考虑其底层技术。

如需详细了解常见的智能体设计模式以及如何根据工作负载要求选择模式,请参阅为智能体 AI 系统选择设计模式

AI 模型

智能体应用依赖于模型的推理和理解能力,充当主要任务编排器。对于此核心代理角色,我们建议您使用 Gemini Pro

Google 模型(例如 Gemini)通过受管理的 API 提供对最新、最强大的专有模型的访问权限。这种方法非常适合最大限度地减少运维开销。相比之下,开放的自托管模型可提供在专有数据上进行微调时所需的深度控制。对于具有严格安全性和数据驻留要求的工作负载,也需要自托管模型,因为这样您可以在自己的网络中运行模型。

如需提升代理的性能,您可以调整模型的推理能力。最新推出的 Gemini Pro 和 Flash 模型等模型具有内置的思考过程,可改进推理和多步规划。为了进行调试和优化,您可以查看模型的思维总结(即其内部思维的合成版本),以了解其推理路径。您可以根据任务的复杂程度调整思考预算(即思考 token 的数量),从而控制模型的推理能力。较高的思考预算可让模型在提供答案之前执行更详细的推理和规划。较高的思考预算可以提高回答质量,但也可能会增加延迟时间和费用。

为了优化性能和成本,请实现模型路由,以根据任务的复杂性、成本或延迟要求动态选择最合适的模型来处理每个任务。例如,您可以将简单的请求路由到小型语言模型 (SLM),以执行代码生成或文本分类等结构化任务,并保留功能更强大且成本更高的模型用于复杂的推理任务。如果您在智能体应用中实现模型路由,则可以创建一个经济高效且保持高性能的系统。

Google Cloud 可让您访问各种 Google 模型、合作伙伴模型和开放模型,以便在代理架构中使用这些模型。 如需详细了解可用的模型以及如何选择适合您需求的模型,请参阅 Vertex AI 上的 Model Garden

模型运行时

模型运行时是指托管和部署 AI 模型并向代理提供推理能力的环境。

选择模型运行时

在托管 AI 模型时,如需选择最佳运行时,请遵循以下指南:

使用场景 模型运行时
您需要一个全代管式 API 来提供 Gemini 模型、合作伙伴模型、开放模型或自定义模型,并提供企业级安全性、可伸缩性和生成式 AI 工具。 Vertex AI
您需要部署开放式或自定义容器化模型,并优先考虑无服务器的简易性和成本效益,以应对多变的网络流量。 Cloud Run
您需要最大限度地控制基础设施,以便在专用硬件上运行开放式或自定义容器化模型,或满足复杂的安全和网络要求。 GKE

以下部分概述了上述模型运行时,包括主要功能和设计注意事项。本文档重点介绍 Vertex AI、Cloud Run 和 GKE。不过, Google Cloud 还提供其他服务,您不妨考虑将其用于模型运行时:

  • Gemini API: Gemini API 专为需要快速直接访问 Gemini 模型,但不需要复杂代理系统通常需要的企业治理功能的开发者而设计。
  • Compute Engine:Compute Engine 是一款基础设施即服务 (IaaS) 产品,适合用于旧版应用。与基于容器的现代运行时相比,它会带来显著的运营开销。

如需详细了解模型运行时所有服务选项的独特功能,请参阅模型托管基础架构

Vertex AI

Vertex AI 提供了一个全代管式式无服务器环境,用于托管您的 AI 模型。您可以通过安全且可伸缩的 API 来提供和微调 Google 模型、合作伙伴模型和开放模型。这种方法免去了所有基础设施管理工作,让您可专注于将模型智能集成到应用中。

将 Vertex AI 用作模型运行时,主要功能和注意事项包括:

  • 基础架构控制:用于模型的全代管式 API。Google 会管理底层基础设施。
  • 安全性:托管安全默认设置和标准合规性认证足以满足您的需求。为了提供提示和回答保护并确保遵循 Responsible AI 实践,您可以将 Model Armor 集成到 Vertex AI 中。
  • 模型可用性:通过受管理的 API 访问各种模型,包括最新的 Gemini 模型。
  • 费用:按用量付费的价格模式,可根据应用的流量进行调整。如需了解详情,请参阅 Vertex AI 中构建和部署 AI 模型的费用

Cloud Run

Cloud Run 提供了一个无服务器运行时,用于在自定义容器中托管模型。Cloud Run 在 Vertex AI 的全代管式简易性和 GKE 的深度基础设施控制之间实现了平衡。如果您需要灵活地在容器化环境中运行模型,而无需管理服务器或集群,则此方法非常适合。

将 Cloud Run 用作模型运行时,其主要功能和注意事项包括:

  • 基础设施控制:在自定义容器中运行任何模型,从而全面控制软件环境,而平台则管理底层无服务器基础设施。
  • 安全性:通过临时隔离的计算实例提供安全性,并允许使用直接 VPC 出站流量无服务器 VPC 访问通道连接器安全连接到专用资源。如需了解详情,请参阅专用网络和 Cloud Run
  • 模型可用性:提供 Gemma 等开放模型,或提供您自己的自定义模型。您无法在 Cloud Run 上托管或提供 Gemini 模型。
  • 费用:采用按用量计费的基于请求的定价模式,可缩减至零,因此对于流量时有时无或可变的模型而言,这种模式非常经济高效。如需了解详情,请参阅 Cloud Run 价格

GKE

GKE 在托管 AI 模型方面提供了最大的控制权和灵活性。如需使用此方法,您需要在配置和管理的 GKE 集群上以容器形式运行模型。如果您需要在专用硬件上运行模型、将模型与应用并置以最大限度减少延迟,或者需要对服务环境的各个方面进行精细控制,那么 GKE 是理想的选择。

将 GKE 用作模型运行时,主要功能和注意事项包括:

  • 基础设施控制:可对整个服务环境(包括节点配置、专用机器加速器和特定模型服务软件)进行精细控制。
  • 安全性:可实现最高级别的安全性和数据隔离,因为您可以完全在自己的网络中运行模型,并应用精细的 Kubernetes 安全政策。为了筛查进出 GKE 集群的流量并保护与 AI 模型的所有互动,您可以将 Model Armor 与 GKE 集成。
  • 模型可用性:提供 Gemma 等开放模型,或提供您自己的自定义模型。您无法在 GKE 上托管或部署 Gemini 模型。
  • 费用:采用基于您使用的底层计算和集群资源的费用模型,因此在您使用承诺使用折扣 (CUD) 时,可高度优化可预测的大容量工作负载。如需了解详情,请参阅 Google Kubernetes Engine 价格

智能体运行时环境

如需托管和部署代理应用,您必须选择代理运行时。 此服务会运行您的应用代码,即您在使用代理开发框架时编写的业务逻辑和编排。在此运行时中,您的应用会向所选模型运行时托管和管理的模型发出 API 调用。

选择代理运行时

如需在托管 AI 代理时选择运行时,请遵循以下指导原则:

使用场景 智能体运行时环境
您的应用是 Python 代理,需要完全托管的体验,并且运营开销极低。 Vertex AI Agent Engine
您的应用已容器化,并且需要无服务器、事件驱动型伸缩,同时具有语言灵活性。 Cloud Run
您的应用已容器化,具有复杂的状态要求,并且需要精细的基础架构配置。 GKE

如果您已在 Cloud Run 或 GKE 上管理应用,则可以使用同一平台来管理智能体工作负载,从而加快开发速度并简化长期运营。

以下部分概述了每种代理运行时,包括主要功能和设计注意事项。

Vertex AI Agent Engine

Vertex AI Agent Engine 是一种全托管式、有主张的运行时,可用于部署、运行和扩缩智能体应用。Vertex AI Agent Engine 可抽象出底层基础架构,让您专注于智能体逻辑,而不是运营。

以下是 Vertex AI Agent Engine 的功能和注意事项:

Vertex AI Agent Engine 可加快生产速度,因为它提供了一个专门构建的托管式环境,可处理您在运行智能体时遇到的许多复杂问题,例如生命周期和上下文管理。对于需要对计算环境进行广泛自定义或需要使用 Python 以外的编程语言的应用场景,Vertex AI Agent Engine 的适用性较低。对于对私有依赖项管理有严格安全要求的工作负载,Cloud Run 和 GKE 提供了一种更直接的基于 IAM 的配置途径。

Cloud Run

Cloud Run 是一个全代管式无服务器平台,可让您在无状态容器中运行代理应用代码。如果您希望将整个代理应用、各个组件或自定义工具部署为可伸缩的 HTTP 端点,而无需管理底层基础架构,那么 Cloud Run 就是理想之选。

以下是 Cloud Run 的功能和注意事项:

Cloud Run 可免除基础设施管理,因此在运营方面非常简单,且具有出色的成本效益。不过,由于 Cloud Run 是无状态的,因此您需要使用存储服务来管理多步工作流中的上下文。此外,Cloud Run 服务的请求超时时间上限为 1 小时,这可能会限制长时间运行的智能体任务。

GKE

Google Kubernetes Engine (GKE) 是一种托管式容器编排服务,可对代理应用的架构和基础架构进行精细控制。GKE 适合需要强大、生产级功能或您已经是 GKE 客户且希望在现有应用之上实现智能体工作流的复杂智能体系统。

以下是 GKE 上可用的功能和注意事项:

GKE 提供最大的控制力和灵活性,让您可以运行复杂的有状态代理。不过,这种控制方式会带来显著的运营开销和复杂性。您必须配置和管理 Kubernetes 集群,包括节点池、网络和伸缩政策,这比无服务器平台需要更多的专业知识和开发工作。

后续步骤

贡献者

作者:Samantha He | 技术文档工程师

其他贡献者: