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

Azure API 管理中的生成式 AI 网关功能概述

适用于:所有 API 管理层级

本文介绍 Azure API 管理中的功能,可帮助你管理生成式 AI API,例如由 Azure OpenAI 服务提供的 API。 Azure API 管理提供一系列策略、指标和其他功能,用于增强为智能应用提供服务的 API 的安全性、性能和可靠性。 这些功能统称为生成式 AI API 的生成式 AI (GenAI) 网关功能。

注意

  • 本文重点介绍管理 Azure OpenAI 服务公开的 API 的功能。 许多 GenAI 网关功能适用于其他大型语言模型 (LLM) API,包括通过 Azure AI 模型推理 API提供的功能。
  • 生成式 AI 网关功能是 API 管理的现有 API 网关的功能,而不是单独的 API 网关。 有关 API 管理的详细信息,请参阅 Azure API 管理概述

管理生成式 AI API 的挑战

在生成式 AI 服务中拥有的主要资源之一是令牌。 Azure OpenAI 服务为模型部署分配配额,这些配额以每分钟令牌 (TPM) 表示,然后分布在模型使用者中,例如,不同的应用程序、开发人员团队、公司内的部门等。

借助 Azure,可以轻松地将单个应用连接到 Azure OpenAI 服务:可以使用 API 密钥直接连接到模型部署级别上直接配置的 TPM 限制。 但是,开始扩展应用程序组合时,会看到多个应用调用单个甚至多个 Azure OpenAI 服务终结点,这些终结点部署为即用即付或预配的吞吐量单位 (PTU) 实例。 这伴随着一些挑战:

  • 如何在多个应用程序中跟踪令牌使用情况? 是否可以为使用 Azure OpenAI 服务模型的多个应用程序/团队计算交叉费用?
  • 如何确保单个应用不使用整个 TPM 配额,使其他应用没有使用 Azure OpenAI 服务模型的选项?
  • API 密钥如何安全地分布在多个应用程序中?
  • 如何跨多个 Azure OpenAI 终结点分布负载? 在回退到即用即付实例之前,是否可以确保 PTU 中的已提交容量已用尽?

本文的其余部分介绍了 Azure API 管理如何帮助你解决这些难题。

将 Azure OpenAI 服务资源作为 API 导入

使用一键式体验将 API 从 Azure OpenAI 服务终结点导入 Azure API 管理。 API 管理通过自动导入 Azure OpenAI API 的 OpenAPI 架构,并使用托管标识设置对 Azure OpenAI 终结点的身份验证,从而简化载入过程,无需手动配置。 在同一个用户友好体验中,可以预配置令牌限制发出令牌指标的策略。

门户中 Azure OpenAI API 磁贴的屏幕截图。

令牌限制策略

配置 Azure OpenAI 令牌限制策略,以根据 Azure OpenAI 服务令牌的使用来管理和强制实施每个 API 使用者的限制。 使用此策略可以设置限制,以每分钟令牌 (TPM) 表示。

限制 API 管理中的 Azure OpenAI 服务令牌的关系图。

此策略可灵活分配任何计数器密钥(例如订阅密钥、发起 IP 地址或通过策略表达式定义的任意密钥)基于令牌的限制。 策略还允许在 API 管理端预先计算提示令牌,在已超出限制时最大程度地减少对 Azure OpenAI 服务后端的不必要的请求。

以下基本示例演示如何设置每个订阅密钥 500 的 TPM 限制:

<azure-openai-token-limit counter-key="@(context.Subscription.Id)" 
    tokens-per-minute="500" estimate-prompt-tokens="false" remaining-tokens-variable-name="remainingTokens">
</azure-openai-token-limit>

提示

为了管理和强制实施通过 Azure AI 模型推理 API 提供的 LLM API 的令牌限制,API 管理提供等效 llm-token-limit 策略。

发出令牌指标策略

Azure OpenAI 发出令牌指标策略通过 Azure OpenAI 服务 API 向 Application Insights 发送有关大型语言模型令牌使用量的指标。 该策略有助于概述跨多个应用程序或 API 使用者使用 Azure OpenAI 服务模型的情况。 此策略可用于退款方案、监视和容量规划。

使用 API 管理发出 Azure OpenAI 服务令牌指标的关系图。

此策略捕获提示、完成和令牌使用指标总数,并将其发送到所选的 Application Insights 命名空间。 此外,可以配置或选择预定义维度以拆分令牌使用指标,以便按所选的订阅 ID、IP 地址或自定义维度分析指标。

例如,以下策略将指标发送到按客户端 IP 地址、API 和用户拆分的 Application Insights:

<azure-openai-emit-token-metric namespace="openai">
    <dimension name="Client IP" value="@(context.Request.IpAddress)" />
    <dimension name="API ID" value="@(context.Api.Id)" />
    <dimension name="User ID" value="@(context.Request.Headers.GetValueOrDefault("x-user-id", "N/A"))" />
</azure-openai-emit-token-metric>

提示

为了发送通过 Azure AI 模型推理 API 提供的 LLM API 指标,API 管理提供等效的 llm-token-limit 策略。

后端负载均衡器和断路器

生成智能应用程序时面临的一个难题是确保应用程序能够复原到后端故障,并且可以处理高负载。 通过在 Azure API 管理中使用后端配置 Azure OpenAI 服务终结点,可以跨终结点均衡负载。 还可以定义断路器规则,以在请求未响应时停止转发到 Azure OpenAI 服务后端。

后端负载均衡器支持轮循机制、加权负载均衡和基于优先级的负载均衡,从而灵活地定义满足特定要求的负载分发策略。 例如,在负载均衡器配置中定义优先级,以确保特定 Azure OpenAI 终结点(尤其是作为 PTU 购买的终结点)的最佳利用率。

在 API 管理中使用后端负载均衡的关系图。

后端断路器具有动态行程持续时间,并应用后端提供的 Retry-After 标头中的值。 这可以确保后端的精确和及时恢复,最大限度地利用优先级后端。

在 API 管理中使用后端断路器的关系图。

语义缓存策略

配置 Azure OpenAI 语义缓存策略,以便通过存储完成情况来优化令牌使用,以执行类似的提示。

API 管理中的语义缓存关系图。

在 API 管理中,使用 Azure Redis Enterprise 或其他外部缓存启用语义缓存,该外部缓存与 RediSearch 兼容,并载入 Azure API 管理。 通过使用 Azure OpenAI 服务嵌入 API,azure-openai-semantic-cache-storeazure-openai-semantic-cache-lookup 策略存储,并从缓存中检索语义类似的提示完成。 此方法可确保重复使用完成,从而减少令牌消耗,并提高响应性能。

提示

若要为可通过 Azure AI 模型推理 API 提供的 LLM API 启用语义缓存,API 管理提供了等效的 llm-semantic-cache-store-policyllm-semantic-cache-lookup-policy 策略。

实验室和示例

体系结构和设计注意事项