Nasazení aplikace, která používá OpenAI ve službě Azure Kubernetes Service (AKS)

V tomto článku se dozvíte, jak nasadit aplikaci, která používá Azure OpenAI nebo OpenAI v AKS. Pomocí OpenAI můžete snadno přizpůsobit různé modely AI, jako je generování obsahu, sumarizace, sémantické vyhledávání a přirozený jazyk pro generování kódu, pro konkrétní úlohy. Začnete nasazením clusteru AKS ve vašem předplatném Azure. Pak nasadíte službu OpenAI a ukázkovou aplikaci.

Ukázková aplikace nativní pro cloud představuje implementace z reálného světa. Vícekontenerová aplikace se skládá z aplikací psaných v několika jazycích a architekturách, mezi které patří:

  • Golang with Gin
  • Rust s Actix-Web
  • JavaScript s Vue.js a fastify
  • Python s FastAPI

Tyto aplikace poskytují front-endy zákazníkům a správcům úložiště, rozhraní REST API pro odesílání dat do fronty zpráv RabbitMQ a databáze MongoDB a konzolových aplikací pro simulaci provozu.

Poznámka:

Nedoporučujeme spouštět stavové kontejnery, jako je MongoDB a Rabbit MQ, bez trvalého úložiště pro produkční prostředí. Používáme je zde pro zjednodušení, ale doporučujeme používat spravované služby, jako je Azure CosmosDB nebo Azure Service Bus.

Pokud chcete získat přístup k základu kódu GitHubu pro ukázkovou aplikaci, podívejte se na ukázku AKS Store.

Než začnete

  • Potřebujete účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si účet zdarma.
  • Pro tuto ukázku můžete použít službu Azure OpenAI nebo službu OpenAI.
    • Pokud plánujete používat službu Azure OpenAI, musíte požádat o přístup, abyste ho povolili ve svém předplatném Azure pomocí formuláře Žádost o přístup ke službě Azure OpenAI.
    • Pokud plánujete používat OpenAI, zaregistrujte se na webu OpenAI.

Požadavky

Vytvoření skupiny zdrojů

Skupina prostředků Azure je logická skupina, ve které nasazujete a spravujete prostředky Azure. Při vytváření skupiny prostředků se zobrazí výzva k zadání umístění. Toto umístění je umístění úložiště metadat vaší skupiny prostředků a místo, kde vaše prostředky běží v Azure, pokud během vytváření prostředků nezadáte jinou oblast.

Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus.

  • Pomocí příkazu vytvořte skupinu az group create prostředků.

    az group create --name myResourceGroup --location eastus
    

    Následující příklad výstupu ukazuje úspěšné vytvoření skupiny prostředků:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null,
      "type": "Microsoft.Resources/resourceGroups"
    }
    

Vytvoření clusteru AKS

Následující příklad vytvoří cluster myAKSCluster v myResourceGroup.

  • Pomocí příkazu vytvořte cluster az aks create AKS.

    az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
    

    Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

Připojení ke clusteru

Ke správě clusteru Kubernetes použijete klienta příkazového řádku Kubernetes kubectl. kubectl je už nainstalovaný, pokud používáte Azure Cloud Shell.

  1. Pomocí příkazu nainstalujte kubectl az aks install-cli místně.

    az aks install-cli
    

    Poznámka:

    Pokud systém založený na Linuxu vyžaduje zvýšená oprávnění, můžete tento příkaz použít sudo az aks install-cli .

  2. Pomocí příkazu nakonfigurujte kubectl připojení ke clusteru az aks get-credentials Kubernetes.

    Tento příkaz provede následující operace:

    • Stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.
    • Používá ~/.kube/configvýchozí umístění konfiguračního souboru Kubernetes. Pomocí argumentu --file zadejte jiné umístění konfiguračního souboru Kubernetes.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Pomocí příkazu ověřte připojení ke clusteru kubectl get . Tento příkaz vrátí seznam uzlů clusteru.

    kubectl get nodes
    

    Následující příklad výstupu ukazuje uzly vytvořené v předchozích krocích. Ujistěte se, že je stav uzlu Připravený.

    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
    

Poznámka:

U privátních clusterů můžou být uzly nedostupné, pokud se k nim pokusíte připojit přes veřejnou IP adresu. Pokud chcete tento problém vyřešit, musíte vytvořit koncový bod ve stejné virtuální síti jako cluster, ze které se chcete připojit. Postupujte podle pokynů k vytvoření privátního clusteru AKS a pak se k němu připojte.

Nasazení aplikace

Diagram architektury ukázky AKS AI

Manifest aplikace AKS Store zahrnuje následující nasazení a služby Kubernetes:

  • Produktová služba: Zobrazuje informace o produktu.
  • Objednávka: Objednávky.
  • Makeline service: Zpracovává objednávky z fronty a dokončí objednávky.
  • Store front: Webová aplikace pro zákazníky k zobrazení produktů a objednávání.
  • Správce obchodu: Webová aplikace pro zaměstnance obchodu umožňuje zobrazit objednávky ve frontě a spravovat informace o produktech.
  • Virtuální zákazník: Simuluje vytváření objednávek podle plánu.
  • Virtuální pracovní proces: Simuluje dokončení objednávky podle plánu.
  • Mongo DB: Instance NoSQL pro trvalá data.
  • Rabbit MQ: Fronta zpráv pro frontu objednávek.

Poznámka:

