Oktatóanyag: Csevegőrobot futtatása az App Service-ben a Phi-4 sidecar bővítménnyel (Express.js)

Ez az oktatóanyag végigvezeti egy Express.js-alapú csevegőrobot-alkalmazás üzembe helyezésén, amely a Phi-4 oldalkocsis bővítményrel van integrálva 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/expressapp
    az webapp up --sku P3MV3
    

Ez az indítási parancs gyakori beállítás az Express.js-alkalmazások Azure App Service-ben való üzembe helyezéséhez. További információ: Node.js-webalkalmazás üzembe helyezése az Azure-ban.

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. Válassza a Frissítés lehetőséget addig, amíg az Állapot oszlop a Fut állapotot nem mutatja.

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 Express.js-alapú szolgáltatás az SLM oldalkocsi-bővítménnyel. Az SLMService 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.

Az use_sidecar_extension/expressapp/src/services/slm_service.js megtekintésekor ezt látja:

  • A szolgáltatás POST kérést küld az SLM-végpontnak http://127.0.0.1:11434/v1/chat/completions.

    this.apiUrl = 'http://127.0.0.1:11434/v1/chat/completions';
    
  • A POST adat tartalmazza a rendszerüzenetet és azt az utasítást, amelyet a kiválasztott termékből és a felhasználói lekérdezésből hoztak létre.

    const requestPayload = {
      messages: [
        { role: 'system', content: 'You are a helpful assistant.' },
        { role: 'user', content: prompt }
      ],
      stream: true,
      cache_prompt: false,
      n_predict: 2048 // Increased token limit to allow longer responses
    };
    
  • A POST-kérelem sorról sorra streameli a válaszsort. A rendszer minden sort elemez a létrehozott tartalom (vagy token) kinyeréséhez.

    // Set up Server-Sent Events headers
    res.setHeader('Content-Type', 'text/event-stream');
    res.setHeader('Cache-Control', 'no-cache');
    res.setHeader('Connection', 'keep-alive');
    res.flushHeaders();
    
    const response = await axios.post(this.apiUrl, requestPayload, {
      headers: { 'Content-Type': 'application/json' },
      responseType: 'stream'
    });
    
    response.data.on('data', (chunk) => {
      const lines = chunk.toString().split('\n').filter(line => line.trim() !== '');
    
      for (const line of lines) {
        let parsedLine = line;
        if (line.startsWith('data: ')) {
          parsedLine = line.replace('data: ', '').trim();
        }
    
        if (parsedLine === '[DONE]') {
          return;
        }
    
        try {
          const jsonObj = JSON.parse(parsedLine);
          if (jsonObj.choices && jsonObj.choices.length > 0) {
            const delta = jsonObj.choices[0].delta || {};
            const content = delta.content;
    
            if (content) {
              // Use non-breaking space to preserve formatting
              const formattedToken = content.replace(/ /g, '\u00A0');
              res.write(`data: ${formattedToken}\n\n`);
            }
          }
        } catch (parseError) {
          console.warn(`Failed to parse JSON from line: ${parsedLine}`);
        }
      }
    });
    

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, akkor CPU optimalizált modellt is érdemes használnia, 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