適用於:所有 APIM 層
本文介紹 Azure API 管理 中的功能,可協助您管理產生 AI API,例如 Azure OpenAI 服務所提供的 API。 Azure API 管理 提供一系列原則、計量和其他功能,以增強為智慧型手機應用程式提供服務之 API 的安全性、效能和可靠性。 這些功能統稱為 AI 閘道功能 ,適用於您的行用 AI API。
注意
- 使用 AI 閘道功能來管理由 Azure OpenAI 服務公開的 API、透過 Azure AI 模型推斷 API 取得,或使用透過第三方推斷提供者提供的 OpenAI 相容模型。
- 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 令牌限制原則 ,以根據 Azure OpenAI 服務令牌的使用方式管理及強制執行每個 API 取用者的限制。 使用此原則,您可以設定速率限制,以每分鐘令牌表示(TPM)。 您也可以在指定的期間內設定令牌配額,例如每小時、每日、每周、每月或每年。
此原則提供彈性來指派任何計數器密鑰的令牌型限制,例如訂用帳戶密鑰、原始 IP 位址,或透過原則表達式定義的任意密鑰。 此原則也會在 Azure 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>
提示
若要管理並強制執行其他 LLM API 的令牌限制,API 管理會提供對等 的 llm-token-limit 原則。
發出令牌計量原則
Azure OpenAI 發出令牌計量原則會透過 Azure OpenAI 服務 API 將 LLM 令牌耗用量的相關計量傳送至 Application Insights。 此原則有助於提供跨多個應用程式或 API 取用者使用 Azure OpenAI 服務模型的概觀。 此原則對於退款案例、監視和容量規劃很有用。
此原則會擷取提示、完成和令牌使用計量總計,並將其傳送至您選擇的 Application Insights 命名空間。 此外,您可以從預先定義的維度設定或選取來分割令牌使用計量,以便依訂用帳戶標識碼、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>
提示
為了傳送其他 LLM API 的計量,API 管理會提供對應的 llm-emit-token-metric 策略。
後端負載平衡器和斷路器
建置智慧型手機應用程式時,其中一個挑戰是確保應用程式能夠復原後端失敗,而且可以處理高負載。 藉由在 Azure API 管理 中使用後端來設定 Azure OpenAI 服務端點,您可以平衡其之間的負載。 如果要求沒有回應,您也可以定義斷路器規則,以停止將要求轉送至 Azure OpenAI 服務後端。
後端 負載平衡器 支援迴圈配置資源、加權和優先順序型負載平衡,讓您有彈性地定義符合特定需求的負載平衡策略。 例如,在負載平衡器組態中定義優先順序,以確保特定 Azure OpenAI 端點的最佳使用率,特別是購買為 PTU 的端點。
後端 斷路器 具有動態行程持續時間,並套用來自後端所提供之 Retry-After 標頭的值。 這可確保後端的精確且及時復原,將優先順序後端的使用率最大化。
語意快取原則
設定 Azure OpenAI 語意快 取原則,藉由儲存類似提示的完成,將令牌使用優化。
在 API 管理中,使用 Azure Redis Enterprise、Azure 託管 Redis 或其他與 RediSearch 相容的外部快取,整合至 Azure API 管理,以啟用語意快取。 藉由使用 Azure OpenAI 服務內嵌 API,azure-openai-semantic-cache-store 和 azure-openai-semantic-cache-lookup 原則存放區,並從快取擷取語意上類似的提示完成。 此方法可確保完成重複使用,進而降低令牌耗用量並改善回應效能。
提示
為了啟用其他 LLM API 的語意快取,API 管理提供相應的 llm-semantic-cache-store-policy 和 llm-semantic-cache-lookup-policy 原則。
記錄令牌使用、提示訊息和完成過程
在您的 API 管理實例中啟用 診斷設定 ,以記錄閘道針對大型語言模型 REST API 所處理的要求。 針對每個要求,數據會傳送至 Azure 監視器,包括令牌使用方式(提示令牌、完成令牌和令牌總計)、所使用的模型名稱,以及選擇性地要求和回應訊息(提示和完成)。 大型要求和回應會分割成多個記錄項目,視需要循序編號進行後續重建。
API 管理的系統管理員能夠使用 LLM 閘道記錄及 API 管理閘道記錄,以便用於以下的情境:
- 計算計費使用量 - 根據每個應用程式或 API 取用者取用的令牌數目計算計費使用量計量(例如,依訂用帳戶標識元或 IP 位址分割)。
- 檢查訊息 - 若要協助除錯或稽核,請檢查和分析提示和回應。
深入瞭解 使用 Azure 監視器監視 API 管理。
內容安全策略
為了協助保護使用者免於有害、冒犯性或誤導性的內容,您可以藉由設定 llm-content-safety 原則,自動篩選所有進入 LLM API 的請求。 此原則會在傳送至後端 LLM API 之前,先將 LLM 提示的內容安全性檢查傳送至 Azure AI 內容安全 服務,以強制執行內容安全性檢查。
實驗室和範例
- 適用於 Azure API 管理的 AI 閘道功能的實驗室
- AI 閘道研討會
- Azure API 管理 (APIM) - Azure OpenAI 範例 (Node.js)
- 使用 Azure OpenAI 搭配 API 管理 的 Python 範例程序代碼