你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

基本 Azure AI Foundry 聊天参考体系结构

Azure OpenAI 服务
Azure 机器学习
Azure 应用程序服务
Azure Key Vault
Azure Monitor

本文提供了一个基本体系结构,可帮助你了解如何使用 Azure AI FoundryAzure OpenAI 语言模型运行聊天应用程序。 该体系结构包括在 Azure 应用服务中运行的客户端用户界面(UI)。 为了提取语言模型的地面数据,UI 使用 Azure AI 代理协调从传入提示到数据存储的工作流。 此体系结构设计用于在单一区域内运行。

重要

此体系结构不适用于生产应用程序。 它是用于学习和概念证明(POC)目的的介绍性体系结构。 设计生产企业聊天应用程序时,请使用 基线 AI Foundry 聊天参考体系结构,该体系结构将生产设计决策添加到此基本体系结构。

重要

示例实现支持本指南。 它包括基本端到端聊天实现的部署步骤。 可以将此实现用作 POC 的基础,以使用 Azure AI Foundry 代理的聊天应用程序。

建筑

显示基本端到端聊天体系结构的示意图。

下载此体系结构的 Visio 文件

工作流程

以下工作流与上图相对应:

  1. 应用程序用户与包含聊天功能的 Web 应用程序交互。 他们向应用服务默认域 azurewebsites.net发出 HTTPS 请求。 此域自动指向应用服务内置公共 IP 地址。 将传输层安全性连接从客户端直接建立到应用服务。 Azure 完全管理证书。

  2. 名为 Easy Auth 的应用服务功能可确保访问网站的用户通过 Microsoft Entra ID 进行身份验证。

  3. 部署到应用服务的应用程序代码处理请求,并为应用程序用户呈现聊天 UI。 聊天 UI 代码连接到同样托管在同一应用服务实例中的 API。 API 代码使用 Azure AI 持久代理 SDK 连接到 Azure AI Foundry 中的 Azure AI 代理。

  4. Azure AI Foundry 代理服务连接到 Azure AI 搜索,提取查询的地面数据。 基础数据将添加到下一步发送到 Azure OpenAI 模型的提示符。

  5. Foundry 代理服务连接到 Azure AI Foundry 中部署的 Azure OpenAI 模型,并发送包含相关地面数据和聊天上下文的提示。

  6. Application Insights 记录有关对应用服务的原始请求和调用代理交互的信息。

组件

此体系结构的许多组件都与 基本应用服务 Web 应用程序体系结构 相同,因为聊天 UI 基于该体系结构。 本部分重点介绍数据服务、可用于生成和协调聊天流的组件以及公开语言模型的服务。

  • Azure AI Foundry 是用于生成、测试和部署 AI 解决方案和模型即服务(MaaS)的平台。 此体系结构使用 Azure AI Foundry 部署 Azure OpenAI 模型。

    • Azure AI Foundry 项目 建立与数据源的连接、定义代理和调用已部署的模型,包括 Azure OpenAI 模型。 此体系结构在 Azure AI Foundry 帐户中只有一个 Azure AI Foundry 项目。

    • Foundry 代理服务 是 Azure AI Foundry 中托管的功能。 开发人员使用此服务定义和托管代理来处理聊天请求。 它管理聊天线程、协调工具调用、强制实施内容安全,并与标识、网络和可观测性系统集成。 在此体系结构中,Foundry 代理服务协调从 AI 搜索实例中提取地面数据的流,并将其连同提示一起传递给部署的 Azure OpenAI 模型。

      Foundry 代理服务中定义的代理是无代码的且有效的不确定性。 系统提示与参数结合使用temperaturetop_p,定义代理对请求的行为方式。

    • Azure AI Foundry 模型 允许从 Microsoft 托管环境中的 Azure AI 目录中部署旗舰模型,包括 OpenAI 模型。 此方法被视为 MaaS 部署。 此体系结构使用具有固定配额的全局标准配置来部署模型。

  • AI 搜索 是一种云搜索服务,支持 全文搜索语义搜索矢量搜索混合搜索。 此体系结构包括 AI 搜索,因为它通常用于聊天应用程序后面的业务流程。 可以使用 AI 搜索检索与应用程序用户查询相关的索引数据。 AI 搜索充当 检索扩充生成 模式的知识存储。 此模式从提示中提取适当的查询,查询 AI 搜索,并使用结果作为 Azure OpenAI 模型的基础数据。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure Well-Architected Framework

此基本体系结构不适用于生产部署。 该体系结构优先于功能简单性和成本效益,以便了解如何使用 Azure AI Foundry 和 Azure OpenAI 构建端到端聊天应用程序。 以下部分概述了此基本体系结构的缺陷,并介绍了建议和注意事项。

可靠性

可靠性有助于确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅可靠性设计评审核对清单

