Dela via


Aktivera semantisk cachelagring för LLM-API:er i Azure API Management

GÄLLER FÖR: Alla API Management-nivåer

Aktivera semantisk cachelagring av svar på LLM API-begäranden för att minska bandbredds- och bearbetningskraven för serverdels-API:er och lägre svarstid som uppfattas av API-konsumenter. Med semantisk cachelagring kan du returnera cachelagrade svar för identiska frågor och även för frågor som liknar detta, även om texten inte är identisk. Bakgrund finns i Självstudie: Använda Azure Managed Redis som en semantisk cache.

Anmärkning

Konfigurationsstegen i den här artikeln visar hur du aktiverar semantisk cachelagring för API:er som lagts till i API Management från Azure OpenAI i Azure AI Foundry-modeller. Du kan använda liknande steg för att aktivera semantisk cachelagring för motsvarande API:er för stora språkmodeller (LLM) som är tillgängliga via Azure AI Model Inference API eller med OpenAI-kompatibla modeller som hanteras via tredjeparts slutsatsdragningsproviders.

Förutsättningar

Test chat-API-distribution

Testa först Azure OpenAI-distributionen för att se till att API:et för chattens slutförande eller chatt-API:et fungerar som förväntat. Anvisningar finns i Importera ett Azure OpenAI API till Azure API Management.

Testa till exempel Azure OpenAI Chat-API:et genom att skicka en POST-begäran till API-slutpunkten med en uppmaning i begärandetexten. Svaret bör innehålla slutförandet av uppmaningen. Exempelbegäran:

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

med begärandetext:

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

När begäran lyckas innehåller svaret ett slutförande för chattmeddelandet.

Skapa en serverdel för inbäddnings-API

Skapa en serverdelsresurs för inbäddnings-API-distributionen med följande inställningar:

  • Namn – ett valfritt namn, till exempel embeddings-backend. Du använder det här namnet för att referera till serverdelen i principer.

  • Typ – Välj anpassad URL.

  • Körnings-URL – URL:en för inbäddnings-API-distributionen i Azure OpenAI, ungefär som: https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings (utan frågeparametrar).

  • Autentiseringsuppgifter för auktorisering – Gå till fliken Hanterad identitet .

    • Klientidentitet – Välj Systemtilldelad identitet eller ange ett användartilldelat klient-ID för hanterad identitet.
    • Resurs-ID – Ange https://cognitiveservices.azure.com/ för Azure OpenAI.

Testa backend för inbäddningar

Om du vill testa serverdelen för inbäddningar skapar du en API-åtgärd för ditt Azure OpenAI-API:

  1. På fliken Design i ditt API väljer du + Lägg till åtgärd.
  2. Ange ett visningsnamn , till exempel Inbäddningar och eventuellt ett Namn för åtgärden.
  3. I avsnittet Klientdel i URL väljer du POST och anger sökvägen /.
  4. På fliken Rubriker lägger du till en obligatorisk rubrik med namnet Content-Type och värdet application/json.
  5. Välj Spara.

Konfigurera följande principer i avsnittet Inkommande bearbetning i API-åtgärden. I policyn set-backend-service, ersätt namnet på den serverdel du skapade.

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

På fliken Test testar du åtgärden genom att lägga till en api-version frågeparameter med värdet , till exempel 2024-02-01. Ange en giltig begärandetext. Till exempel:

{"input":"Hello"}

Om begäran lyckas innehåller svaret en vektorrepresentation av indatatexten. Exempelsvar:

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

Konfigurera principer för semantisk cachelagring

Om du vill aktivera semantisk cachelagring för Azure OpenAI-API:er i Azure API Management använder du följande principer: en för att kontrollera cachen innan begäranden skickas (sökning) och en annan för att lagra svar för framtida återanvändning (arkiv):

  • I avsnittet Inkommande bearbetning för API:et lägger du till principen azure-openai-semantic-cache-lookup . embeddings-backend-id I attributet anger du serverdelen för API för inbäddningar som du skapade.

    Anmärkning

    När du aktiverar semantisk cachelagring för andra API:er för stora språkmodeller använder du principen llm-semantic-cache-lookup i stället.

    Exempel:

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

    Anmärkning

    Den hastighetsbegränsningsprincip som lagts till efter cachesökningen hjälper till att begränsa antalet anrop för att förhindra överlagring på serverdelstjänsten om cachen inte är tillgänglig.

  • I avsnittet Utgående bearbetning för API:et lägger du till principen azure-openai-semantic-cache-store .

    Anmärkning

    När du aktiverar semantisk cachelagring för andra API:er för stora språkmodeller använder du principen llm-semantic-cache-store i stället.

    Exempel:

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

Bekräfta cachelagring

För att bekräfta att semantisk cachelagring fungerar som förväntat kan du spåra en teståtgärd för slutförande eller chatt med hjälp av testkonsolen i portalen. Bekräfta att cachen används vid efterföljande försök genom att granska spårningen. Läs mer om att spåra API-anrop i Azure API Management.

score-threshold Justera attributet i uppslagsprincipen för att styra hur nära en inkommande fråga måste matcha en cachelagrad uppmaning för att returnera dess lagrade svar. Ett tröskelvärde för lägre poäng innebär att uppmaningar måste ha högre semantisk likhet för att returnera cachelagrade svar. Frågor med poäng över tröskelvärdet använder inte det cachelagrade svaret.

Om cachen till exempel används innehåller avsnittet Utdata poster som liknar följande skärmbild:

Skärmbild av spårning av begäran i Azure Portal.