了解如何将企业级负载均衡添加到应用程序,以将聊天应用扩展到 Azure OpenAI 服务令牌和模型配额限制之外。 此方法使用 Azure API 管理在三个 Azure OpenAI 资源之间智能地定向流量。
本文要求部署两个单独的示例:
- 聊天应用:
- 等待负载均衡器示例部署完成后,再部署聊天应用。
- 如果已部署聊天应用一次,请更改环境变量以支持负载均衡器的自定义终结点,然后重新部署它。
- 使用 Azure API 管理的负载均衡器。
注释
本文使用一个或多个 AI 应用模板作为本文中的示例和指南的基础。 AI 应用模板提供易于部署的维护良好的参考实现。 它们有助于确保 AI 应用的高质量起点。
使用 Azure API 管理对 Azure OpenAI 进行负载均衡的体系结构
由于 Azure OpenAI 资源具有特定的令牌和模型配额限制,因此使用单个 Azure OpenAI 资源的聊天应用很容易因为这些限制而发生对话失败。
若要在不达到这些限制的情况下使用聊天应用,请使用 API 管理的负载均衡解决方案。 此解决方案无缝地将 API 管理中的单个终结点公开到聊天应用服务器。
API 管理资源(作为 API 层)位于一组 Azure OpenAI 资源前面。 API 层适用于两种场景:正常情况下和限流情况下。 在令牌和模型配额可用的 正常方案中 ,Azure OpenAI 资源通过 API 层和后端应用服务器返回 200。
由于配额限制而 限制 资源时,API 层可以立即重试其他 Azure OpenAI 资源,以满足原始聊天应用请求。
先决条件
一份 Azure 订阅。 免费创建一个。
开发容器 可用于这两个示例,其中包含完成本文所需的所有依赖项。 可以使用 Visual Studio Code 在 GitHub Codespaces(浏览器)或本地运行开发容器。
- 只有 GitHub 帐户 才能使用 GitHub Codespaces。
打开 Azure API 管理本地负载均衡器示例应用
GitHub Codespaces 运行由 GitHub 托管的开发容器,将 Visual Studio Code 网页版作为用户界面。 对于最简单的开发环境,请使用 GitHub Codespaces,以便预先安装完成本文所需的合适的开发人员工具和依赖项。
重要
所有 GitHub 帐户每月最多可以使用 GitHub Codespaces 60 小时,其中包含两个核心实例。 有关详细信息,请参阅 GitHub Codespaces 每月所含的存储和计算核心小时数。
部署 Azure API 管理负载均衡器
若要将负载均衡器部署到 Azure,请登录到 Azure 开发人员 CLI(
AZD):azd auth login完成登录说明。
部署负载均衡器应用:
azd up选择用于部署的订阅和区域。 它们不必与聊天应用的订阅和区域相同。
等待部署完成,然后再继续。 此过程最多可能需要 30 分钟。
获取负载均衡器终结点
运行以下 Bash 命令,查看部署中的环境变量。 稍后需要此信息。
azd env get-values | grep APIM_GATEWAY_URL
使用负载均衡器终结点重新部署聊天应用
提供的这些示例是在聊天应用程序的示例中完成的。
- 初始部署
- 重新部署
使用以下选项之一打开聊天应用示例的开发容器。
语言 GitHub Codespaces Visual Studio Code .NET JavaScript Python 登录到 Azure 开发人员 CLI(
AZD):azd auth login完成登录说明。
创建一个名为
chat-app的AZD环境:azd env new <name>添加以下环境变量,该变量告知聊天应用的后端对 Azure OpenAI 请求使用自定义 URL:
azd env set OPENAI_HOST azure_custom添加此环境变量,告知聊天应用的后端 Azure OpenAI 请求的自定义 URL:
azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>部署聊天应用:
azd up
配置 TPM 配额
默认情况下,负载均衡器中的每个 Azure OpenAI 实例部署的容量为每分钟 30,000 个令牌(TPM)。 可以放心地使用聊天应用,它可以支持多个用户同时使用,且不会超出配额。 在以下情况下更改此值:
- 您遇到部署容量错误:请降低该值。
- 需要更高的容量:提高该值。
使用以下命令更改值:
azd env set OPENAI_CAPACITY 50重新部署负载均衡器:
azd up
清理资源
完成聊天应用和负载均衡器后,清理资源。 本文中创建的 Azure 资源将计费给 Azure 订阅。 如果你预计将来不需要这些资源,请将其删除,以避免产生更多费用。
清理聊天应用资源
返回到聊天应用文章以清理这些资源。
清理负载均衡器资源
删除 Azure 资源并删除源代码:
azd down --purge --force
这些开关提供:
-
purge:已删除的资源将立即清除。 可以每分钟重复使用 Azure OpenAI 令牌。 -
force:删除以无提示方式进行,无需用户同意。
清理资源
删除 GitHub Codespaces 环境可确保可以最大程度地提高帐户获得的每核心免费小时数权利。
重要
有关 GitHub 帐户权利的详细信息,请参阅 GitHub Codespaces 每月包含的存储和核心小时数。
找到当前运行的代码空间,这些代码空间源自
azure-samples/openai-apim-lbGitHub 存储库。
打开 GitHub Codespaces 项的上下文菜单,然后选择“ 删除”。
获取帮助
如果在部署 Azure API 管理负载均衡器时遇到问题,请将问题添加到存储库 的问题 网页。
代码示例
本文中使用的示例包括:
相关内容
- 在 Azure Monitor 中查看 Azure API 管理诊断数据。
- 使用 Azure 负载测试 对聊天应用进行负载测试。