Nedoporučujeme spouštět stavové kontejnery, jako je MongoDB a Rabbit MQ, bez trvalého úložiště pro produkční prostředí. Používáme je zde pro zjednodušení, ale doporučujeme používat spravované služby, jako je Azure CosmosDB nebo Azure Service Bus.

  1. Zkontrolujte manifest YAML pro aplikaci.

  2. Nasaďte aplikaci pomocí kubectl apply příkazu a zadejte název manifestu YAML.

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
    

    Následující příklad výstupu ukazuje úspěšně vytvořená nasazení a služby:

    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
    

Nasazení OpenAI

Můžete použít Azure OpenAI nebo OpenAI a spustit aplikaci v AKS.

  1. V předplatném Azure povolte Azure OpenAI vyplněním formuláře Požádat o přístup ke službě Azure OpenAI.
  2. Na webu Azure Portal vytvořte instanci Azure OpenAI.
  3. Vyberte instanci Azure OpenAI, kterou jste vytvořili.
  4. Vyberte klíče a koncové body a vygenerujte klíč.
  5. Výběrem možnosti Nasazení modelů spravovaná>nasazení otevřete Azure OpenAI Studio.
  6. Vytvořte nové nasazení pomocí modelu gpt-35-turbo .

Další informace o tom, jak vytvořit nasazení v Azure OpenAI, najdete v tématu Začínáme generovat text pomocí služby Azure OpenAI.

Nasazení služby AI

Teď, když je aplikace nasazená, můžete nasadit mikroslužbu založenou na Pythonu, která používá OpenAI k automatickému vygenerování popisů nových produktů přidaných do katalogu obchodu.

  1. Vytvořte soubor s názvem ai-service.yaml a zkopírujte ho v následujícím manifestu:

    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
    
  2. Nastavte proměnnou USE_AZURE_OPENAI prostředí na "True"hodnotu .

  3. Získejte název nasazení Azure OpenAI ze studia Azure OpenAI a vyplňte AZURE_OPENAI_DEPLOYMENT_NAME hodnotu.

  4. Na webu Azure Portal získejte koncový bod Azure OpenAI a klíč rozhraní API Azure OpenAI tak, že v levém okně prostředku vyberete Klíče a koncový bod . Odpovídajícím způsobem aktualizujte AZURE_OPENAI_ENDPOINT a OPENAI_API_KEY v YAML.

  5. Nasaďte aplikaci pomocí kubectl apply příkazu a zadejte název manifestu YAML.

    kubectl apply -f ai-service.yaml
    

    Následující příklad výstupu ukazuje úspěšně vytvořená nasazení a služby:

      deployment.apps/ai-service created
      service/ai-service created
    

Poznámka:

Přímé přidávání citlivých informací, jako jsou klíče rozhraní API, do souborů manifestu Kubernetes není bezpečné a může se omylem potvrdit do úložišť kódu. Přidali jsme ho sem kvůli jednoduchosti. V případě produkčních úloh použijte spravovanou identitu k ověření ve službě Azure OpenAI nebo místo toho uložte tajné kódy ve službě Azure Key Vault.

Testování aplikace

  1. Pomocí příkazu kubectl get pods zkontrolujte stav nasazených podů.

    kubectl get pods
    

    Než budete pokračovat k dalšímu kroku, ujistěte se, že jsou všechny pody spuštěné .

    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
    
  2. Pomocí příkazu získejte IP adresu webové aplikace pro správu obchodu a uložte front-webovou aplikaci kubectl get service .

    kubectl get service store-admin
    

    Aplikace zpřístupňuje web pro správu Storu na internet prostřednictvím veřejného nástroje pro vyrovnávání zatížení zřízeného službou Kubernetes. Dokončení tohoto procesu může trvat několik minut. EXTERNÍ IP adresa se zpočátku zobrazuje čekající na vyřízení, dokud se služba nezobrazí a nezobrazí IP adresu.

    NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
    store-admin   LoadBalancer   10.0.142.228   40.64.86.161    80:32494/TCP   50m    
    

    Stejný krok opakujte pro službu s názvem store-front.

  3. Otevřete webový prohlížeč a přejděte na externí IP adresu vaší služby. V tomto příkladu otevřete 40.64.86.161 a zobrazte správce Obchodu v prohlížeči. Stejný krok opakujte pro Store Front.

  4. Ve správci obchodu vyberte kartu Produkty a pak vyberte Přidat produkty.

  5. Když je služba ai-service úspěšně spuštěná, měli byste vedle pole popisu vidět tlačítko Zeptat se openAI. Zadejte název, cenu a klíčová slova a vygenerujte popis produktu výběrem možnosti Zeptat se openAI>Uložit produkt.

    Snímek obrazovky s generovaným popisem produktu pomocí openAI

  6. Teď uvidíte nový produkt, který jste vytvořili u správce Storu používaného prodejci. Na obrázku vidíte Jungle Monkey Chew Toy je přidán.

    Snímek obrazovky znázorňuje nový produkt na stránce správce storu

  7. Uvidíte také nový produkt, který jste vytvořili ve Storu frontu používané kupujícími. Na obrázku vidíte Jungle Monkey Chew Toy je přidán. Nezapomeňte pomocí příkazu získat IP adresu obchodu kubectl get service .

    Snímek obrazovky znázorňuje nový produkt na přední stránce obchodu

Další kroky

Teď, když jste do aplikace AKS přidali funkci OpenAI, můžete zabezpečit přístup k Azure OpenAI ze služby Azure Kubernetes Service (AKS).

Další informace o případech použití generující umělé inteligence najdete v následujících zdrojích informací: