Megosztás a következőn keresztül:


Oktatóanyag: Kódértelmezési munkamenetek használata a Szemantic Kernelben az Azure Container Apps használatával

A Szemantic Kernel egy nyílt forráskódú AI-keretrendszer, amelyet a Microsoft a .NET, Python és Java nagy nyelvi modellekkel (LLM-ekkel) dolgozó fejlesztők számára hozott létre. Amikor szemantikai kernellel hoz létre AI-ügynököt, az LLM értelmezi a felhasználói bemenetet, és választ hoz létre. Az AI-ügynök gyakran küzd, amikor matematikai és szimbolikus érvelést kell végrehajtania a válasz létrehozásához. Az Azure Container Apps dinamikus munkameneteinek a Szemantic Kernellel való integrálásával az ügynöknek kódértelmezítőt kell adnia a speciális feladatok elvégzéséhez.

Ebben az oktatóanyagban megtudhatja, hogyan futtathat szemantikus Kernel AI-ügynököt egy webes API-ban. Az API elfogadja a felhasználói bemenetet, és visszaadja az AI-ügynök által generált választ. Az ügynök kódértelmezőt használ a dinamikus munkamenetekben a számítások elvégzéséhez.

Feljegyzés

Az Azure Container Apps dinamikus munkamenetei jelenleg előzetes verzióban érhetőek el. További információkért tekintse meg az előzetes verzióra vonatkozó korlátozásokat .

Előfeltételek

Azure-erőforrások létrehozása

A rövid útmutatóban szereplő mintaalkalmazás az Azure OpenAI-ból származó LLM-et használ. Emellett az Azure Container Apps-munkamenetek használatával futtatja az LLM által létrehozott kódot.

  1. Frissítse az Azure CLI-t a legújabb verzióra.

     az upgrade
    
  2. Távolítsa el az Azure Container Apps bővítményt, ha már telepítve van, és telepítse az Azure Container Apps bővítmény egy előzetes verzióját, amely parancsokat tartalmaz a munkamenetekhez:

    az extension remove --name containerapp
    az extension add \
        --name containerapp \
        --allow-preview true -y
    
  3. Jelentkezzen be az Azure-ba:

    az login
    
  4. Állítsa be az ebben a rövid útmutatóban használt változókat:

    RESOURCE_GROUP_NAME=aca-sessions-tutorial
    AZURE_OPENAI_LOCATION=swedencentral
    AZURE_OPENAI_NAME=<UNIQUE_OPEN_AI_NAME>
    SESSION_POOL_LOCATION=eastasia
    SESSION_POOL_NAME=code-interpreter-pool
    

    Cserélje le <UNIQUE_OPEN_AI_NAME> egy egyedi névre az Azure OpenAI-fiók létrehozásához.

  5. Erőforráscsoport létrehozása:

    az group create --name $RESOURCE_GROUP_NAME --location $SESSION_POOL_LOCATION
    
  6. Azure OpenAI-fiók létrehozása:

    az cognitiveservices account create \
        --name $AZURE_OPENAI_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $AZURE_OPENAI_LOCATION \
        --kind OpenAI \
        --sku s0 \
        --custom-domain $AZURE_OPENAI_NAME
    
  7. Hozzon létre egy GPT 3.5 Turbo-modell üzembe helyezését az Azure OpenAI-fiókban:gpt-35-turbo

    az cognitiveservices account deployment create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $AZURE_OPENAI_NAME \
        --deployment-name gpt-35-turbo \
        --model-name gpt-35-turbo \
        --model-version "1106" \
        --model-format OpenAI \
        --sku-capacity "100" \
        --sku-name "Standard"
    
  8. Kódértelmező munkamenetkészletének létrehozása:

    az containerapp sessionpool create \
        --name $SESSION_POOL_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $SESSION_POOL_LOCATION \
        --max-sessions 100 \
        --container-type PythonLTS \
        --cooldown-period 300
    

A mintaalkalmazás helyi futtatása

Mielőtt üzembe helyezené az alkalmazást az Azure Container Appsben, helyileg futtathatja annak teszteléséhez.

Az alkalmazás klónozása

  1. Klónozza az Azure Container Apps-munkamenetek mintáinak adattárát.

    git clone https://github.com/Azure-Samples/container-apps-dynamic-sessions-samples.git
    
  2. Váltson a mintaalkalmazást tartalmazó könyvtárra:

    cd container-apps-dynamic-sessions-samples/semantic-kernel-python-webapi
    

