Freigeben über


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

GILT FÜR: Alle API Management-Ebenen

Aktivieren Sie das semantische Zwischenspeichern von Antworten auf LLM-API-Anfragen, um die Bandbreiten- und Verarbeitungsanforderungen zu verringern, die durch die Backend-APIs entstehen, und die Latenz für API-Nutzer zu reduzieren. Mit der semantischen Zwischenspeicherung können Sie zwischengespeicherte Antworten für identische Eingabeaufforderungen und auch für Eingabeaufforderungen zurückgeben, die in der Bedeutung ähnlich sind, auch wenn der Text nicht identisch ist. Hintergrundinformationen finden Sie im Lernprogramm: Verwenden von Azure Managed Redis als semantischer Cache.

Hinweis

Die Konfigurationsschritte in diesem Artikel zeigen, wie Sie die semantische Zwischenspeicherung für APIs aktivieren, die der API-Verwaltung von Azure OpenAI in Microsoft Foundry-Modellen hinzugefügt wurden. Sie können ähnliche Schritte anwenden, um die semantische Zwischenspeicherung für entsprechende LLM-APIs (Large Language Model) zu aktivieren, die über die Azure AI Model Inference-API oder mit OpenAI-kompatiblen Modellen bereitgestellt werden, die von Drittanbietern bereitgestellt werden.

Voraussetzungen

Testen der Chat-API-Bereitstellung

Testen Sie zunächst die Azure OpenAI-Bereitstellung, um sicherzustellen, dass die Chat-Vervollständigungs-API oder 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

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

  • Name – Ein Name Ihrer Wahl, z. B. Einbettungen-Backend. Sie verwenden diesen Namen, um in Richtlinien auf das Back-End zu verweisen.

  • Typ: Wählen Sie Benutzerdefinierte URL aus.

  • Laufzeit-URL – Die URL der Bereitstellung der Einbettungs-API in Azure OpenAI, ähnlich wie: https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings (ohne Abfrageparameter).

  • Autorisierungsanmeldeinformationen – Wechseln Sie zur Registerkarte "Verwaltete Identität ".

    • Clientidentität – Wählen Sie die vom System zugewiesene Identität aus, oder geben Sie eine vom Benutzer zugewiesene verwaltete Identitätsclient-ID ein.
    • Ressourcen-ID – Geben Sie https://cognitiveservices.azure.com/ für Azure OpenAI ein.

Test des Einbettungs-Backends

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

  1. Wählen Sie auf der Registerkarte Entwurf Ihrer API die Option + Vorgang hinzufügen aus.
  2. Geben Sie einen Anzeigenamen wie Einbettungen 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. Beispielantwort:

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

Konfigurieren von Richtlinien für die semantische Zwischenspeicherung

Um die semantische Zwischenspeicherung für Azure OpenAI-APIs in Azure API Management zu aktivieren, wenden Sie die folgenden Richtlinien an: eine, um den Cache vor dem Senden von Anforderungen (Lookup) zu überprüfen, und eine andere, um Antworten für die zukünftige Wiederverwendung (Speicher) zu speichern:

  • 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.15"
        embeddings-backend-id="embeddings-backend"
        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>
    <rate-limit calls="10" renewal-period="60" />
    

    Hinweis

    Fügen Sie nach dem Cache-Nachschlagevorgang eine rate-limit-Richtlinie (oder eine rate-limit-by-key-Richtlinie) hinzu, um die Anzahl der Aufrufe zu begrenzen und eine Überlastung des Backend-Dienstes zu verhindern, falls der Cache nicht verfügbar ist.

  • 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 wie erwartet funktioniert, verfolgen Sie einen Testabschluss- oder Chatabschlussvorgang mithilfe der Testkonsole im Portal nach. Stellen Sie sicher, dass der Cache bei nachfolgenden Versuchen verwendet wird, indem Sie das Protokoll überprüfen. Erfahren Sie mehr über die Ablaufverfolgung von API-Aufrufen in Azure API Management.

Passen Sie das score-threshold-Attribut in der Nachschlage-Richtlinie an, um zu steuern, wie genau eine eingehende Eingabe mit einer zwischengespeicherten Eingabe übereinstimmen muss, um die gespeicherte Antwort zurückzugeben. Ein niedrigerer Schwellenwert bedeutet, dass Eingabeaufforderungen eine höhere semantische Ähnlichkeit aufweisen müssen, um zwischengespeicherte Antworten zurückzugeben. Aufforderungen mit Ergebnissen oberhalb des Schwellenwerts verwenden die zwischengespeicherte Antwort nicht.

Wenn beispielsweise der Cache verwendet wird, enthält der Ausgabeabschnitt Einträge, die dem folgenden Screenshot ähneln:

Screenshot: Anforderungsablaufverfolgung im Azure-Portal