以下列表概述了此体系结构省略的关键可靠性功能:

  • 此体系结构使用应用服务基本层,该层不支持 Azure 可用性区域 。 如果实例、机架或托管实例的数据中心出现问题,则应用服务实例变得不可用。 在走向生产时,请遵循 应用服务实例的可靠性指南

  • 此体系结构不会为客户端 UI 启用自动缩放。 为了防止由于计算资源效率低下而出现可靠性问题,请过度预配资源以始终运行足够的计算来处理最大并发容量。

  • 此体系结构将 Foundry 代理服务部署为完全Microsoft托管的解决方案。 在此配置中,Microsoft代表你托管 Azure Cosmos DB 数据库、Azure 存储帐户容器和 AI 搜索索引。 订阅不显示这些依赖资源。 你无法控制 Foundry 代理服务或其依赖项的可靠性。 你可以获取对这些依赖项的控制,以执行诸如实现业务连续性和灾难恢复策略之类的作。 有关自带依赖项的指南,请参阅 基线体系结构

    注释

    组件部分和关系图中的 AI 搜索实例与 Foundry 代理服务的依赖项的实例不同。 组件部分中的实例存储你的地面数据。 依赖项对聊天会话中上传的文件进行实时分块。

  • 对于面向学习的基本体系结构,可以使用 Global Standard 模型部署类型。 在走向生产时,应更好地了解吞吐量和数据驻留要求。 了解吞吐量要求后,请考虑通过选择 Data Zone ProvisionedGlobal Provisioned 部署类型来使用预配的吞吐量。 如果有数据驻留要求,请选择 Data Zone Provisioned 部署类型。

  • 此体系结构使用 AI 搜索基本层,该层不支持 Azure 可用性区域。 若要实现区域冗余,请在支持可用性区域的区域中部署 AI 搜索标准定价层或更高版本,并部署三个或多个副本。

有关详细信息,请参阅 基线 AI Foundry 聊天参考体系结构

安全

安全性提供针对故意攻击和滥用宝贵数据和系统的保证。 有关详细信息,请参阅可靠性设计审查检查表

本部分介绍此体系结构实现的关键建议。 这些建议包括内容筛选和滥用监视、标识和访问管理以及基于角色的访问控制。 此体系结构不适用于生产部署,因此本部分还包括网络安全。 网络安全是此体系结构未实现的关键安全功能。

内容筛选和滥用监视

Azure AI Foundry 包含使用分类模型组合 的内容筛选系统 。 此筛选检测并阻止输入提示和输出完成中潜在有害内容的特定类别。 这种潜在的有害内容包括仇恨、性内容、自我伤害、暴力、亵渎和越狱(旨在绕过语言模型限制的内容)类别。 可以使用低、中或高选项为每个类别配置筛选严格性。 此参考体系结构在 DefaultV2 部署模型时使用内容筛选器。 可以根据要求调整设置。

标识和访问管理

以下指南扩展了应用服务基线体系结构中 标识和访问管理指南。 聊天 UI 使用其托管标识通过 Azure AI 持久代理 SDK 向 Foundry 代理服务验证聊天 UI API 代码。

Azure AI Foundry 项目还具有托管标识。 此标识通过连接定义向 AI 搜索等服务进行身份验证。 该项目使这些连接可用于 Foundry 代理服务。

Azure AI Foundry 帐户可以包含多个 Azure AI Foundry 项目。 每个项目都应使用自己的系统分配的托管标识。 如果不同的工作负荷组件需要独立访问连接的数据源,请在同一帐户中创建单独的 Azure AI Foundry 项目,并避免在它们之间共享连接。 如果工作负荷不需要隔离,请使用单个项目。

基于角色的访问权限角色

你负责为系统分配的托管标识创建所需的角色分配。 下表总结了必须添加到应用服务、Azure AI Foundry 项目以及使用该门户的个人的角色分配:

资源 角色 范围
应用服务 Azure AI 用户 Azure AI Foundry 帐户
Azure AI Foundry 项目 搜索索引数据读取者 AI 搜索
门户用户(针对每个人) Azure AI 开发人员 Azure AI Foundry 帐户

网络安全

为了简化构建端到端聊天解决方案的学习体验,此体系结构不实现网络安全。 它使用标识作为其外围,并使用公有云构造。 可从 Internet 访问 AI 搜索、Azure AI Foundry 和应用服务等服务。 此设置会增加体系结构的攻击面。

此体系结构也不限制出口流量。 例如,可以将代理配置为基于终结点的 OpenAPI 规范连接到任何公共终结点。 因此,无法通过网络控制防止专用地面数据的数据外泄。

有关体系结构中作为额外外围的网络安全性的详细信息,请参阅 “网络”。

防守者

对于此基本体系结构,无需为任何服务启用 Microsoft Defender 云工作负荷保护计划。 迁移到生产环境时,请遵循 Microsoft Defender 的基线体系结构中的安全指南 ,该体系结构使用多个计划来涵盖工作负荷。

通过策略进行治理

