Condividi tramite


Abilitare la memorizzazione nella cache semantica per le API LLM in Gestione API di Azure

SI APPLICA A: tutti i livelli di Gestione API

Abilitare la memorizzazione semantica nella cache delle risposte alle richieste api LLM per ridurre i requisiti di larghezza di banda ed elaborazione imposti sulle API back-end e ridurre la latenza percepita dai consumer dell'API. Con la memorizzazione nella cache semantica, è possibile restituire risposte memorizzate nella cache per richieste identiche e anche per le richieste simili, anche se il testo non è identico. Per informazioni generali, vedere Esercitazione: Usare Redis gestito di Azure come cache semantica.

Note

I passaggi di configurazione descritti in questo articolo illustrano come abilitare la memorizzazione nella cache semantica per le API aggiunte a Gestione API da Azure OpenAI nei modelli di Microsoft Foundry. È possibile applicare passaggi simili per abilitare la memorizzazione nella cache semantica per le API LLM (Large Language Model) corrispondenti disponibili tramite l'API inferenza del modello di intelligenza artificiale di Azure o con modelli compatibili con OpenAI gestiti tramite provider di inferenza di terze parti.

Prerequisiti

Testare la distribuzione dell'API Chat

Prima di tutto, testare la distribuzione di Azure OpenAI per assicurarsi che l'API di completamento della chat o l'API di chat funzioni come previsto. Per la procedura, vedere Importare un'API Azure OpenAI in Gestione API di Azure.

Ad esempio, testare l'API OpenAI Chat di Azure inviando una richiesta POST all'endpoint API con una richiesta nel corpo della richiesta. La risposta deve includere il completamento della richiesta. Richiesta di esempio:

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

con il seguente corpo della richiesta:

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

Quando la richiesta ha esito positivo, la risposta include un completamento per il messaggio di chat.

Creare un back-end per l'API Incorporamenti

Creare una risorsa back-end per la distribuzione dell'API embeddings con le impostazioni seguenti:

  • Nome : nome preferito, ad esempio embeddings-backend. Questo nome viene usato per fare riferimento al back-end nei criteri.

  • Tipo : selezionare URL personalizzato.

  • URL di runtime : URL della distribuzione dell'API embeddings in Azure OpenAI, simile a: https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings (senza parametri di query).

  • Credenziali di autorizzazione : passare alla scheda Identità gestita .

    • Identità client : selezionare Identità assegnata dal sistema o immettere un ID client di identità gestita assegnato dall'utente.
    • ID risorsa : immettere https://cognitiveservices.azure.com/ per Azure OpenAI.

Back-end di incorporamenti di test

Per testare il back-end di incorporamenti, creare un'operazione API per l'API OpenAI di Azure:

  1. Nella scheda Progettazione dell'API selezionare + Aggiungi operazione.
  2. Immettere un nome visualizzato, ad esempio Embeddings e facoltativamente un nome per l'operazione.
  3. Nella sezione Front-end, in URL, selezionare POST e immettere il percorso /.
  4. Nella scheda Intestazioni aggiungere un'intestazione obbligatoria con il nome Content-Type e il valore application/json.
  5. Seleziona Salva.

Configurare i criteri seguenti nella sezione Elaborazione in ingresso dell'operazione API. Nei criteri set-backend-service sostituire il nome del back-end creato.

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

Nella scheda Test testare l'operazione aggiungendo un parametro di query api-version con valore, ad esempio 2024-02-01. Specificare un corpo della richiesta valido. Ad esempio:

{"input":"Hello"}

Se la richiesta ha esito positivo, la risposta include una rappresentazione vettoriale del testo di input. Risposta di esempio:

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

Configurare i criteri di memorizzazione nella cache semantica

Per abilitare la memorizzazione nella cache semantica per le API di Azure OpenAI in Gestione API di Azure, applicare i criteri seguenti: uno per controllare la cache prima di inviare richieste (ricerca) e un'altra per archiviare le risposte per il riutilizzo futuro (archivio):

  • Nella sezione Elaborazione in ingresso per l'API aggiungere i criteri azure-openai-semantic-cache-lookup. Nell'attributo embeddings-backend-id specificare il back-end dell'API Incorporamenti creato.

    Note

    Quando si abilita la memorizzazione nella cache semantica per altre API del modello linguistico di grandi dimensioni, usare invece i criteri llm-semantic-cache-lookup.

    Esempio:

    <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" />
    

    Note

    Aggiungi una policy di limite di velocità (o politica limite di velocità per chiave ) dopo la ricerca della cache per aiutare a limitare il numero di chiamate e prevenire sovraccarichi sul servizio backend nel caso in cui la cache non sia disponibile.

  • Nella sezione Elaborazione in uscita per l'API aggiungere i criteri azure-openai-semantic-cache-store.

    Note

    Quando si abilita la memorizzazione nella cache semantica per altre API del modello linguistico di grandi dimensioni, usare invece i criteri llm-semantic-cache-store.

    Esempio:

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

Confermare la memorizzazione nella cache

Per verificare che la memorizzazione nella cache semantica funzioni come previsto, tracciare un'operazione di Completamento del test o Completamento chat usando la console di test nel portale. Verificare che la cache venga usata nei tentativi successivi esaminando la traccia. Altre informazioni sulla traccia delle chiamate API in Gestione API di Azure.

Modificare l'attributo score-threshold nei criteri di ricerca per controllare la modalità con cui un prompt in ingresso deve corrispondere a un prompt memorizzato nella cache per restituire la risposta archiviata. Una soglia di punteggio inferiore indica che le richieste devono avere una maggiore somiglianza semantica per restituire risposte memorizzate nella cache. I prompt con punteggi superiori alla soglia non usano la risposta memorizzata nella cache.

Ad esempio, se viene usata la cache, la sezione Output include voci simili allo screenshot seguente:

Screenshot della traccia delle richieste nel portale di Azure.