Az alkalmazás konfigurálása

  1. Hozzon létre egy Python virtuális környezetet, és aktiválja azt:

    python3.11 -m venv .venv
    source .venv/bin/activate
    

    Módosítsa a Python-verziót a parancsban, ha másik verziót használ. Ajánlott a Python 3.10-et vagy újabb verziót használni.

    Feljegyzés

    Ha Windowst használ, cserélje le a következőre .venv/bin/activate .venv\Scripts\activate: .

  2. Telepítse a szükséges Python-csomagokat:

    python -m pip install -r requirements.txt
    
  3. Az alkalmazás futtatásához konfigurálnia kell a környezeti változókat.

    1. Az Azure OpenAI-fiók végpontjának lekérése:

      az cognitiveservices account show \
          --name $AZURE_OPENAI_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query properties.endpoint \
          --output tsv
      
    2. Az Azure Container Apps munkamenetkészlet-kezelési végpontjának lekérése:

      az containerapp sessionpool show \
          --name $SESSION_POOL_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query properties.poolManagementEndpoint \
          --output tsv
      
    3. Hozzon létre egy .env fájlt a mintaalkalmazás könyvtárának gyökerében (ugyanazon a helyen, mint main.pya ). Adja hozzá a következő tartalmat a fájlhoz:

      AZURE_OPENAI_ENDPOINT=<AZURE_OPENAI_ENDPOINT>
      POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>
      

      Cserélje le <AZURE_OPENAI_ENDPOINT> az Azure OpenAI-fiók végpontjára és <SESSION_POOL_MANAGEMENT_ENDPOINT> a munkamenetkészlet felügyeleti végpontjára.

  4. Az alkalmazás az Azure-szolgáltatásokkal való hitelesítésre használja DefaultAzureCredential . A helyi gépen a jelenlegi Azure CLI bejelentkezési hitelesítő adatait használja. Meg kell adnia magának a Cognitive Services OpenAI felhasználói szerepkört az Azure OpenAI-fiókban ahhoz, hogy az alkalmazás hozzáférhessen a modellvégpontokhoz, és az Azure ContainerApps session Executor szerepkört a munkamenetkészleten ahhoz, hogy az alkalmazás hozzáférjen a munkamenetkészlethez.

    1. Kérje le az Azure CLI-felhasználónevet:

      az account show --query user.name --output tsv
      
    2. Futtassa a következő parancsokat az Azure OpenAI-fiók erőforrás-azonosítójának lekéréséhez:

      az cognitiveservices account show --name $AZURE_OPENAI_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsv
      
    3. Rendelje hozzá a Cognitive Services OpenAI-felhasználói szerepkört az Azure CLI-felhasználóhoz az Azure OpenAI-fiókban:

      az role assignment create --role "Cognitive Services OpenAI User" --assignee <CLI_USERNAME> --scope <AZURE_OPENAI_RESOURCE_ID>
      

      Cserélje le <CLI_USERNAME> az Azure CLI-felhasználónevet és <AZURE_OPENAI_RESOURCE_ID> az Azure OpenAI-fiók erőforrás-azonosítóját.

    4. Futtassa a következő parancsokat a munkamenetkészlet erőforrás-azonosítójának lekéréséhez:

      az containerapp sessionpool show --name $SESSION_POOL_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsv
      
    5. Rendelje hozzá az Azure ContainerApps-munkamenet-végrehajtó szerepkört az azonosítójával a munkamenetkészlet Azure CLI-felhasználójához:

      az role assignment create \
          --role "Azure ContainerApps Session Executor" \
          --assignee <CLI_USERNAME> \
          --scope <SESSION_POOL_RESOURCE_ID>
      

      Cserélje le <CLI_USERNAME> az Azure CLI-felhasználónevet és <SESSION_POOL_RESOURCE_ID> a munkamenetkészlet erőforrás-azonosítóját.

Az alkalmazás futtatása

A mintaalkalmazás futtatása előtt nyissa meg a main.py egy szerkesztőben, és tekintse át a kódot. Az alkalmazás a FastAPI használatával hoz létre egy webes API-t, amely elfogadja a lekérdezési sztringben lévő felhasználói üzenetet.

A következő kódsorok példányosítanak egy SessionsPythonTool-t , és adják meg a Szemantic Kernel-ügynöknek:

sessions_tool = SessionsPythonTool(
    pool_management_endpoint,
    auth_callback=auth_callback_factory("https://dynamicsessions.io/.default"),
)
kernel.add_plugin(sessions_tool, "SessionsTool")

Amikor számításokat kell végeznie, a kernel a SessionsPythonTool kódértelmezletével futtatja a kódot. A kód végrehajtása egy munkamenetben történik a munkamenetkészletben. Alapértelmezés szerint az eszköz példányosításakor véletlenszerű munkamenet-azonosító jön létre. Ha a kernel több Python-kódrészlet futtatására használja az eszközt, ugyanazt a munkamenetet használja. Annak érdekében, hogy minden végfelhasználó egyedi munkamenetet használjon, minden felhasználóhoz használjon külön kernelt és eszközt.

