Oktatóanyag: Csevegőrobot futtatása az App Service-ben Egy Phi-4 oldalkocsis bővítménnyel (Spring Boot)

Ez az oktatóanyag végigvezeti egy Spring Boot-alapú csevegőrobot-alkalmazás üzembe helyezésén, amely integrálva van a Phi-4 sidecar bővítményével az Azure App Service-ben. A lépések végrehajtásával megtanulhatja, hogyan állíthat be skálázható webalkalmazást, hogyan adhat hozzá mesterséges intelligenciával működő oldalkocsit a továbbfejlesztett beszélgetési képességekhez, és hogyan tesztelheti a csevegőrobot funkcióit.

A saját kis nyelvi modell (SLM) üzemeltetése számos előnnyel jár:

  • Teljes körű vezérlés az adatok felett. A bizalmas információk nem kerülnek ki a külső szolgáltatásokba, ami kritikus fontosságú a szigorú megfelelőségi követelményekkel rendelkező iparágak számára.
  • A saját üzemeltetésű modellek finomhangolhatók, hogy megfeleljenek bizonyos használati eseteknek vagy tartományspecifikus követelményeknek.
  • Minimális hálózati késés és gyorsabb válaszidő a jobb felhasználói élmény érdekében.
  • Az erőforrás-kiosztás teljes körű vezérlése az alkalmazás optimális teljesítményének biztosításával.

Előfeltételek

A mintaalkalmazás üzembe helyezése

  1. A böngészőben keresse meg a mintaalkalmazás-adattárat.

  2. Indítsa el az új Codespace-t az adattárból.

  3. Jelentkezzen be az Azure-fiókjával:

    az login
    
  4. Nyissa meg a terminált a Codespace-ben, és futtassa a következő parancsokat:

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

A Phi-4 oldalkocsi-bővítmény hozzáadása

Ebben a szakaszban hozzáadja a Phi-4 oldalkocsis bővítményt az Azure App Service-ben üzemeltetett ASP.NET Core-alkalmazáshoz.

  1. Lépjen az Azure Portalra, és nyissa meg az alkalmazás felügyeleti oldalát.
  2. A bal oldali menüben válassza az Üzembe helyezési>központ lehetőséget.
  3. A Tárolók lapon válassza aSidecar bővítmény> lehetőséget.
  4. Az oldalkocsi bővítmény beállításai között válassza az AI: phi-4-q4-gguf (Kísérleti) lehetőséget.
  5. Adja meg az oldalkocsi-bővítmény nevét.
  6. Válassza a Mentés lehetőséget a módosítások alkalmazásához.
  7. Várjon néhány percet, amíg az oldalkocsi-bővítmény üzembe helyezése megtörténik. Amíg az Állapot oszlop nem mutatja, hogy Fut, kattintson a Frissítés gombra.

Ez a Phi-4 oldalkocsis bővítmény egy olyan csevegés-befejezési API-t használ, mint az OpenAI, amely válaszolhat a csevegés befejezési kérésére a következő helyen: http://localhost:11434/v1/chat/completions. Az API-val való interakcióval kapcsolatos további információkért lásd:

A csevegőrobot tesztelése

  1. Az alkalmazás felügyeleti lapján, a bal oldali menüben válassza az Áttekintés lehetőséget.

  2. Az Alapértelmezett tartomány területen válassza ki az URL-címet a webalkalmazás böngészőben való megnyitásához.

  3. Ellenőrizze, hogy a csevegőrobot-alkalmazás fut-e, és válaszol-e a felhasználói bemenetekre.

    Képernyőkép a böngészőben futó fashion assistant alkalmazásról.

A mintaalkalmazás működése

A mintaalkalmazás bemutatja, hogyan integrálható egy Java-szolgáltatás az SLM oldalkocsi-bővítménnyel. Az ReactiveSLMService osztály beágyazza az SLM API-nak küldött kérések és a streamelt válaszok feldolgozásának logikáját. Ez az integráció lehetővé teszi, hogy az alkalmazás dinamikusan hozzon létre beszélgetési válaszokat.

A use_sidecar_extension/springapp/src/main/java/com/example/springapp/service/ReactiveSLMService.java nézetben a következőt látja:

  • A szolgáltatás beolvassa az URL-címet fashion.assistant.api.url, amely az application.properties fájlban van beállítva, és amelynek értéke http://localhost:11434/v1/chat/completions.

    public ReactiveSLMService(@Value("${fashion.assistant.api.url}") String apiUrl) {
        this.webClient = WebClient.builder()
                .baseUrl(apiUrl)
                .build();
    }
    
  • A POST hasznos terhe tartalmazza a rendszerüzenetet, valamint a kiválasztott termékből és a felhasználói lekérdezésből összeállított kérdést.

    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();
    
  • A reaktív POST-kérelem sorról sorra streameli a választ. Minden sort elemzünk, hogy kinyerjük a létrehozott tartalmat (vagy tokent).

    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"));
    

Gyakori kérdések


Hogyan befolyásolja a tarifacsomag az SLM oldalkocsi teljesítményét?

Mivel az AI-modellek jelentős erőforrásokat használnak fel, válassza ki azt a tarifacsomagot, amely elegendő virtuális processzort és memóriát biztosít az adott modell futtatásához. Ezért a beépített AI-oldalkocsi-bővítmények csak akkor jelennek meg, ha az alkalmazás megfelelő tarifacsomagban van. Ha saját SLM-oldalkocsis tárolót hoz létre, érdemes processzoroptimalizált modellt használni, mivel az App Service tarifacsomagjai csak CPU-alapú szintek.

A 4K-s környezethosszúságú Phi-3 minimodell például úgy lett kialakítva, hogy korlátozott erőforrásokkal fusson, és számos gyakori forgatókönyvhöz biztosít erős matematikai és logikai érvelést. Emellett processzoroptimalizált verziót is tartalmaz. Az App Service-ben teszteltük a modellt az összes prémium szinten, és azt találtuk, hogy a P2mv3 vagy annál magasabb szinten is jól működik. Ha a követelmények megengedik, alacsonyabb szinten is futtathatja.


Hogyan használhatom a saját SLM oldalkocsimat?

A mintaadattár tartalmaz egy minta SLM-tárolót, amelyet oldalkocsiként használhat. Egy FastAPI-alkalmazást futtat, amely a Dockerfile-ban megadott 8000-es porton figyel. Az alkalmazás AZ ONNX Runtime használatával tölti be a Phi-3 modellt, majd továbbítja a HTTP POST-adatokat a modellnek, és a modell válaszát visszaküldi az ügyfélnek. További információ: model_api.py.

Az oldalkocsi lemezképének létrehozásához helyileg kell telepítenie a Docker Desktopot a gépére.

  1. Klónozza az adattárat helyileg.

    git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar
    cd ai-slm-in-app-service-sidecar
    
  2. Váltson a Phi-3 rendszerkép forráskönyvtárára, és töltse le a modellt helyileg a Huggingface parancssori felület használatával.

    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
    

    A Dockerfile úgy van konfigurálva, hogy másolja a modellt a ./Phi-3-mini-4k-instruct-onnx fájlból.

  3. Állítsa össze a Docker-rendszerképet. Például:

    docker build --tag phi-3 .
    
  4. Töltse fel az épített rendszerképet az Azure Container Registrybe az első rendszerkép leküldésével az Azure Container Registrybe a Docker CLI használatával.

  5. Az Üzembehelyezési központ>tárolói (új) lapon válassza azEgyéni tároló> lehetőséget, és konfigurálja az új tárolót az alábbiak szerint:

    • Név: phi-3
    • Kép forrása: Azure Container Registry
    • Beállításjegyzék: a te beállításjegyzéked
    • Kép: a feltöltött kép
    • Címke: a kívánt képcímke
    • Port: 8000
  6. Válassza az Alkalmazás lehetőséget.

Lásd a bring_your_own_slm/src/webapp mappa tartalmát egy mintaalkalmazásért, amely kapcsolatba lép ezzel az egyéni oldalkocsi konténerrel.

Következő lépések

Útmutató: Sidecar konténer konfigurálása Linux alkalmazáshoz az Azure App Service-ben