Wdrażanie aplikacji korzystającej z interfejsu OpenAI w usłudze Azure Kubernetes Service (AKS)
Z tego artykułu dowiesz się, jak wdrożyć aplikację korzystającą z usługi Azure OpenAI lub OpenAI w usłudze AKS. Za pomocą interfejsu OpenAI można łatwo dostosować różne modele sztucznej inteligencji, takie jak generowanie zawartości, podsumowywanie, wyszukiwanie semantyczne i język naturalny do generowania kodu dla określonych zadań. Zacznij od wdrożenia klastra usługi AKS w ramach subskrypcji platformy Azure. Następnie wdrożysz usługę OpenAI i przykładową aplikację.
Przykładowa aplikacja natywna w chmurze jest reprezentatywna dla rzeczywistych implementacji. Aplikacja wielokontenerowa składa się z aplikacji napisanych w wielu językach i strukturach, w tym:
- Golang z ginem
- Rust with Actix-Web
- Język JavaScript z Vue.js i funkcją Fastify
- Python z interfejsem FastAPI
Te aplikacje udostępniają frontony dla klientów i administratorów sklepów, interfejsów API REST do wysyłania danych do kolejki komunikatów RabbitMQ i bazy danych MongoDB oraz aplikacji konsoli w celu symulowania ruchu.
Uwaga
Nie zalecamy uruchamiania kontenerów stanowych, takich jak MongoDB i Rabbit MQ, bez trwałego przechowywania w środowisku produkcyjnym. Używamy ich tutaj dla uproszczenia, ale zalecamy korzystanie z usług zarządzanych, takich jak Azure CosmosDB lub Azure Service Bus.
Aby uzyskać dostęp do bazy kodu usługi GitHub dla przykładowej aplikacji, zobacz Pokaz sklepu AKS.
Zanim rozpoczniesz
- Potrzebujesz konta platformy Azure z aktywną subskrypcją. Jeśli go nie masz, utwórz bezpłatne konto.
- Na potrzeby tego pokazu możesz użyć usługi Azure OpenAI lub usługi OpenAI.
- Jeśli planujesz korzystanie z usługi Azure OpenAI, musisz zażądać dostępu, aby włączyć go w subskrypcji platformy Azure przy użyciu formularza Żądanie dostępu do usługi Azure OpenAI Service.
- Jeśli planujesz korzystanie z interfejsu OpenAI, zarejestruj się w witrynie internetowej OpenAI.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Tworzenie grupy zasobów
Grupa zasobów platformy Azure to grupa logiczna, w której wdrażasz zasoby platformy Azure i zarządzasz nimi. Podczas tworzenia grupy zasobów zostanie wyświetlony monit o określenie lokalizacji. Ta lokalizacja to lokalizacja magazynu metadanych grupy zasobów i lokalizacja, w której zasoby są uruchamiane na platformie Azure, jeśli nie określisz innego regionu podczas tworzenia zasobów.
W poniższym przykładzie tworzona jest grupa zasobów o nazwie myResourceGroup w lokalizacji eastus.
Utwórz grupę zasobów przy użyciu
az group create
polecenia .az group create --name myResourceGroup --location eastus
Następujące przykładowe dane wyjściowe pokazują pomyślne utworzenie grupy zasobów:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
Tworzenie klastra AKS
Poniższy przykład tworzy klaster o nazwie myAKSCluster w grupie myResourceGroup.
Utwórz klaster usługi AKS przy użyciu
az aks create
polecenia .az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
Po kilku minutach polecenie zostanie wykonane i zwróci informacje o klastrze w formacie JSON.
Łączenie z klastrem
Aby zarządzać klastrem Kubernetes, należy użyć klienta wiersza polecenia Kubernetes, kubectl. kubectl
program jest już zainstalowany, jeśli używasz usługi Azure Cloud Shell.
Zainstaluj
kubectl
lokalnie przy użyciuaz aks install-cli
polecenia .az aks install-cli
Uwaga
Jeśli system oparty na systemie Linux wymaga podwyższonych uprawnień, możesz użyć
sudo az aks install-cli
polecenia .Skonfiguruj
kubectl
, aby nawiązać połączenie z klastremaz aks get-credentials
Kubernetes przy użyciu polecenia .To polecenie wykonuje następujące operacje:
- Pobiera poświadczenia i konfiguruje interfejs wiersza polecenia platformy Kubernetes do ich używania.
- Używa
~/.kube/config
metody , domyślnej lokalizacji pliku konfiguracji platformy Kubernetes. Określ inną lokalizację pliku konfiguracji platformy Kubernetes przy użyciu argumentu --file .
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Sprawdź połączenie z klastrem
kubectl get
przy użyciu polecenia . To polecenie zwraca listę węzłów klastra.kubectl get nodes
Poniższe przykładowe dane wyjściowe pokazują węzły utworzone w poprzednich krokach. Upewnij się, że stan węzła to Gotowe.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31469198-vmss000000 Ready agent 3h29m v1.25.6 aks-nodepool1-31469198-vmss000001 Ready agent 3h29m v1.25.6 aks-nodepool1-31469198-vmss000002 Ready agent 3h29m v1.25.6
Uwaga
W przypadku klastrów prywatnych węzły mogą być niedostępne, jeśli spróbujesz nawiązać z nimi połączenie za pośrednictwem publicznego adresu IP. Aby rozwiązać ten problem, należy utworzyć punkt końcowy w tej samej sieci wirtualnej co klaster do nawiązania połączenia. Postępuj zgodnie z instrukcjami, aby utworzyć prywatny klaster usługi AKS, a następnie nawiązać z nim połączenie.
Wdrażanie aplikacji
Manifest aplikacji usługi AKS Store obejmuje następujące wdrożenia i usługi Kubernetes:
- Usługa produktu: wyświetla informacje o produkcie.
- Usługa zamawiania: umieszcza zamówienia.
- Usługa makeline: przetwarza zamówienia z kolejki i kończy zamówienia.
- Front sklepu: aplikacja internetowa dla klientów do wyświetlania produktów i składania zamówień.
- Administrator sklepu: aplikacja internetowa do przechowywania pracowników do wyświetlania zamówień w kolejce i zarządzania informacjami o produkcie.
- Klient wirtualny: symuluje tworzenie zamówień zgodnie z harmonogramem.
- Wirtualny proces roboczy: symuluje ukończenie zamówienia zgodnie z harmonogramem.
- Mongo DB: wystąpienie NoSQL dla utrwałych danych.
- Rabbit MQ: kolejka komunikatów dla kolejki zamówień.
Uwaga
Nie zalecamy uruchamiania kontenerów stanowych, takich jak MongoDB i Rabbit MQ, bez trwałego przechowywania w środowisku produkcyjnym. Używamy ich tutaj dla uproszczenia, ale zalecamy korzystanie z usług zarządzanych, takich jak Azure CosmosDB lub Azure Service Bus.
Przejrzyj manifest YAML dla aplikacji.
Wdróż aplikację przy użyciu
kubectl apply
polecenia i określ nazwę manifestu YAML.kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
W poniższych przykładowych danych wyjściowych przedstawiono pomyślnie utworzone wdrożenia i usługi:
deployment.apps/mongodb created service/mongodb created deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/makeline-service created service/makeline-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created deployment.apps/store-admin created service/store-admin created deployment.apps/virtual-customer created deployment.apps/virtual-worker created
Wdrażanie interfejsu OpenAI
Możesz użyć usługi Azure OpenAI lub OpenAI i uruchomić aplikację w usłudze AKS.
- Włącz usługę Azure OpenAI w ramach subskrypcji platformy Azure, wypełniając formularz Żądanie dostępu do usługi Azure OpenAI Service.
- W witrynie Azure Portal utwórz wystąpienie usługi Azure OpenAI.
- Wybierz utworzone wystąpienie usługi Azure OpenAI.
- Wybierz pozycję Klucze i punkty końcowe , aby wygenerować klucz.
- Wybierz pozycję Wdrożenia modelu Zarządzane wdrożenia>, aby otworzyć program Azure OpenAI Studio.
- Utwórz nowe wdrożenie przy użyciu modelu gpt-35-turbo .
Aby uzyskać więcej informacji na temat tworzenia wdrożenia w usłudze Azure OpenAI, zobacz Wprowadzenie do generowania tekstu przy użyciu usługi Azure OpenAI Service.
Wdrażanie usługi sztucznej inteligencji
Po wdrożeniu aplikacji można wdrożyć mikrousługę opartą na języku Python, która używa interfejsu OpenAI do automatycznego generowania opisów nowych produktów dodawanych do katalogu sklepu.
Utwórz plik o nazwie
ai-service.yaml
i skopiuj go w następującym manifeście:apiVersion: apps/v1 kind: Deployment metadata: name: ai-service spec: replicas: 1 selector: matchLabels: app: ai-service template: metadata: labels: app: ai-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: ai-service image: ghcr.io/azure-samples/aks-store-demo/ai-service:latest ports: - containerPort: 5001 env: - name: USE_AZURE_OPENAI value: "True" - name: AZURE_OPENAI_DEPLOYMENT_NAME value: "" - name: AZURE_OPENAI_ENDPOINT value: "" - name: OPENAI_API_KEY value: "" resources: requests: cpu: 20m memory: 50Mi limits: cpu: 50m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: ai-service spec: type: ClusterIP ports: - name: http port: 5001 targetPort: 5001 selector: app: ai-service
Ustaw zmienną środowiskową
USE_AZURE_OPENAI
na"True"
.Pobierz nazwę wdrożenia usługi Azure OpenAI z programu Azure OpenAI Studio i wypełnij
AZURE_OPENAI_DEPLOYMENT_NAME
wartość .Pobierz punkt końcowy usługi Azure OpenAI i klucz interfejsu API usługi Azure OpenAI z witryny Azure Portal, wybierając pozycję Klucze i punkt końcowy w lewym bloku zasobu. Odpowiednio zaktualizuj element
AZURE_OPENAI_ENDPOINT
iOPENAI_API_KEY
w języku YAML.Wdróż aplikację przy użyciu
kubectl apply
polecenia i określ nazwę manifestu YAML.kubectl apply -f ai-service.yaml
W poniższych przykładowych danych wyjściowych przedstawiono pomyślnie utworzone wdrożenia i usługi:
deployment.apps/ai-service created service/ai-service created
Uwaga
Bezpośrednie dodawanie poufnych informacji, takich jak klucze interfejsu API, do plików manifestu kubernetes nie jest bezpieczne i może zostać przypadkowo zatwierdzone w repozytoriach kodu. Dodaliśmy to tutaj dla uproszczenia. W przypadku obciążeń produkcyjnych użyj tożsamości zarządzanej do uwierzytelniania w usłudze Azure OpenAI zamiast tego lub zapisania wpisów tajnych w usłudze Azure Key Vault.
Testowanie aplikacji
Sprawdź stan wdrożonych zasobników przy użyciu polecenia kubectl get pods .
kubectl get pods
Przed przejściem do następnego kroku upewnij się, że wszystkie zasobniki są uruchomione .
NAME READY STATUS RESTARTS AGE makeline-service-7db94dc7d4-8g28l 1/1 Running 0 99s mongodb-78f6d95f8-nptbz 1/1 Running 0 99s order-service-55cbd784bb-6bmfb 1/1 Running 0 99s product-service-6bf4d65f74-7cbvk 1/1 Running 0 99s rabbitmq-9855984f9-94nlm 1/1 Running 0 99s store-admin-7f7d768c48-9hn8l 1/1 Running 0 99s store-front-6786c64d97-xq5s9 1/1 Running 0 99s virtual-customer-79498f8667-xzsb7 1/1 Running 0 99s virtual-worker-6d77fff4b5-7g7rj 1/1 Running 0 99s
Pobierz adres IP aplikacji internetowej administratora sklepu i zapisz aplikację internetową frontonu
kubectl get service
przy użyciu polecenia .kubectl get service store-admin
Aplikacja uwidacznia witrynę administratora magazynu w Internecie za pośrednictwem publicznego modułu równoważenia obciążenia aprowizowanego przez usługę Kubernetes. Ten proces może potrwać kilka minut. Zewnętrzny adres IP początkowo wyświetla oczekujące, dopóki usługa nie pojawi się i wyświetli adres IP.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-admin LoadBalancer 10.0.142.228 40.64.86.161 80:32494/TCP 50m
Powtórz ten sam krok dla usługi o nazwie "store-front".
Otwórz przeglądarkę internetową i przejdź do zewnętrznego adresu IP usługi. W przykładzie pokazanym tutaj otwórz plik 40.64.86.161 , aby wyświetlić pozycję Administrator sklepu w przeglądarce. Powtórz ten sam krok dla aplikacji Store Front.
W obszarze administrator sklepu wybierz kartę Produkty, a następnie wybierz pozycję Dodaj produkty.
Po pomyślnym uruchomieniu polecenia "ai-service" obok pola opisu powinien zostać wyświetlony przycisk Ask OpenAI (Zapytaj interfejs OpenAI). Wypełnij nazwę, cenę i słowa kluczowe, a następnie wygeneruj opis produktu, wybierając pozycję Zapytaj o zapisanie produktu OpenAI>.
Teraz możesz zobaczyć nowy produkt utworzony w witrynie Administrator sklepu używany przez sprzedawców. Na zdjęciu widać, że dodawana jest dżungla Monkey Chew Toy.
Możesz również zobaczyć nowy produkt utworzony w sklepie Front używany przez kupujących. Na zdjęciu widać, że dodawana jest dżungla Monkey Chew Toy. Pamiętaj, aby uzyskać adres IP magazynu frontu
kubectl get service
przy użyciu polecenia .
Następne kroki
Po dodaniu funkcji OpenAI do aplikacji usługi AKS możesz zabezpieczyć dostęp do usługi Azure OpenAI z poziomu usługi Azure Kubernetes Service (AKS).
Aby dowiedzieć się więcej na temat generowania przypadków użycia sztucznej inteligencji, zobacz następujące zasoby:
Azure Kubernetes Service