A SessionsPythonTool a csomag verziójában vagy újabb verzióiban 0.9.8b1 semantic-kernel érhető el.

  1. Futtassa a mintaalkalmazást:

    fastapi dev main.py
    
  2. Nyisson meg egy böngészőt, majd lépjen a következő helyre: http://localhost:8000/docs. Megjelenik a mintaalkalmazás Swagger felhasználói felülete.

  3. Bontsa ki a végpontot /chat , és válassza a Kipróbálás lehetőséget.

  4. Írja be What time is it right now? a mezőt, és válassza a message Végrehajtás lehetőséget.

    Az ügynök az aktuális időponttal válaszol. A terminálban az ügynök által létrehozott Python-kódot ábrázoló naplók jelennek meg az aktuális idő lekéréséhez és egy kódértelmeztető munkamenetben való futtatásához.

  5. Az alkalmazás leállításához adja meg Ctrl+C a terminált.

Nem kötelező: A mintaalkalmazás üzembe helyezése az Azure Container Appsben

A FastAPI-alkalmazás Azure Container Appsben való üzembe helyezéséhez létre kell hoznia egy tárolórendszerképet, és le kell küldenie egy tárolóregisztrációs adatbázisba. Ezután üzembe helyezheti a rendszerképet az Azure Container Appsben. A az containerapp up parancs ezeket a lépéseket egyetlen parancsba egyesíti.

Ezután konfigurálnia kell az alkalmazás felügyelt identitását, és hozzá kell rendelnie a megfelelő szerepköröket az Azure OpenAI és a munkamenetkészlet eléréséhez.

  1. A Container Apps-környezet változóinak és az alkalmazás nevének beállítása:

    ENVIRONMENT_NAME=aca-sessions-tutorial-env
    CONTAINER_APP_NAME=chat-api
    
  2. Az alkalmazás létrehozása és üzembe helyezése az Azure Container Appsben:

    az containerapp up \
        --name $CONTAINER_APP_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $SESSION_POOL_LOCATION \
        --environment $ENVIRONMENT_NAME \
        --env-vars "AZURE_OPENAI_ENDPOINT=<OPEN_AI_ENDPOINT>" "POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGMENT_ENDPOINT>" \
        --source .
    

    Cserélje le <OPEN_AI_ENDPOINT> az Azure OpenAI-fiók végpontjára és <SESSION_POOL_MANAGMENT_ENDPOINT> a munkamenetkészlet felügyeleti végpontjára.

  3. Engedélyezze a rendszer által hozzárendelt felügyelt identitást az alkalmazáshoz:

    az containerapp identity assign \
        --name $CONTAINER_APP_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --system-assigned
    
  4. Ahhoz, hogy az alkalmazás hozzáférjen az Azure OpenAI-hoz és a munkamenetkészlethez, a felügyelt identitást a megfelelő szerepkörökhöz kell rendelnie.

    1. A felügyelt identitás főazonosítójának lekérése:

      az containerapp show \
          --name $CONTAINER_APP_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query identity.principalId \
          --output tsv
      
    2. Kérje le a munkamenetkészlet erőforrás-azonosítóját:

      az containerapp sessionpool show \
          --name $SESSION_POOL_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query id \
          --output tsv
      
    3. Rendelje hozzá a felügyelt identitást és Azure ContainerApps Session Executor Contributor a szerepköröket a munkamenetkészlethez:

      A következő parancs futtatása előtt cserélje le és <SESSION_POOL_RESOURCE_ID> írja be <PRINCIPAL_ID> az előző lépésekben lekért értékeket.

      az role assignment create \
          --role "Azure ContainerApps Session Executor" \
          --assignee <PRINCIPAL_ID> \
          --scope <SESSION_POOL_RESOURCE_ID>
      
      az role assignment create \
          --role "Contributor" \
          --assignee <PRINCIPAL_ID> \
          --scope <SESSION_POOL_RESOURCE_ID>
      
    4. Kérje le az Azure OpenAI-fiók erőforrás-azonosítóját:

      az cognitiveservices account show \
          --name $AZURE_OPENAI_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query id \
          --output tsv
      
    5. Rendelje hozzá a felügyelt identitáshoz a Cognitive Services OpenAI User szerepkört az Azure OpenAI-fiókhoz:

      A következő parancs futtatása előtt cserélje le és <AZURE_OPENAI_RESOURCE_ID> írja be <PRINCIPAL_ID> az előző lépésekben lekért értékeket.

      az role assignment create \
          --role "Cognitive Services OpenAI User" \
          --assignee <PRINCIPAL_ID> \
          --scope <AZURE_OPENAI_RESOURCE_ID>
      
  5. Kérje le az alkalmazás teljes tartománynevét (FQDN):

    az containerapp show \
        --name $CONTAINER_APP_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query properties.configuration.ingress.fqdn \
        --output tsv
    
  6. Nyissa meg a böngészőt az üzembe helyezett alkalmazás teszteléséhez https://<FQDN>/docs .

Az erőforrások eltávolítása

Ha végzett az erőforrásokkal, törölheti őket a díjak elkerülése érdekében:

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Következő lépések