مشاركة عبر


نشر تطبيق يستخدم OpenAI على خدمة Azure Kubernetes ‏(AKS)

في هذا المقال، تتعلم كيفية نشر تطبيق يستخدم Azure OpenAI أو OpenAI على AKS. باستخدام OpenAI، يمكنك بسهولة تكييف نماذج الذكاء الاصطناعي مختلفة، مثل إنشاء المحتوى، والملخص، والبحث الدلالي، واللغة الطبيعية لإنشاء التعليمات البرمجية، لمهامك المحددة. تبدأ بنشر عنقود AKS في اشتراكك في Azure. بعد ذلك، يمكنك نشر خدمة OpenAI ونموذج التطبيق.

يمثل نموذج التطبيق الأصلي السحابي عمليات التنفيذ في العالم الحقيقي. يتكون التطبيق متعدد الحاويات من تطبيقات مكتوبة بلغات وأطر عمل متعددة، بما في ذلك:

  • Golang مع Gin
  • Rust مع Actix-Web
  • JavaScript مع Vue.js وFastify
  • Python مع FastAPI

توفر هذه التطبيقات الواجهات الأمامية للعملاء ومسؤولين المتجر وواجهات برمجة تطبيقات REST لإرسال البيانات إلى قائمة انتظار رسائل RabbitMQ وقاعدة بيانات MongoDB وتطبيقات وحدة التحكم لمحاكاة نسبة استخدام الشبكة.

Note

لا نوصي بتشغيل حاويات ذات حالة، مثل MongoDB و Rabbit MQ، دون تخزين مستمر للإنتاج. نستخدمها هنا للبساطة، لكننا نوصي باستخدام الخدمات المدارة، مثل Azure CosmosDB أو ناقل خدمة Azure.

للوصول إلى قاعدة شيفرة GitHub للتطبيق النموذجي، انظر AKS Store Demo.

قبل البدء

  • تحتاج إلى حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب، فبادر بإنشاء حساب مجانا.
  • في هذا العرض التجريبي، يمكنك استخدام خدمة Azure OpenAI أو خدمة OpenAI.
    • إذا كنت تخطط لاستخدام Azure OpenAI service، عليك طلب الوصول لتفعيله على اشتراكك Azure باستخدام طلب الوصول إلى خدمة Azure OpenAI form.
    • إذا كنت تخطط لاستخدام OpenAI ، فقم بالتسجيل في موقع OpenAI على الويب.

Prerequisites

  • استخدم بيئة باش في Azure Cloud Shell. لمزيد من المعلومات، راجع ابدأ مع Azure Cloud Shell.

  • إذا كنت تفضل تشغيل أوامر مرجعية لواجهة الواجهة محليا، install Azure CLI. إذا كنت تعمل على Windows أو macOS، فكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.

    • إذا كنت تستخدم تثبيتا محليا، سجل الدخول إلى Azure CLI باستخدام أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. لخيارات تسجيل الدخول الأخرى، راجع المصادقة إلى Azure باستخدام Azure CLI.

    • عندما يطلب منك ذلك، قم بتثبيت إضافة Azure CLI عند الاستخدام الأول. لمزيد من المعلومات حول الإضافات، راجع استخدم وإدارة الإضافات باستخدام Azure CLI.

    • يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.

إنشاء مجموعة موارد

مجموعة الموارد Azure هي مجموعة منطقية تقوم بنشر وإدارة الموارد Azure فيها. عند إنشاء مجموعة موارد، تتم مطالبتك بتحديد موقع. هذا الموقع هو موقع التخزين لبيانات مجموعة الموارد الخاصة بك وحيث تعمل مواردك في Azure إذا لم تحدد منطقة أخرى أثناء إنشاء الموارد.

في المثال التالي، سيتم إنشاء مجموعة موارد باسم myResourceGroup في موقع eastus.

  • إنشاء مجموعة موارد باستخدام الأمر .

    az group create --name myResourceGroup --location eastus
    

    يظهر إخراج المثال التالي الإنشاء الناجح لمجموعة الموارد:

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

إنشاء نظام مجموعة AKS

