Włączanie buforowania semantycznego dla interfejsów API usługi Azure OpenAI w usłudze Azure API Management
DOTYCZY: Podstawowa wersja 2 | Standardowa, wersja 2
Włącz buforowanie semantyczne odpowiedzi na żądania interfejsu API usługi Azure OpenAI, aby zmniejszyć wymagania dotyczące przepustowości i przetwarzania nałożone na interfejsy API zaplecza i mniejsze opóźnienia postrzegane przez użytkowników interfejsu API. Dzięki buforowaniu semantyczne można zwracać buforowane odpowiedzi dla identycznych monitów, a także monitów, które są podobne w znaczeniu, nawet jeśli tekst nie jest taki sam. Aby uzyskać informacje na temat tła, zobacz Samouczek: używanie usługi Azure Cache for Redis jako pamięci podręcznej semantycznej.
Uwaga
Kroki konfiguracji w tym artykule umożliwiają buforowanie semantyczne dla interfejsów API usługi Azure OpenAI. Te kroki można uogólnić, aby umożliwić buforowanie semantyczne dla odpowiednich interfejsów API modelu języka (LLM) dostępnych za pośrednictwem interfejsu API wnioskowania modelu AI platformy Azure.
Wymagania wstępne
- Do wystąpienia usługi API Management należy dodać co najmniej jeden interfejs API usługi Azure OpenAI. Aby uzyskać więcej informacji, zobacz Dodawanie interfejsu API usługi Azure OpenAI Service do usługi Azure API Management.
- Usługa Azure OpenAI musi mieć wdrożenia dla następujących elementów:
- Interfejs API uzupełniania czatu (lub interfejs API uzupełniania) — wdrożenie używane na potrzeby wywołań konsumentów interfejsu API
- Interfejs API osadzania — wdrożenie używane do buforowania semantycznego
- Wystąpienie usługi API Management musi być skonfigurowane do używania uwierzytelniania tożsamości zarządzanej w interfejsach API usługi Azure OpenAI. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie i autoryzacja dostępu do interfejsów API usługi Azure OpenAI przy użyciu usługi Azure API Management .
- Azure Cache for Redis Enterprise. Moduł RediSearch musi być włączony w pamięci podręcznej Redis Enterprise Cache.
Uwaga
Moduł RediSearch można włączyć tylko podczas tworzenia nowej pamięci podręcznej Redis Enterprise Cache. Nie można dodać modułu do istniejącej pamięci podręcznej. Dowiedz się więcej
- Zewnętrzna pamięć podręczna skonfigurowana w wystąpieniu usługi Azure API Management. Aby uzyskać instrukcje, zobacz Używanie zewnętrznej pamięci podręcznej Azure Cache for Redis w usłudze Azure API Management.
Testowanie wdrożenia interfejsu API czatu
Najpierw przetestuj wdrożenie usługi Azure OpenAI, aby upewnić się, że interfejs API uzupełniania czatu lub interfejs API czatu 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 monitu. 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
Skonfiguruj zasób zaplecza dla wdrożenia interfejsu API osadzania przy użyciu następujących ustawień:
- Nazwa — wybrana nazwa, na przykład
embeddings-backend
. Ta nazwa służy do odwołowania się do zaplecza w zasadach. - Typ — wybierz niestandardowy adres URL.
- Adres URL środowiska uruchomieniowego — adres URL wdrożenia interfejsu API osadzania w usłudze Azure OpenAI, podobnie jak:
https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings
Testowanie zaplecza
Aby przetestować zaplecze, utwórz operację interfejsu API dla interfejsu API usługi Azure OpenAI Service:
- Na karcie Projektowanie interfejsu API wybierz pozycję + Dodaj operację.
- Wprowadź nazwę wyświetlaną i opcjonalnie nazwę operacji.
- W sekcji Fronton w polu Adres URL wybierz pozycję POST i wprowadź ścieżkę
/
. - Na karcie Nagłówki dodaj wymagany nagłówek z nazwą
Content-Type
i wartościąapplication/json
. - Wybierz pozycję Zapisz
Skonfiguruj następujące zasady w sekcji Przetwarzanie przychodzące operacji interfejsu API. W zasadach 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 operacjęapi-version
, dodając parametr zapytania z wartością taką jak 2024-02-01
. 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:
{
"object": "list",
"data": [{
"object": "embedding",
"index": 0,
"embedding": [
-0.021829502,
-0.007157768,
-0.028619017,
[...]
]
}]
}
Konfigurowanie zasad buforowania semantycznego
Skonfiguruj następujące zasady, aby włączyć buforowanie semantyczne dla interfejsów API usługi Azure OpenAI w usłudze Azure API Management:
W sekcji Przetwarzanie przychodzące dla interfejsu API dodaj zasady wyszukiwania 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 interfejsów API modelu językowego należy zamiast tego użyć zasad llm-semantic-cache-lookup .
Przykład:
<azure-openai-semantic-cache-lookup score-threshold="0.8" embeddings-backend-id="embeddings-deployment" 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>
W sekcji Przetwarzanie ruchu wychodzącego dla interfejsu API dodaj zasady azure-openai-semantic-cache-store.
Uwaga
Podczas włączania buforowania semantycznego dla innych dużych interfejsów API modelu językowego użyj zasad llm-semantic-cache-store .
Przykład:
<azure-openai-semantic-cache-store duration="60" />
Potwierdzanie buforowania
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 została użyta podczas kolejnych prób, sprawdzając ślad. Dowiedz się więcej na temat śledzenia wywołań interfejsu API w usłudze Azure API Management.
Jeśli na przykład użyto pamięci podręcznej, sekcja Dane wyjściowe zawiera wpisy podobne do tych na poniższym zrzucie ekranu: