Udostępnij za pomocą


Włączanie buforowania semantycznego dla interfejsów API LLM w usłudze Azure API Management

DOTYCZY: Wszystkie warstwy usługi API Management

Włącz buforowanie semantyczne odpowiedzi na żądania interfejsu API LLM, aby zmniejszyć wymagania dotyczące przepustowości i przetwarzania nałożone na interfejsy API zaplecza oraz aby zmniejszyć opóźnienia odczuwane przez użytkowników API. Dzięki buforowaniu semantycznego można zwracać buforowane odpowiedzi dla identycznych zapytań, a także zapytań o podobnym znaczeniu, nawet jeśli tekst nie jest identyczny. Aby uzyskać informacje ogólne, zobacz Samouczek: korzystanie z usługi Azure Managed Redis jako semantycznej pamięci podręcznej.

Uwaga

Kroki konfiguracji w tym artykule pokazują, jak włączyć buforowanie semantyczne dla interfejsów API dodanych do usługi API Management z poziomu usługi Azure OpenAI w modelach rozwiązania Microsoft Foundry. Możesz zastosować podobne kroki, aby włączyć buforowanie semantyczne dla odpowiednich interfejsów API dużych modeli językowych (LLM) dostępnych za pośrednictwem Azure AI Model Inference API lub modeli zgodnych z OpenAI obsługiwanych przez dostawców wnioskowania innych firm.

Wymagania wstępne

Testowanie wdrożenia interfejsu API do czatu

Najpierw przetestuj wdrożenie usługi Azure OpenAI, aby upewnić się, że API Chat Completion lub Chat API działa zgodnie z oczekiwaniami. Aby uzyskać instrukcje, zobacz Importowanie interfejsu API usługi Azure OpenAI do usługi Azure API Management.

Na przykład przetestuj interfejs API czatu Usługi Azure OpenAI, wysyłając żądanie POST do punktu końcowego interfejsu API z monitem w treści żądania. Odpowiedź powinna zawierać zakończenie polecenia. Przykładowe żądanie:

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

z treścią żądania:

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

Po pomyślnym zakończeniu żądania odpowiedź zawiera zakończenie wiadomości na czacie.

Tworzenie zaplecza na potrzeby osadzania interfejsu API

Utwórz zasób backendu dla wdrożenia API osadzania przy użyciu następujących ustawień:

  • Nazwa — wybrana nazwa, taka jak embeddings-backend. Nazwa ta służy do odwoływania się do zaplecza w ramach zasad.

  • Typ — wybierz niestandardowy adres URL.

  • Adres URL środowiska uruchomieniowego — adres URL wdrożenia interfejsu API osadzania w usłudze Azure OpenAI podobny do: https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings (bez parametrów zapytania).

  • Poświadczenia autoryzacyjne — przejdź na kartę Tożsamość zarządzana.

    • Tożsamość klienta — wybierz tożsamość przypisaną przez system lub wprowadź identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika.
    • Identyfikator zasobu — wprowadź wartość https://cognitiveservices.azure.com/ dla usługi Azure OpenAI.

Testowanie backendu dla osadzania danych

Aby przetestować zaplecze implementacji, utwórz operację dla interfejsu API Azure OpenAI.

  1. Na karcie Projektowanie interfejsu API wybierz pozycję + Dodaj operację.
  2. Wprowadź nazwę wyświetlaną , taką jak Osadzanie i opcjonalnie nazwę operacji.
  3. W sekcji Frontend, w polu URL, wybierz POST i wprowadź ścieżkę /.
  4. Na karcie Nagłówki dodaj wymagany nagłówek z nazwą Content-Type i wartością application/json.
  5. Wybierz Zapisz.

Skonfiguruj następujące zasady w sekcji Przetwarzanie przychodzące operacji interfejsu API. W polityce set-backend-service zastąp nazwę utworzonego zaplecza.

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

Na karcie Test przetestuj Podaj prawidłową treść żądania. Na przykład:

{"input":"Hello"}

Jeśli żądanie zakończy się pomyślnie, odpowiedź zawiera wektorową reprezentację tekstu wejściowego. Przykładowa odpowiedź:

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

Konfigurowanie zasad buforowania semantycznego

Aby włączyć pamięć podręczną semantyczną dla interfejsów API usługi Azure OpenAI w usłudze Azure API Management, zastosuj następujące zasady: jedna, aby sprawdzić pamięć podręczną przed wysłaniem żądań (wyszukiwanie), a druga do przechowywania odpowiedzi na przyszłe potrzeby (przechowywanie):

  • W sekcji Przetwarzanie przychodzące dla interfejsu API dodaj zasady azure-openai-semantic-cache-lookup. W atrybucie embeddings-backend-id określ utworzone zaplecze interfejsu API osadzania.

    Uwaga

    Podczas włączania buforowania semantycznego dla innych dużych modeli językowych interfejsów API należy użyć llm-semantic-cache-lookup zamiast tego.

    Przykład:

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

    Uwaga

    Dodaj zasadę limitowania szybkości (lub limitowania szybkości według klucza) po wyszukiwaniu w pamięci podręcznej, aby pomóc ograniczyć liczbę wywołań i zapobiec przeciążeniu usługi zaplecza, jeśli pamięć podręczna nie jest dostępna.

  • W sekcji Przetwarzanie ruchu wychodzącego dla interfejsu API dodaj zasadę azure-openai-semantic-cache-store.

    Uwaga

    Podczas włączania buforowania semantycznego dla innych dużych modeli językowych API użyj polityki llm-semantic-cache-store.

    Przykład:

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

Potwierdź buforowanie

Aby potwierdzić, że buforowanie semantyczne działa zgodnie z oczekiwaniami, prześledzić operację ukończenia testu lub ukończenia czatu przy użyciu konsoli testowej w portalu. Upewnij się, że pamięć podręczna jest używana podczas kolejnych prób, sprawdzając ślad. Dowiedz się więcej na temat śledzenia wywołań interfejsu API w usłudze Azure API Management.

score-threshold Dostosuj atrybut w zasadach wyszukiwania, aby kontrolować, jak ściśle przychodzący monit musi odpowiadać buforowanemu monitowi, aby zwrócić jego przechowywaną odpowiedź. Niższy próg oceny oznacza, że zapytania muszą mieć większe semantyczne podobieństwo, żeby zwracały buforowane odpowiedzi. Polecenia z wynikami powyżej progu nie używają buforowanej odpowiedzi.

Jeśli na przykład używana jest pamięć podręczna, sekcja Dane wyjściowe zawiera wpisy podobne do poniższych zrzutów ekranu:

Zrzut ekranu przedstawiający śledzenie żądania w witrynie Azure Portal.