ينشئ المثال التالي نظام مجموعة باسم myAKSCluster في myResourceGroup.

  • إنشاء نظام مجموعة AKS باستخدام الأمر .

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

    بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة.

الاتصال بنظام المجموعة

لإدارة مجموعة Kubernetes، يمكنك استخدام عميل سطر الأوامر Kubernetes، kubectl. kubectl مثبت بالفعل إذا كنت تستخدم Azure Cloud Shell.

  1. تثبيت محليا باستخدام الأمر .

    az aks install-cli
    

    Note

    إذا كان النظام المستند إلى Linux يتطلب أذونات مرتفعة، يمكنك استخدام الأمر .

  2. قم بتكوين للاتصال بنظام مجموعة Kubernetes باستخدام أمر .

    ينفذ هذا الأمر العمليات التالية:

    • حمل بيانات الاعتماد ثم احرص على تكوين Kubernetes CLI بغرض استخدامها.
    • استخدم الموقع الافتراضي لملف تكوين Kubernetes. حدد موقعا مختلفا لملف تكوين Kubernetes باستخدام وسيطة --file .
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. تحقق من الاتصال بالمجموعة باستخدام الأمر . يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.

    kubectl get nodes
    

    يظهر إخراج المثال التالي العقد التي تم إنشاؤها في الخطوات السابقة. تأكد من أن حالة العقدة جاهزة.

    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
    

Note

بالنسبة للمجموعات الخاصة، قد لا يمكن الوصول إلى العقد إذا حاولت الاتصال بها من خلال عنوان IP العام. لإصلاح ذلك، تحتاج إلى إنشاء نقطة نهاية داخل نفس VNET مثل نظام المجموعة للاتصال منها. اتبع الإرشادات لإنشاء نظام مجموعة AKS خاص ثم الاتصال به.

قم بنشر التطبيق

رسم تخطيطي للعرض التوضيحي الذكاء الاصطناعي AKS.

يتضمن ملف تطبيقات متجر AKS النشر والخدمات التالية لكوبيرنيتس:

  • خدمة المنتج: تعرض معلومات المنتج.
  • خدمة الطلب: يضع الطلبات.
  • خدمة Makeline: تعالج الطلبات من قائمة الانتظار وتكمل الأوامر.
  • واجهة المتجر: تطبيق ويب للعملاء لعرض المنتجات وتقديم الطلبات.
  • مسؤول المتجر: تطبيق ويب لموظفي المتجر لعرض الطلبات في قائمة الانتظار وإدارة معلومات المنتج.
  • عميل ظاهري: يحاكي إنشاء الأوامر على أساس مجدول.
  • عامل ظاهري: يحاكي إكمال الأمر على أساس مجدول.
  • Mongo DB: نسخة NoSQL للبيانات المستمرة.
  • Rabbit MQ: قائمة انتظار الرسائل لقائمة انتظار الطلبات.

Note

لا نوصي بتشغيل حاويات ذات حالة، مثل MongoDB و Rabbit MQ، دون تخزين مستمر للإنتاج. نستخدمها هنا للبساطة، لكننا نوصي باستخدام الخدمات المدارة، مثل Azure CosmosDB أو ناقل خدمة Azure.

  1. راجع قائمة YAML للطلب.

  2. انشر التطبيق باستخدام الأمر وحدد اسم بيان YAML.

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

    يظهر إخراج المثال التالي عمليات النشر والخدمات التي تم إنشاؤها بنجاح:

    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

يمكنك استخدام Azure OpenAI أو OpenAI وتشغيل تطبيقك على AKS.

  1. في بوابة Azure، أنشئ مثيل Azure OpenAI.
  2. انتقل إلى نسخة Azure OpenAI التي أنشأتها.
  3. من شفرة النظرة العامة ، انتقل إلى بوابة مايكروسوفت فاوندري.
  4. قم بإنشاء نشر Chat جديد باستخدام النموذج الأساسي gpt-4o-mini .

لمزيد من المعلومات حول كيفية إنشاء نشر في Azure OpenAI، راجع ابدأ في توليد النصوص باستخدام خدمة Azure OpenAI.

نشر خدمة الذكاء الاصطناعي

