Een toepassing implementeren die gebruikmaakt van OpenAI in Azure Kubernetes Service (AKS)
In dit artikel leert u hoe u een toepassing implementeert die gebruikmaakt van Azure OpenAI of OpenAI op AKS. Met OpenAI kunt u eenvoudig verschillende AI-modellen aanpassen, zoals het genereren van inhoud, samenvatting, semantische zoekopdrachten en natuurlijke taal voor het genereren van code, voor uw specifieke taken. U begint met het implementeren van een AKS-cluster in uw Azure-abonnement. Vervolgens implementeert u uw OpenAI-service en de voorbeeldtoepassing.
De voorbeeldcloudeigen toepassing is representatief voor echte implementaties. De toepassing met meerdere containers bestaat uit toepassingen die zijn geschreven in meerdere talen en frameworks, waaronder:
- Golang met Gin
- Roest met Actix-Web
- JavaScript met Vue.js en Fastify
- Python met FastAPI
Deze toepassingen bieden front-ends voor klanten en slaan beheerders, REST API's op voor het verzenden van gegevens naar rabbitMQ-berichtenwachtrij en MongoDB-database en console-apps om verkeer te simuleren.
Notitie
Het wordt afgeraden stateful containers, zoals MongoDB en Rabbit MQ, uit te voeren zonder permanente opslag voor productie. We gebruiken ze hier voor het gemak, maar we raden u aan beheerde services te gebruiken, zoals Azure CosmosDB of Azure Service Bus.
Zie AKS Store-demo voor toegang tot de GitHub-codebase voor de voorbeeldtoepassing.
Voordat u begint
- U hebt een Azure-account met een actief abonnement nodig. Als u nog geen account hebt, maakt u gratis een account.
- Voor deze demo kunt u de Azure OpenAI-service of de OpenAI-service gebruiken.
- Als u van plan bent om de Azure OpenAI-service te gebruiken, moet u toegang aanvragen om deze in te schakelen in uw Azure-abonnement met behulp van het formulier Toegang aanvragen tot Azure OpenAI-service.
- Als u van plan bent om OpenAI te gebruiken, meldt u zich aan op de OpenAI-website.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Een brongroep maken
Een Azure-resourcegroep is een logische groep waarin u Azure-resources implementeert en beheert. Wanneer u een resourcegroep maakt, wordt u gevraagd een locatie op te geven. Deze locatie is de opslaglocatie van de metagegevens van uw resourcegroep en waar uw resources worden uitgevoerd in Azure als u geen andere regio opgeeft tijdens het maken van de resource.
In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost.
Maak een resourcegroep met behulp van de
az group create
opdracht.az group create --name myResourceGroup --location eastus
In de volgende voorbeelduitvoer ziet u dat de resourcegroep is gemaakt:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
Een AKS-cluster maken
In het volgende voorbeeld wordt een cluster met de naam myAKSCluster gemaakt in myResourceGroup.
Maak een AKS-cluster met behulp van de
az aks create
opdracht.az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
Na enkele minuten is de opdracht voltooid en retourneert deze informatie over het cluster in JSON-indeling.
Verbinding maken met het cluster
Als u een Kubernetes-cluster wilt beheren, gebruikt u de Kubernetes-opdrachtregelclient kubectl. kubectl
is al geïnstalleerd als u Azure Cloud Shell gebruikt.
Installeer
kubectl
lokaal met behulp van deaz aks install-cli
opdracht.az aks install-cli
Notitie
Als voor uw Linux-systeem verhoogde machtigingen zijn vereist, kunt u de
sudo az aks install-cli
opdracht gebruiken.Configureer
kubectl
deze om verbinding te maken met uw Kubernetes-cluster met behulp van deaz aks get-credentials
opdracht.Met deze opdracht worden de volgende bewerkingen uitgevoerd:
- Hiermee downloadt u referenties en configureert u de Kubernetes CLI om deze te gebruiken.
- Gebruikt
~/.kube/config
, de standaardlocatie voor het Kubernetes-configuratiebestand. Geef een andere locatie op voor uw Kubernetes-configuratiebestand met behulp van het argument --file .
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Controleer de verbinding met uw cluster met behulp van de
kubectl get
opdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.kubectl get nodes
In de volgende voorbeelduitvoer ziet u de knooppunten die in de vorige stappen zijn gemaakt. Zorg ervoor dat de status van het knooppunt gereed is.
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
Notitie
Voor privéclusters zijn de knooppunten mogelijk onbereikbaar als u er verbinding mee probeert te maken via het openbare IP-adres. Om dit probleem op te lossen, moet u een eindpunt maken binnen hetzelfde VNET als het cluster waaruit u verbinding wilt maken. Volg de instructies voor het maken van een privé-AKS-cluster en maak er vervolgens verbinding mee.
De toepassing implementeren
Het AKS Store-toepassingsmanifest bevat de volgende Kubernetes-implementaties en -services:
- Productservice: toont productgegevens.
- Orderservice: Orders plaatsen.
- Makeline-service: verwerkt orders uit de wachtrij en voltooit de orders.
- Webwinkel: Webtoepassing voor klanten om producten te bekijken en bestellingen te plaatsen.
- Winkelbeheerder: Webtoepassing voor het opslaan van werknemers om orders in de wachtrij te bekijken en productgegevens te beheren.
- Virtuele klant: simuleert het maken van bestellingen op een geplande basis.
- Virtuele werkrol: simuleert ordervoltooiing op geplande basis.
- Mongo DB: NoSQL-exemplaar voor persistente gegevens.
- Rabbit MQ: Berichtenwachtrij voor een orderwachtrij.
Notitie
Het wordt afgeraden stateful containers, zoals MongoDB en Rabbit MQ, uit te voeren zonder permanente opslag voor productie. We gebruiken ze hier voor het gemak, maar we raden u aan beheerde services te gebruiken, zoals Azure CosmosDB of Azure Service Bus.
Controleer het YAML-manifest voor de toepassing.
Implementeer de toepassing met behulp van de
kubectl apply
opdracht en geef de naam van uw YAML-manifest op.kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
In de volgende voorbeelduitvoer ziet u de gemaakte implementaties en services:
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
OpenAI implementeren
U kunt Azure OpenAI of OpenAI gebruiken en uw toepassing uitvoeren op AKS.
- Schakel Azure OpenAI in voor uw Azure-abonnement door het formulier Aanvraagtoegang in te vullen voor Azure OpenAI Service .
- Maak in Azure Portal een Azure OpenAI-exemplaar.
- Selecteer het Azure OpenAI-exemplaar dat u hebt gemaakt.
- Selecteer Sleutels en eindpunten om een sleutel te genereren.
- Selecteer Beheerde implementaties>voor modelimplementaties om de Azure OpenAI-studio te openen.
- Maak een nieuwe implementatie met behulp van het gpt-35-turbo-model .
Zie Aan de slag met het genereren van tekst met behulp van De Azure OpenAI-service voor meer informatie over het maken van een implementatie in Azure OpenAI.
De AI-service implementeren
Nu de toepassing is geïmplementeerd, kunt u de op Python gebaseerde microservice implementeren die Gebruikmaakt van OpenAI om automatisch beschrijvingen te genereren voor nieuwe producten die worden toegevoegd aan de catalogus van de store.
Maak een bestand met de naam
ai-service.yaml
en kopieer dit in het volgende manifest: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
Stel de omgevingsvariabele
USE_AZURE_OPENAI
in op"True"
.Haal de naam van uw Azure OpenAI-implementatie op uit Azure OpenAI Studio en vul de
AZURE_OPENAI_DEPLOYMENT_NAME
waarde in.Haal uw Azure OpenAI-eindpunt en de Azure OpenAI API-sleutel op in Azure Portal door sleutels en eindpunt te selecteren in de linkerblade van de resource. Werk de
AZURE_OPENAI_ENDPOINT
enOPENAI_API_KEY
in de YAML dienovereenkomstig bij.Implementeer de toepassing met behulp van de
kubectl apply
opdracht en geef de naam van uw YAML-manifest op.kubectl apply -f ai-service.yaml
In de volgende voorbeelduitvoer ziet u de gemaakte implementaties en services:
deployment.apps/ai-service created service/ai-service created
Notitie
Het rechtstreeks toevoegen van gevoelige informatie, zoals API-sleutels, aan uw Kubernetes-manifestbestanden is niet beveiligd en kan per ongeluk worden doorgevoerd in codeopslagplaatsen. We hebben het hier toegevoegd om het eenvoudig te maken. Voor productieworkloads gebruikt u Managed Identity om te verifiëren bij de Azure OpenAI-service of om uw geheimen op te slaan in Azure Key Vault.
De toepassing testen
Controleer de status van de geïmplementeerde pods met behulp van de opdracht kubectl get pods .
kubectl get pods
Zorg ervoor dat alle pods worden uitgevoerd voordat u verdergaat met de volgende stap.
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
Haal het IP-adres van de webtoepassing winkelbeheerder op en sla de front-webtoepassing op met behulp van de
kubectl get service
opdracht.kubectl get service store-admin
De toepassing maakt de Store-beheersite beschikbaar op internet via een openbare load balancer die is ingericht door de Kubernetes-service. Dit proces kan enkele minuten duren. EXTERN IP-adres wordt in eerste instantie in behandeling weergegeven totdat de service wordt weergegeven en het IP-adres wordt weergegeven.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-admin LoadBalancer 10.0.142.228 40.64.86.161 80:32494/TCP 50m
Herhaal dezelfde stap voor de service met de naam 'store-front'.
Open een webbrowser en blader naar het externe IP-adres van uw service. Open in het voorbeeld dat hier wordt weergegeven 40.64.86.161 om Store-beheerder in de browser te zien. Herhaal dezelfde stap voor Store Front.
Selecteer in de winkelbeheerder het tabblad Producten en selecteer vervolgens Producten toevoegen.
Wanneer de 'ai-service' wordt uitgevoerd, ziet u de knop Ask OpenAI naast het beschrijvingsveld. Vul de naam, prijs en trefwoorden in en genereer vervolgens een productbeschrijving door Het product Ask OpenAI>Save te selecteren.
U kunt nu het nieuwe product zien dat u hebt gemaakt in storebeheerder die door verkopers wordt gebruikt. Op de foto ziet u dat Jungle Monkey Chew Toy is toegevoegd.
U kunt ook het nieuwe product zien dat u hebt gemaakt op Store Front dat door kopers wordt gebruikt. Op de foto ziet u dat Jungle Monkey Chew Toy is toegevoegd. Vergeet niet om het IP-adres van de winkelfront op te halen met behulp van de
kubectl get service
opdracht.
Volgende stappen
Nu u OpenAI-functionaliteit hebt toegevoegd aan een AKS-toepassing, kunt u vanuit Azure Kubernetes Service (AKS) de toegang tot Azure OpenAI beveiligen.
Zie de volgende bronnen voor meer informatie over generatieve AI-gebruiksvoorbeelden:
Azure Kubernetes Service