Freigeben über


Aktivieren der semantischen Zwischenspeicherung für Azure OpenAI-APIs in Azure API Management

GILT FÜR: Alle API Management-Ebenen

Aktivieren Sie das semantische Zwischenspeichern von Antworten auf Azure OpenAI-API-Anforderungen, um die Bandbreiten- und Verarbeitungsanforderungen an die Backend-APIs zu reduzieren und die von den API-Consumern wahrgenommene Latenz zu verringern. Mit der semantischen Zwischenspeicherung können Sie zwischengespeicherte Antworten für identische Prompts und auch für Prompts, die eine ähnliche Bedeutung haben, zurückgeben, selbst wenn der Text nicht identisch ist. Hintergrundinformationen finden Sie im Tutorial: Verwenden von Azure Cache for Redis als semantischen Cache.

Hinweis

Die Konfigurationsschritte in diesem Artikel aktivieren die semantische Zwischenspeicherung für Azure OpenAI-APIs. Diese Schritte können generalisiert werden, um die semantische Zwischenspeicherung für entsprechende LLM-APIs (Large Language Model, großes Sprachmodell) zu aktivieren, die über die Azure KI-Modellinferenz-API verfügbar sind.

Voraussetzungen

Testen der Chat-API-Bereitstellung

Testen Sie zunächst die Azure OpenAI-Bereitstellung, um sicherzustellen, dass die Chat-Vervollständigungs-API bzw. die Chat-API erwartungsgemäß funktioniert. Eine schrittweise Anleitung finden Sie unter Importieren einer Azure OpenAI-API in Azure API Management.

Testen Sie beispielsweise die Azure OpenAI-Chat-API, indem Sie eine POST-Anforderung mit einem Prompt im Anforderungstext an den API-Endpunkt senden. Die Antwort sollte die Vervollständigung des Prompts enthalten. Beispiel für eine Anforderung:

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

mit dem Anforderungstext:

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

Wenn die Anforderung erfolgreich ist, enthält die Antwort eine Vervollständigung für die Chatnachricht.

Erstellen eines Back-End für die Einbettungs-API

Konfigurieren Sie eine Back-End-Ressource für die Einbettungs-API-Bereitstellung mit den folgenden Einstellungen:

  • Name: Ein Name Ihrer Wahl, z. B. embeddings-backend Sie verwenden diesen Namen, um in Richtlinien auf das Back-End zu verweisen.
  • Typ: Wählen Sie Benutzerdefinierte URL aus.
  • Runtime-URL: Die URL der Einbettungs-API-Bereitstellung in Azure OpenAI Service wie: https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings
  • Autorisierungsanmeldeinformationen: Wechseln Sie zur Registerkarte Verwaltete Identität.
    • Clientidentität: Wählen Sie Systemseitig zugewiesene Identität aus, oder geben Sie die Client-ID einer benutzerseitig zugewiesenen verwalteten Identität ein.
    • Ressourcen-ID: Geben Sie für Azure OpenAI Service https://cognitiveservices.azure.com/ ein.

Test backend

Um das Back-End zu testen, erstellen Sie einen API-Vorgang für Ihre Azure OpenAI Service-API:

  1. Wählen Sie auf der Registerkarte Entwurf Ihrer API die Option + Vorgang hinzufügen aus.
  2. Geben Sie einen Anzeigenamen und optional einen Namen für den Vorgang ein.
  3. Wählen Sie im Abschnitt Front-End inURL die Option POST aus, und geben Sie den Pfad / ein.
  4. Fügen Sie auf der Registerkarte Header einen erforderlichen Header mit dem Namen Content-Type und dem Wert application/json hinzu.
  5. Wählen Sie Speichern aus.

Konfigurieren Sie die folgenden Richtlinien im Abschnitt Eingehende Verarbeitung des API-Vorgangs. Ersetzen Sie in der Richtlinie set-backend-service den Namen durch das von Ihnen erstellte Back-End.

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

Testen Sie auf der Registerkarte Test den Vorgang, indem Sie den Abfrageparameter api-version mit einem Wert wie 2024-02-01 hinzufügen. Geben Sie einen gültigen Anforderungstext an. Zum Beispiel:

{"input":"Hello"}

Wenn die Anforderung erfolgreich ist, enthält die Antwort eine Vektordarstellung des Eingabetexts:

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

Konfigurieren von Richtlinien für die semantische Zwischenspeicherung

Konfigurieren Sie die folgenden Richtlinien, um die semantische Zwischenspeicherung für Azure OpenAI-APIs in Azure API Management zu aktivieren:

  • Fügen Sie im Abschnitt Eingehende Verarbeitung für die API die Richtlinie azure-openai-semantic-cache-lookup hinzu. Geben Sie im Attribut embeddings-backend-id das von Ihnen erstellte Embeddings-API-Back-End an.

    Hinweis

    Wenn Sie die semantische Zwischenspeicherung für andere APIs für große Sprachenmodelle aktivieren, verwenden Sie stattdessen die Richtlinie für llm-semantic-cache-lookup.

    Beispiel:

    <azure-openai-semantic-cache-lookup
        score-threshold="0.8"
        embeddings-backend-id="embeddings-deployment"
        ignore-system-messages="true"
        max-message-count="10">
        <vary-by>@(context.Subscription.Id)</vary-by>
    </azure-openai-semantic-cache-lookup>
    
    
  • Fügen Sie im Abschnitt Ausgehende Verarbeitung für die API die Richtlinie azure-openai-semantic-cache-store hinzu.

    Hinweis

    Wenn Sie die semantische Zwischenspeicherung für andere APIs für große Sprachenmodelle aktivieren, verwenden Sie stattdessen die Richtlinie für llm-semantic-cache-store.

    Beispiel:

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

Bestätigen der Zwischenspeicherung

Um zu bestätigen, dass die semantische Zwischenspeicherung erwartungsgemäß funktioniert, verfolgen Sie einen Testvervollständigungs- oder Chatvervollständigungsvorgang mithilfe der Testkonsole im Portal. Vergewissern Sie sich, dass der Cache bei nachfolgenden Versuchen verwendet wurde, indem Sie die Ablaufverfolgung überprüfen. Erfahren Sie mehr über die Ablaufverfolgung von API-Aufrufen in Azure API Management.

Wenn der Cache verwendet wurde, enthält der Ausgabeabschnitt beispielsweise Einträge, die denen im folgenden Screenshot ähneln:

Screenshot: Anforderungsablaufverfolgung im Azure-Portal