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
- Egy Azure-fiók, aktív előfizetéssel.
- Ha még nem rendelkezik fiókkal, ingyen létrehozhat egyet.
- Telepítse az Azure CLI-t.
- Git.
- Python 3.10 vagy újabb verzió.
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.
Frissítse az Azure CLI-t a legújabb verzióra.
az upgrade
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
Jelentkezzen be az Azure-ba:
az login
Á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.Erőforráscsoport létrehozása:
az group create --name $RESOURCE_GROUP_NAME --location $SESSION_POOL_LOCATION
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
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"
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
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
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
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
: .Telepítse a szükséges Python-csomagokat:
python -m pip install -r requirements.txt
Az alkalmazás futtatásához konfigurálnia kell a környezeti változókat.
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
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
Hozzon létre egy
.env
fájlt a mintaalkalmazás könyvtárának gyökerében (ugyanazon a helyen, mintmain.py
a ). 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.
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.Kérje le az Azure CLI-felhasználónevet:
az account show --query user.name --output tsv
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
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.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
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.
Futtassa a mintaalkalmazást:
fastapi dev main.py
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.Bontsa ki a végpontot
/chat
, és válassza a Kipróbálás lehetőséget.Írja be
What time is it right now?
a mezőt, és válassza amessage
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.
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.
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
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.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
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.
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
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
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>
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
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>
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
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