مشاركة عبر


البرنامج التعليمي: تشغيل روبوت الدردشة في App Service مع ملحق sidecar Phi-4 (Spring Boot)

يرشدك هذا البرنامج التعليمي خلال نشر تطبيق روبوت محادثة يستند إلى Spring Boot متكامل مع ملحق Phi-4 sidecar على Azure App Service. باتباع الخطوات، ستتعلم كيفية إعداد تطبيق ويب قابل للتطوير، وإضافة سيارة جانبية تعمل الذكاء الاصطناعي لإمكانيات المحادثة المحسنة، واختبار وظائف روبوت الدردشة.

استضافة نموذج اللغة الصغيرة (SLM) الخاص بك يوفر العديد من المزايا:

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

Prerequisites

انشر نموذج التطبيق

  1. في المتصفح، انتقل إلى نموذج مستودع التطبيق.

  2. ابدأ تشغيل Codespace جديدة من المستودع.

  3. سجل الدخول باستخدام حساب Azure الخاص بك:

    az login
    
  4. افتح المحطة الطرفية في Codespace وقم بتشغيل الأوامر التالية:

    cd use_sidecar_extension/springapp
    ./mvnw clean package
    az webapp up --sku P3MV3 --runtime "JAVA:21-java21" --os-type linux
    

إضافة ملحق Phi-4 sidecar

في هذا القسم، يمكنك إضافة ملحق Phi-4 sidecar إلى تطبيق ASP.NET Core المستضاف على Azure App Service.

  1. انتقل إلى مدخل Microsoft Azure وانتقل إلى صفحة إدارة التطبيق.
  2. في القائمة اليمنى، حددمركز نشر>.
  3. في علامة التبويب الحاويات ، حدد إضافة>ملحق Sidecar.
  4. في خيارات ملحق sidecar، حدد الذكاء الاصطناعي: phi-4-q4-gguf (تجريبي).
  5. أدخل اسما لملحق sidecar.
  6. حدد Save لتطبيق التغييرات.
  7. انتظر بضع دقائق حتى يتم نشر ملحق sidecar. استمر في تحديد تحديث حتى يظهر عمود الحالةقيد التشغيل.

يستخدم ملحق Phi-4 sidecar هذا واجهة برمجة تطبيقات إكمال الدردشة مثل OpenAI التي يمكنها الاستجابة لاستجابة إكمال الدردشة في http://localhost:11434/v1/chat/completions. لمزيد من المعلومات حول كيفية التفاعل مع واجهة برمجة التطبيقات، راجع:

اختبار روبوت الدردشة

  1. في صفحة إدارة التطبيق، في القائمة اليمنى، حدد نظرة عامة.

  2. ضمن المجال الافتراضي، حدد عنوان URL لفتح تطبيق الويب الخاص بك في متصفح.

  3. تحقق من تشغيل تطبيق روبوت الدردشة والاستجابة لإدخالات المستخدم.

    لقطة شاشة تعرض تطبيق مساعد الأزياء الذي يعمل في المستعرض.

كيفية عمل نموذج التطبيق

يوضح نموذج التطبيق كيفية دمج خدمة Java مع ملحق SLM sidecar. ReactiveSLMService تغلف الفئة منطق إرسال الطلبات إلى واجهة برمجة تطبيقات SLM ومعالجة الاستجابات المتدفقة. يمكن هذا التكامل التطبيق من إنشاء استجابات المحادثة ديناميكيا.

بالنظر إلى use_sidecar_extension / springapp / src / main / java / com / example / springapp / service / ReactiveSLMService.java ، سترى ما يلي:

  • تقرأ الخدمة عنوان URL من fashion.assistant.api.url، الذي تم تعيينه في application.properties وله قيمة http://localhost:11434/v1/chat/completions.

    public ReactiveSLMService(@Value("${fashion.assistant.api.url}") String apiUrl) {
        this.webClient = WebClient.builder()
                .baseUrl(apiUrl)
                .build();
    }
    
  • تتضمن حمولة POST رسالة النظام والمطالبة التي تم إنشاؤها من المنتج المحدد واستعلام المستخدم.

    JSONObject requestJson = new JSONObject();
    JSONArray messages = new JSONArray();
    
    JSONObject systemMessage = new JSONObject();
    systemMessage.put("role", "system");
    systemMessage.put("content", "You are a helpful assistant.");
    messages.put(systemMessage);
    
    JSONObject userMessage = new JSONObject();
    userMessage.put("role", "user");
    userMessage.put("content", prompt);
    messages.put(userMessage);
    
    requestJson.put("messages", messages);
    requestJson.put("stream", true);
    requestJson.put("cache_prompt", false);
    requestJson.put("n_predict", 2048);
    
    String requestBody = requestJson.toString();
    
  • يقوم طلب POST التفاعلي ببث الاستجابة سطرا سطرا. يتم تحليل كل سطر لاستخراج المحتوى الذي تم إنشاؤه (أو الرمز المميز).

    return webClient.post()
            .contentType(MediaType.APPLICATION_JSON)
            .body(BodyInserters.fromValue(requestBody))
            .accept(MediaType.TEXT_EVENT_STREAM)
            .retrieve()
            .bodyToFlux(String.class)
            .filter(line -> !line.equals("[DONE]"))
            .map(this::extractContentFromResponse)
            .filter(content -> content != null && !content.isEmpty())
            .map(content -> content.replace(" ", "\u00A0"));
    