此体系结构不通过 Azure Policy 实现治理。 在走向生产时,请遵循 基线体系结构中的治理建议。 这些建议在工作负荷的组件中添加 Azure Policy。

成本优化

成本优化侧重于减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅成本优化设计评审核对清单

此基本体系结构并不表示生产就绪解决方案的成本。 它还不包括用于防范成本溢出的控制措施。 以下注意事项概述了此体系结构不包含的关键功能。 这些功能会影响成本。

  • 此体系结构假定部署的 Azure OpenAI 模型接收有限的调用。 因此,建议使用 Global Standard 部署类型进行即用即付定价,而不是预配的吞吐量部署类型。 在转向生产解决方案时,请遵循基线体系结构中的 成本优化指南

  • Foundry 代理服务会产生聊天交互期间上传的文件的费用。 如果文件上传功能不是所需用户体验的一部分,请不要将其提供给应用程序用户。 额外的知识连接,如 使用必应工具的地面,有自己的定价结构。

    Foundry 代理服务是一种无代码解决方案,这意味着无法确定性地控制每个请求调用的工具或知识源。 在成本建模中,假设每个连接的最大使用量。

  • 此体系结构在单个实例上使用应用服务基本定价层,该层不提供可用性区域中断的保护。 基线应用服务体系结构建议使用具有三个或更多辅助角色实例的高级计划以实现高可用性。 此方法会影响成本。

  • 此体系结构使用没有添加副本的 AI 搜索基本定价层。 此拓扑无法承受 Azure 可用性区域故障。 基线端到端聊天体系结构建议使用标准定价层或更高层部署工作负荷,并部署三个或多个副本。 在转向生产时,此方法可能会影响成本。

  • 此体系结构不包括成本治理或包含控件。 请确保防范未治理的进程或使用情况,这些流程或使用情况可能会产生高成本的即用即付服务,例如在 Azure AI Foundry 中部署的模型。

卓越运营

卓越运营涵盖了部署应用程序并使其在生产环境中保持运行的运营流程。 有关详细信息,请参阅设计卓越运营的审查清单

监测

此体系结构为所有服务配置诊断。 除应用服务和 Azure AI Foundry 以外的所有服务捕获日志。 应用服务捕获AppServiceHTTPLogsAppServiceConsoleLogsAppServiceAppLogsAppServicePlatformLogs。 Azure AI Foundry 捕获 RequestResponse。 在 POC 阶段,应了解哪些日志和指标可用于收集。 迁移到生产环境时,请删除不增加值的日志源,并仅为工作负荷的日志接收器创建噪音和成本。

若要使用 Azure AI Foundry 中的监视功能, 请将 Application Insights 资源连接到 Azure AI Foundry 项目

此集成支持监视以下数据:

  • 实时监视令牌使用情况,包括提示、完成和总令牌
  • 详细的请求-响应遥测数据,包括延迟、异常和响应质量

还可以 使用 OpenTelemetry 跟踪代理

模型作

此体系结构针对学习进行了优化,不适用于生产用途,因此 GenAIOps 等作指南不在范围内。 进入生产环境时,请遵循 Azure AI Foundry 模型指南

开发

对于基本体系结构,可以在 Azure AI Foundry 门户中使用基于浏览器的体验创建代理。 迁移到生产环境时,请按照基线体系结构中的 开发和源代码管理指南 进行作。 不再需要代理时,请务必将其删除。 如果删除的代理是使用连接的最后一个代理,则还要删除连接。

评估

可以在 Azure AI Foundry 中评估生成应用程序。 建议了解如何 使用计算器来评估生成 AI 应用程序。 这种做法有助于确保所选模型满足客户和工作负载设计要求。

性能效率

性能效率是指工作负荷能够高效地缩放以满足用户需求。 有关详细信息,请参阅性能效率设计评审核对清单

此体系结构不适用于生产部署,因此省略关键性能效率功能:

  • POC 结果应有助于为工作负荷选择正确的应用服务产品。 设计工作负载,以通过水平缩放有效地满足需求。 可以使用水平缩放来调整应用服务计划中计算实例的数量。 不要设计要求你更改计算产品以符合需求的系统。

  • 这种体系结构的大多数组件都采用消耗或即用即付模式。 消耗模型是一种尽力而为的模型,可能会在平台上引入干扰邻居问题或其他压力因素。 确定应用程序在向生产方向移动时是否需要 预配的吞吐量。 预配的吞吐量有助于为 Azure OpenAI 模型部署保留处理能力。 预留容量可为模型提供可预测的性能和吞吐量。

其他设计建议

架构师应设计 AI 和机器学习工作负载,例如,考虑到 Azure 设计指南中的 Well-Architected Framework AI 工作负载 。 从 ide 和 POC 迁移到设计时,请将来自此特定体系结构的见解与 Well-Architected Framework 中更广泛的 AI 和机器学习最佳做法相结合。

部署此方案

部署应用这些建议和注意事项的参考实现

后续步骤