目录
代理式人工智能系统旨在通过有限的直接人工监督解决复杂问题 [ 1 ]。这些系统由多个可对话的代理组成,这些代理可以相互对话,可以集中协调或以分散的方式自组织 [1, 2]。随着企业越来越多地使用多代理系统来自动化复杂流程或解决复杂任务,我们希望仔细研究一下此类系统的架构。
这些代理具有规划 等能力,使它们能够预测未来状态并选择最佳行动来实现特定目标。它们还具有记忆能力 ,使它们能够回忆过去的互动、经历和知识,这对于保持任务的连续性和改进策略至关重要。此外,代理可以利用各种工具(包括 API 和外部软件)来执行代码、查询数据库和与其他系统交互 [1, 3]。这些工具的使用扩展了它们的功能,使它们能够执行各种操作。
由于代理可以采取行动、编写和执行代码,因此存在运行恶意代码或对主机系统或其他用户有害代码的潜在风险 [3]。因此,了解这些系统的架构对于沙盒代码执行、限制或拒绝对生产数据和服务的访问以及减轻故障、漏洞和滥用至关重要。
本文提供了构建和部署使用 AutoGen、LangChain、LlamaIndex 或 Semantic Kernel 等框架的 Agentic AI 系统的基本架构。它基于 Baseline OpenAI 端到端聊天参考架构 [ 4 ]。它提供 Azure 容器应用或 Azure Kubernetes 服务作为部署代理、业务流程协调器、API 和提示流的主要平台。对于某些模型,需要有一个机器学习工作区,因此我们也将其集成到架构中。为了有效使用 Azure Open AI,我们建议将服务置于 Azure API 管理之后,该管理提供专用于 Azure OpenAI 服务的策略。如果需要 UI,我们建议使用应用服务。在工作负载网络之外,部署了一个 Azure 容器应用环境,其中包含无服务器代码解释器会话(预览版)[3 ],以运行代理生成的代码。
建筑学
成分
该架构的许多组件与 Baseline OpenAI 端到端聊天参考架构 [ 4 ] 类似,因为 Agentic AI Systems 的主要组件是 Azure OpenAI、Azure AI Search 和 Azure AI Services。我们将重点介绍该架构的主要组件。
-
Azure AI Studio [5] 是一种托管云服务,用于训练、部署、自动化和管理机器学习模型,包括代理使用的大型语言模型 (LLM)、小型语言模型 (SLM) 和多模式模型。该平台提供了一套全面的工具和服务,以促进端到端机器学习生命周期。Azure AI Studio 的主要功能包括:
-
Prompt Flow [6] 是一种开发工具,旨在简化生成式 AI 应用程序的整个开发生命周期。它支持创建、测试和部署提示流,这些提示流可用于根据给定的提示生成响应或操作。这些提示流可以部署到机器学习工作区,也可以容器化并部署到 Azure 容器应用或 Azure Kubernetes 服务 [7]。AI Studio 也可用于开发和部署这些提示流。
-
托管在线端点 由代理和后端服务用于调用即时流程进行实时推理。它们为部署机器学习模型提供了可扩展、可靠且安全的端点,从而实现了实时决策和交互 [7]。
-
Azure AI 依赖项包括支持 AI Studio 和相关项目运行的基本 Azure 服务和资源 [8]:
- Azure 存储帐户存储项目的工件,例如提示流和评估数据。它主要用于 AI Studio 管理数据和模型资产。
- Azure AI Search是一项全面的云搜索服务,支持全文搜索、语义搜索、向量搜索和混合搜索。它为 AI 项目和代理提供搜索功能,对于实现检索增强生成 (RAG) 模式至关重要。此模式涉及从提示中提取相关查询、查询 AI 搜索服务,并使用结果使用 LLM 或 SLM 模型生成响应。
- Azure Key Vault用于安全存储和管理代理、AI 项目和后端服务所需的机密、密钥和证书。
- Azure 容器注册表 存储和管理代理、后端 API、业务流程协调程序和其他组件的容器映像。它还存储使用自定义运行时为提示流创建的映像。
- Azure OpenAI 服务支持自然语言处理任务,例如文本生成、摘要和对话。
- Azure AI 服务 提供用于视觉、语音、语言和决策的 API,包括自定义模型。
- 文档智能 从文档中提取数据进行智能处理。
- Azure Speech具有翻译功能,可将语音转换为文本,反之亦然。
- 内容 AI 安全确保 AI 生成的内容符合道德且安全,防止产生或传播有害或有偏见的材料。
Azure AI Studio 提供的这些组件和服务实现了复杂的 AI 解决方案的无缝集成、部署和管理,促进了 Agentic AI Systems 的开发和运行。
-
-
Azure Cosmos DB 非常适合 Agentic AI 系统和 AI 代理 [9 ]。它可以为 可对话代理提供带有消息历史记录的"会话"内存(例如 Autogen 中的ConversableAgent.chat_messages [9, 10])。它还可以用于 LLM 缓存 [9, 11]。最后,它可以用作矢量数据库 [9, 12]。
-
Azure Cache for Redis是一种内存存储,可用于存储代理的短期内存和 Autogen 等 LLM 缓存 [11, 13]。它还可以被后端服务用来提高性能,并可用作会话存储 [ 13 ]。
-
对我们来说, Azure API 管理是管理对 Azure OpenAI 服务访问的核心架构组件,尤其是当多个代理使用该服务时。首先,你可以直接或使用 OpenAPI 规范 [ 14 ] 在 API 管理中导入 OpenAI API。导入后,你可以通过多种方式使用 API 管理策略 [ 15 ]对 Azure OpenAI API 进行身份验证和授权访问。你还可以使用 API 管理监视和分析 Azure OpenAI 服务的使用情况 [ 16 ],设置令牌限制策略 [ 17 ],并对 Azure OpenAI 请求的响应启用语义缓存,以减少带宽、处理要求和延迟 [ 18 ]。对于语义缓存,可以使用已部署的 Azure Cache for Redis [ 18 ]。最后,使用 API 管理策略,你可以实现 Azure OpenAI 服务的智能负载平衡 [19-21 ] 。由于所有这些原因,在此体系结构中,代理不是直接调用 Azure OpenAI 服务,而是通过 Azure API 管理调用它。 API 管理还用于向代理和外部世界公开后端服务的 API。
-
Azure Container Apps是一个无服务器平台,其设计重点是容器化应用程序,而不是基础设施 [ 22 ]。它非常适合 Agentic AI Systems。代理、编排器、提示流和后端 API 都可以部署为容器应用程序。它为您的代理、编排器、提示流和后端 API 提供了可靠的解决方案。它们可以根据负载自动扩展。容器应用程序还提供 Dapr 集成,可帮助您实现简单、可移植、有弹性且安全的微服务和代理 [ 23 ]。
- 对于代理之间以及代理与编排器之间的异步,我们建议使用Azure 服务总线。它是一个完全托管的企业消息代理,具有消息队列和发布-订阅主题 [ 24 ]。它提供了代理之间以及代理与编排器之间的解耦通信。Dapr 可用于与 Azure 服务总线 [ 24 ] 进行通信。Dapr 为与 Azure 服务总线(预览版)[ 25 ]的通信提供了弹性策略。
- 对于代理之间以及代理与编排器之间的同步通信,可以使用Dapr服务到服务调用。这是一种使用自动 mTLS 身份验证和加密以及服务发现直接调用另一个服务(代理或编排器)的简单方法 [ 24 ]。Dapr 还为调用服务提供了弹性,但它不能应用于使用 Dapr 服务调用 API 发出的请求 [ 26 ]。
- 下面提供了Azure Kubernetes 服务(AKS)架构。您可以在 Azure Kubernetes 服务上部署 Dapr,或使用服务网格在代理之间以及代理与编排器之间进行直接通信。Azure Kubernetes 服务还为您的代理、编排器、提示流和后端 API 提供了可靠的解决方案。
-
Azure 容器应用代码解释器会话(预览版)是完全隔离的,旨在运行不受信任的代码 [3 ]。它由 Azure 容器应用动态会话(预览版)提供,可快速访问具有强隔离性的安全沙盒环境 [ 27 ]。代码解释器会话通过 Hyper-V 边界彼此完全隔离,提供企业级安全性和隔离 [3, 27]。出站流量也可以受到限制 [3 ]。默认情况下,Python 代码解释器会话包括流行的 Python 包,如 NumPy、Pandas 和 Scikit-learn [3 ]。你还可以根据需要创建自定义 Azure 容器应用自定义容器会话 [28 ]。Azure 容器应用代码解释器会话和自定义容器会话非常适合在安全和隔离的环境中运行代理生成的代码。它是体系结构的重要组成部分,可防止恶意代码执行并保护主机系统和其他用户。
结论
Agentic AI 系统代表了人工智能领域的重大进步,它以最少的人为干预提供自主决策和解决问题的能力。通过利用具有规划、记忆和工具使用功能的可对话代理,这些系统可以应对复杂的企业挑战。所提出的架构利用 Azure 的服务套件(包括 Azure OpenAI、AI Studio、Azure API 管理、容器应用等),为部署这些智能系统提供了坚实的基础。确保此类系统的安全性、可靠性和合乎道德的运行至关重要,特别是在管理代码执行和数据安全方面。随着该领域的发展,不断改进这些架构和实践对于最大限度地发挥 Agentic AI 的优势并最大限度地降低风险至关重要。
参考
[ 1 ] Shavit Y、Agarwal S、Brundage M、Adler S、O'Keefe C、Campbell R、Lee T、Mishkin P、Eloundou T、Hickey A、Slama K。管理代理 AI 系统的实践。研究论文,OpenAI,2023 年 12 月。
[ 2 ] Wu Q、Bansal G、Zhang J、Wu Y、Zhang S、Zhu E、Li B、Jiang L、Zhang X、Wang C。Autogen:通过多代理对话框架启用下一代 llm 应用程序。arXiv 预印本 arXiv:2308.08155。2023 年 8 月 16 日。
[ 3 ] Azure 容器应用中的无服务器代码解释器会话(预览)| Microsoft Learn
[ 4 ]基线 OpenAI 端到端聊天参考架构 - Azure 参考架构 | Microsoft L...
[5 ]什么是 Azure AI Studio? - Azure AI Studio | Microsoft 学习
[6 ]提示流 --- 提示流文档(microsoft.github.io)
[7 ]将流部署为托管在线端点,用于实时推理 - Azure AI Studio | Microsoft Lea...
[8] 使用中心进行管理、协作和组织 - Azure AI Studio | Microsoft Learn
[9 ] AI 代理 | Microsoft Learn
[ 10 ]代理聊天.conversable_agent | AutoGen (microsoft.github.io)
[ 11 ] LLM 缓存 | AutoGen(microsoft.github.io)
[ 12 ] Azure Cosmos DB | AutoGen(microsoft.github.io)
[ 13 ]什么是 Azure Redis 缓存? - Azure Redis 缓存 | Microsoft Learn
[ 14 ]将 Azure OpenAI API 导入为 REST API - Azure API 管理 | Microsoft 学习
[ 15 ]向 Azure OpenAI API 进行身份验证 - Azure API 管理 | Microsoft 学习
[ 16 ] Azure API 管理策略参考 - azure-openai-emit-token-metric | Microsoft Learn
[ 17 ] Azure API 管理策略参考 - azure-openai-token-limit | Microsoft Learn
[ 18 ]在 Azure API 管理中为 Azure OpenAI API 启用语义缓存 | Microsoft Learn
[19 ]使用 Azure API 管理实现 Azure OpenAI 服务负载平衡 - 代码示例 | Microsoft Learn
[ 20 ]使用 Azure API 管理断路器和 Azure OpenAI 服务进行负载平衡 - 微软......
[21]使用 OpenAI 的 APIM 实现智能负载平衡:基于权重的路由 - Microsoft Community Hub
[ 22 ] Azure 容器应用概述 | Microsoft 学习
[ 23 ]由 Dapr 提供支持的微服务 API | Microsoft Learn
[ 24 ]企业消息代理 Azure Service Bus 简介 - Azure Service Bus | Microsoft Lear...
[ 25 ] Dapr 组件弹性(预览) - Azure 容器应用 | Microsoft Learn
[ 26 ]服务发现弹性(预览) - Azure 容器应用 | Microsoft 学习
[27] Azure 容器应用动态会话概述 | Microsoft Learn
[28] Azure 容器应用中的自定义容器会话(预览)| Microsoft Learn