الأسئلة الشائعة


كيف يؤثر مستوى التسعير على أداء SLM sidecar؟

نظرا لأن النماذج الذكاء الاصطناعي تستهلك موارد كبيرة، اختر مستوى التسعير الذي يمنحك وحدات المعالجة المركزية الظاهرية والذاكرة الكافية لتشغيل نموذجك المحدد. لهذا السبب، تظهر ملحقات sidecar المضمنة الذكاء الاصطناعي فقط عندما يكون التطبيق في مستوى تسعير مناسب. إذا قمت بإنشاء حاوية جانبية SLM الخاصة بك، يجب عليك أيضا استخدام نموذج محسن لوحدة المعالجة المركزية، نظرا لأن مستويات تسعير App Service هي مستويات وحدة المعالجة المركزية فقط.

على سبيل المثال، تم تصميم نموذج Phi-3 المصغر بطول سياق 4K من Hugging Face للتشغيل بموارد محدودة ويوفر الرياضيات القوية والمنطق المنطقي للعديد من السيناريوهات الشائعة. كما يأتي مع إصدار محسن لوحدة المعالجة المركزية. في App Service، اختبرنا النموذج على جميع المستويات المتميزة ووجدنا أنه يعمل بشكل جيد في مستوى P2mv3 أو أعلى. إذا كانت متطلباتك تسمح بذلك، يمكنك تشغيلها على مستوى أقل.


كيفية استخدام SLM sidecar الخاص بي؟

يحتوي مستودع العينة على حاوية نموذج SLM يمكنك استخدامها كجانب. يقوم بتشغيل تطبيق FastAPI الذي يستمع إلى المنفذ 8000 ، كما هو محدد في Dockerfile الخاص به. يستخدم التطبيق ONNX Runtime لتحميل نموذج Phi-3، ثم يعيد توجيه بيانات HTTP POST إلى النموذج ويدفق الاستجابة من النموذج مرة أخرى إلى العميل. لمزيد من المعلومات، راجع model_api.py.

لإنشاء الصورة الجانبية بنفسك، تحتاج إلى تثبيت Docker Desktop محليا على جهازك.

  1. استنساخ المستودع محليا.

    git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar
    cd ai-slm-in-app-service-sidecar
    
  2. قم بالتغيير إلى الدليل المصدري لصورة Phi-3 وقم بتنزيل النموذج محليا باستخدام Huggingface CLI.

    cd bring_your_own_slm/src/phi-3-sidecar
    huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --local-dir ./Phi-3-mini-4k-instruct-onnx
    

    تم تكوين Dockerfile لنسخ النموذج من ./Phi-3-mini-4k-instruct-onnx.

  3. إنشاء صورة Docker. على سبيل المثال:

    docker build --tag phi-3 .
    
  4. قم بتحميل الصورة المضمنة إلى Azure Container Registry باستخدام دفع صورتك الأولى إلى سجل حاوية Azure باستخدام Docker CLI.

  5. في علامة التبويبحاويات> النشر (جديد)، حدد إضافة>حاوية مخصصة وقم بتكوين الحاوية الجديدة على النحو التالي:

    • الاسم: phi-3
    • مصدر الصورة: Azure Container Registry
    • السجل: السجل الخاص بك
    • الصورة: الصورة التي تم تحميلها
    • العلامة: علامة الصورة التي تريدها
    • ميناء: 8000
  6. حدد تطبيق.

راجع bring_your_own_slm/src/webapp للحصول على نموذج تطبيق يتفاعل مع هذه الحاوية الجانبية المخصصة.

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

البرنامج التعليمي: تكوين حاوية sidecar لتطبيق Linux في Azure App Service