Oktatóanyag: Kódértelmezési munkamenetek használata az AutoGenben az Azure Container Apps használatával
Az AutoGen egy keretrendszer nagy nyelvi modell (LLM) alkalmazások fejlesztéséhez, amelyek több olyan ügynököt használnak, amelyek egymással versengenek a feladatok megoldásához. Az AutoGenrel készült ügynökök különböző módokon működnek, amelyek LLM-eket, emberi bemeneteket és eszközöket használnak. Az AutoGen-ügynökök egyik fontos eszköze a kódvégzők. Lehetővé teszik az ügynökök számára, hogy összetett feladatokat hajtsanak végre kód írásával és végrehajtásával. Az Azure Container Apps dinamikus munkameneteinek AutoGennel való integrálásával kódértelmezőt adhat az ügynöknek, amellyel hasznos számításokat végezhet és műveleteket hajthat végre.
Ebben az oktatóanyagban megtudhatja, hogyan futtathat egy AutoGenben létrehozott 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.
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/autogen-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
Kérje le az Azure OpenAI API-kulcsot:
az cognitiveservices account keys list \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query key1 \ --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:OAI_CONFIG_LIST=[{"model": "gpt-4", "api_key": "<AZURE_OPENAI_KEY>", "api_type": "azure", "base_url": "<AZURE_OPENAI_ENDPOINT>", "api_version": "2023-12-01-preview"}] POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>
Cserélje le
<AZURE_OPENAI_ENDPOINT>
az Azure OpenAI-fiókvégpontra,<AZURE_OPENAI_KEY>
az Azure OpenAI API-kulcsra é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. Ahhoz, hogy az alkalmazás hozzáférhessen a munkamenetkészlethez, meg kell adnia magának az Azure ContainerApps-munkamenet-végrehajtó szerepkört a munkamenetkészleten.Kérje le az Azure CLI-felhasználónevet:
az account show --query user.name --output tsv
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 Azure CLI-felhasználóhoz a munkamenetkészletben:
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 létrehoznak egy ACASessionsExecutort , és az autogen ügynöknek biztosítják:
aca_sessions_executor = ACASessionsExecutor(aca_pool_management_endpoint)
code_executor_agent = ConversableAgent(
name="CodeExecutor",
llm_config=False,
code_execution_config={"executor": aca_sessions_executor},
human_input_mode="NEVER",
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", "").strip().upper()
)
Ha számításokat és feladatokat kell végrehajtania, az ügynök az ACASessionsExecutor kódértelmező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 az ügynök ugyanazt az eszközt használja több Python-kódrészlet futtatásához, 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 ügynököt és eszközt.
Az ACASessionsExecutor aca_sessions_executor.py van implementálva.
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 'OAI_CONFIG_LIST=[{"model": "gpt-4", "api_key": "<AZURE_OPENAI_KEY>", "api_type": "azure", "base_url": "<AZURE_OPENAI_ENDPOINT>", "api_version": "2023-12-01-preview"}]' 'POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>' \ --source .
Cserélje le
<AZURE_OPENAI_ENDPOINT>
az Azure OpenAI-fiókvégpontra,<AZURE_OPENAI_KEY>
az Azure OpenAI-kulcsra és<SESSION_POOL_MANAGEMENT_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 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 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