الآن بعد نشر التطبيق، يمكنك نشر خدمة مصغرة تعتمد على Python والتي تستخدم OpenAI لتوليد أوصاف تلقائيا للمنتجات الجديدة التي تضاف إلى كتالوج المتجر.

  1. أنشئ ملفا باسم وانسخه في البيان التالي:

    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. تعيين متغير البيئة إلى .

  3. احصل على اسم نشر OpenAI Azure من Foundry واملأ قيمة AZURE_OPENAI_DEPLOYMENT_NAME.

  4. احصل على نقطة نهاية OpenAI Azure ومفتاح واجهة برمجة التطبيقات Azure OpenAI من بوابة Azure باختيار <مفاتيح >Keys و Endpoint في الشفرة اليسرى للمورد. قم بتحديث و في YAML وفقا لذلك.

  5. انشر التطبيق باستخدام الأمر وحدد اسم بيان YAML.

    kubectl apply -f ai-service.yaml
    

    يظهر إخراج المثال التالي عمليات النشر والخدمات التي تم إنشاؤها بنجاح:

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

Note

إضافة المعلومات الحساسة مباشرة، مثل مفاتيح API، إلى ملفات بيان Kubernetes الخاصة بك غير آمنة وقد يتم الالتزام بها عن طريق الخطأ في مستودعات التعليمات البرمجية. أضفناه هنا للتبسيط. بالنسبة لأعباء العمل الإنتاجية، استخدم Managed Identity للمصادقة على خدمة OpenAI Azure بدلا من ذلك أو خزن أسرارك في Azure Key Vault.

اختبر التطبيق

  1. تحقق من حالة pods المنشورة باستخدام الأمر kubectl get pods .

    kubectl get pods
    

    تأكد من تشغيل جميع الكبسولات قبل المتابعة إلى الخطوة التالية.

    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. احصل على IP لتطبيق ويب مسؤول المتجر وخزن تطبيق الويب الأمامي باستخدام الأمر .

    kubectl get service store-admin
    

    يعرض التطبيق موقع مسؤول المتجر على الإنترنت عبر موازن تحميل عام توفره خدمة Kubernetes. قد تستغرق هذه العملية بضع دقائق حتى تكتمل. يظهر عنوان IP الخارجي في البداية معلقا حتى تظهر الخدمة وتعرض عنوان 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
    

    كرر نفس الخطوة للخدمة المسماة "store-front".

  3. افتح مستعرض ويب واستعرض للوصول إلى عنوان IP الخارجي للخدمة. في المثال الموضح هنا، افتح 40.64.86.161 لرؤية مسؤول المتجر في المتصفح. كرر نفس الخطوة ل Store Front.

  4. في مسؤول المتجر، حدد علامة التبويب المنتجات، ثم حدد إضافة منتجات.

  5. عند تشغيل "خدمة الذكاء الاصطناعي" بنجاح، يجب أن ترى الزر Ask OpenAI بجوار حقل الوصف. املأ الاسم والسعر والكلمات الرئيسية، ثم قم بإنشاء وصف للمنتج عن طريق تحديد اسأل OpenAISave product.

    لقطة شاشة لكيفية استخدام openAI لإنشاء وصف منتج.

  6. يمكنك الآن رؤية المنتج الجديد الذي أنشأته على مسؤول المتجر الذي يستخدمه البائعون. في الصورة، يمكنك مشاهدة إضافة Dog Smart Collar.

    لقطة شاشة تعرض المنتج الجديد في صفحة مسؤول المتجر.

  7. يمكنك أيضا مشاهدة المنتج الجديد الذي قمت بإنشائه على واجهة المتجر المستخدمة من قبل المشترين. في الصورة، يمكنك مشاهدة إضافة Dog Smart Collar. تذكر الحصول على عنوان IP الخاص بالمخزن الأمامي باستخدام الأمر .

    لقطة شاشة تعرض المنتج الجديد في الصفحة الأمامية للمتجر.

الخطوات التالية

الآن بعد أن أضفت وظائف OpenAI إلى تطبيق AKS، يمكنك Secure Access إلى Azure OpenAI من خدمة Kubernetes Service (AKS) Azure.

لمعرفة المزيد حول حالات استخدام الذكاء الاصطناعي التوليدية، راجع الموارد التالية: