共用方式為


在 Azure API 管理中啟用 Azure OpenAI API 的語意快取

適用於:所有 APIM 層

啟用對 Azure OpenAI API 要求的回應語意快取,以降低對後端 API 施加的頻寬和處理需求,以及降低 API 取用者所感知的延遲。 使用語意快取,您可以對相同的提示傳回快取的回應,也可以對意義類似的提示傳回快取的回應,即使文字不同也可行。 如需相關背景,請參閱教學課程:使用 Azure Cache for Redis 做為語意快取

必要條件

測試聊天 API 部署

首先,測試 Azure OpenAI 部署,以確保聊天完成 API 或聊天 API 如預期般運作。 如需相關步驟,請參閱將 Azure OpenAI API 匯入至 Azure API 管理

例如,使用要求本文中的提示,將 POST 要求傳送至 API 端點,以測試 Azure OpenAI 聊天 API。 回應應該包含完成提示。 要求範例︰

POST https://my-api-management.azure-api.net/my-api/openai/deployments/chat-deployment/chat/completions?api-version=2024-02-01

使用要求本文:

{"messages":[{"role":"user","content":"Hello"}]}

當要求成功時,回應會包含完成聊天訊息。

建立內嵌 API 的後端

使用下列設定,為內嵌 API 部署設定後端資源:

  • 名稱 - 您選擇的名稱,例如 embeddings-backend。 您可使用此名稱來參考原則中的後端。
  • 類型:選取 [自訂 URL]
  • 執行階段 URL - Azure OpenAI 服務中內嵌 API 部署的 URL,類似於:https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings

測試後端

若要測試後端,請為您的 Azure OpenAI 服務 API 建立 API 作業:

  1. 在 API 的 [設計] 索引標籤上,選取 [+ 新增作業]
  2. 輸入 [顯示名稱],並選擇性地輸入作業的 [名稱]
  3. 在 [前端] 區段的 [URL] 中,選取 [POST],然後輸入路徑 /
  4. 在 [標頭] 索引標籤上,新增名稱為 Content-Type 和值為 application/json 的必要標頭。
  5. 選取儲存

在 API 作業 [輸入處理] 區段中設定下列原則。 在 set-backend-service 原則中,替代您建立的後端名稱。

<policies>
    <inbound>
        <set-backend-service backend-id="embeddings-backend" />
        <authentication-managed-identity resource="https://cognitiveservices.azure.com/" />
        [...]
    </inbound>
    [...]
</policies>

在 [測試] 索引標籤上,新增具有 2024-02-01 等值的 api-version 查詢參數來測試作業。 提供有效的要求本文。 例如:

{"input":"Hello"}

如果要求成功,回應會包含輸入文字的向量表示:

{
    "object": "list",
    "data": [{
        "object": "embedding",
        "index": 0,
        "embedding": [
            -0.021829502,
            -0.007157768,
            -0.028619017,
            [...]
        ]
    }]
}

設定語意快取原則

設定下列原則,以在 Azure API 管理中啟用 Azure OpenAI API 的語意快取:

  • 在 API 的 [輸入處理] 區段中,新增 azure-openai-semantic-cache-lookup 原則。 在 embeddings-backend-id 屬性中,指定您建立的內嵌 API 後端。

    範例:

    <azure-openai-semantic-cache-lookup
        score-threshold="0.8"
        embeddings-backend-id="embeddings-deployment"
        embeddings-backend-auth="system-assigned"
        ignore-system-messages="true"
        max-message-count="10">
        <vary-by>@(context.Subscription.Id)</vary-by>
    </azure-openai-semantic-cache-lookup>
    
    
  • 在 API 的 [輸出處理] 區段中,新增 azure-openai-semantic-cache-store 原則。

    範例:

    <azure-openai-semantic-cache-store duration="60" />
    

確認快取

若要確認語意快取如預期般運作,請使用入口網站中的測試主控台來追蹤測試完成或聊天完成作業。 藉由檢查追蹤,確認在後續嘗試使用快取。 深入了解在 Azure API 管理中追蹤 API 呼叫

例如,如果使用快取,[輸出] 區段包含類似下列螢幕擷取畫面中的項目:

Azure 入口網站中要求追蹤的螢幕擷取畫面。