Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Dynamiska sessioner i Azure Container Apps ger snabb och skalbar åtkomst till en kodtolkare. Varje kodtolkarsession är helt isolerad av en Hyper-V-gräns och är utformad för att köra kod som inte är betrodd.
Kodtolkarsessioner är idealiska för scenarier där du behöver köra kod som är potentiellt skadlig eller kan orsaka skada för värdsystemet eller andra användare, till exempel:
För populära LLM-ramverk som LangChain, LlamaIndex eller Semantic Kernel kan du använda verktyg och plugin-program för att integrera AI-appar med kodtolksessioner.
Dina program kan också integreras med kodtolkarsessionen med hjälp av ett REST-API. Med API:et kan du köra kod i en session och hämta resultat. Du kan också ladda upp och ladda ned filer till och från sessionen. Du kan ladda upp och ladda ned körbara kodfiler eller datafiler som koden kan bearbeta.
De inbyggda kodtolkarsessionerna stöder de vanligaste scenarierna för kodkörning utan att behöva hantera infrastruktur eller containrar. Om du behöver fullständig kontroll över kodkörningsmiljön eller har ett annat scenario som kräver isolerade sandbox-miljöer kan du använda anpassade kodtolkarsessioner.
Om du vill använda kodtolkarsessioner behöver du en Azure-resurs som kallas en sessionspool som definierar konfigurationen för kodtolkarsessioner. I sessionspoolen kan du ange inställningar som maximalt antal samtidiga sessioner och hur länge en session kan vara inaktiv innan sessionen avslutas.
Du kan skapa en sessionspool med hjälp av mallarna Azure Portal, Azure CLI eller Azure Resource Manager. När du har skapat en sessionspool kan du använda poolens API-slutpunkter för hantering för att hantera och köra kod i en session.
Om du vill skapa en kodtolksessionspool med hjälp av Azure CLI kontrollerar du att du har de senaste versionerna av Azure CLI och Azure Container Apps-tillägget med följande kommandon:
# Upgrade the Azure CLI
az upgrade
# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y
az containerapps sessionpool create
Använd kommandot för att skapa poolen. I följande exempel skapas en Python-kodtolkarsessionspool med namnet my-session-pool
. Ersätt <RESOURCE_GROUP>
med resursgruppens namn innan du kör kommandot.
az containerapp sessionpool create \
--name my-session-pool \
--resource-group <RESOURCE_GROUP> \
--location westus2 \
--container-type PythonLTS \
--max-sessions 100 \
--cooldown-period 300 \
--network-status EgressDisabled
Du kan definiera följande inställningar när du skapar en sessionspool:
Inställning | beskrivning |
---|---|
--container-type |
Vilken typ av kodtolkare som ska användas. Det enda värde som stöds är PythonLTS . |
--max-sessions |
Det maximala antalet tilldelade sessioner som tillåts samtidigt. Maxvärdet är 600 . |
--cooldown-period |
Antalet tillåtna inaktiva sekunder före avslutning. Inaktivitetsperioden återställs varje gång sessionens API anropas. Det tillåtna intervallet är mellan 300 och 3600 . |
--network-status |
Anger om utgående nätverkstrafik tillåts från sessionen. Giltiga värden är EgressDisabled (standard) och EgressEnabled . |
Viktigt
Om du aktiverar utgående trafik kan kod som körs i sessionen komma åt Internet. Var försiktig när koden inte är betrodd eftersom den kan användas för att utföra skadliga aktiviteter, till exempel överbelastningsattacker.
Om du vill använda kodtolkarsessioner med LLM-ramverksintegreringar eller genom att anropa hanterings-API-slutpunkterna direkt behöver du poolens API-slutpunkt för hantering. Slutpunkten är i formatet https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>
.
Använd kommandot för att hämta hanterings-API-slutpunkten för en sessionspool az containerapps sessionpool show
. Ersätt <RESOURCE_GROUP>
med resursgruppens namn innan du kör kommandot.
az containerapp sessionpool show \
--name my-session-pool \
--resource-group <RESOURCE_GROUP> \
--query 'properties.poolManagementEndpoint' -o tsv
När du har skapat en sessionspool kan ditt program interagera med sessioner i poolen med hjälp av en integrering med ett LLM-ramverk eller med hjälp av poolens hanterings-API-slutpunkter direkt.
Viktigt
Sessionsidentifieraren är känslig information som kräver att du använder en säker process för att hantera dess värde. En del av den här processen kräver att programmet ser till att varje användare eller klient endast har åtkomst till sina egna sessioner. Om du inte kan skydda åtkomsten till sessioner kan det leda till missbruk eller obehörig åtkomst till data som lagras i användarnas sessioner. Mer information finns i Sessionsidentifierare
När du interagerar med sessioner i en pool använder du en sessionsidentifierare för att referera till varje session En sessionsidentifierare är en sträng som du definierar som är unik i sessionspoolen. Om du skapar ett webbprogram kan du använda användarens ID. Om du skapar en chattrobot kan du använda konversations-ID:t.
Om det finns en session som körs med identifieraren återanvänds sessionen. Om det inte finns någon session som körs med identifieraren skapas en ny session automatiskt.
Mer information om sessionsidentifierare finns i Översikt över sessioner.
Autentisering hanteras med hjälp av Microsoft Entra-token (tidigare Azure Active Directory). Giltiga Microsoft Entra-token genereras av en identitet som tillhör Azure ContainerApps sessionskörnings- och deltagarroller i sessionspoolen.
Om du använder en LLM-ramverksintegrering hanterar ramverket tokengenereringen och hanteringen åt dig. Kontrollera att programmet har konfigurerats med en hanterad identitet med nödvändiga rolltilldelningar i sessionspoolen.
Om du använder poolens API-slutpunkter för hantering direkt måste du generera en token och inkludera den Authorization
i rubriken för dina HTTP-begäranden. Utöver de rolltilldelningar som tidigare nämnts måste token innehålla ett målgruppsanspråk (aud
) med värdet https://dynamicsessions.io
.
Mer information finns i Autentisering.
I stället för att använda API:et för hantering av sessionspooler direkt tillhandahåller följande LLM-ramverk integreringar med kodtolkarsessioner:
Ramverk | Paket | Självstudie |
---|---|---|
LangChain | Python: langchain-azure-dynamic-sessions |
Handledning |
LlamaIndex | Python: llama-index-tools-azure-code-interpreter |
Handledning |
Semantic Kernel | Python: semantic-kernel (version 0.9.8-b1 eller senare) |
Handledning |
Om du inte använder en LLM-ramverksintegrering kan du interagera med sessionspoolen direkt med hjälp av hanterings-API-slutpunkterna.
Följande slutpunkter är tillgängliga för att hantera sessioner i en pool:
Slutpunktssökväg | Metod | beskrivning |
---|---|---|
code/execute |
POST |
Kör kod i en session. |
files/upload |
POST |
Ladda upp en fil till en session. |
files/content/{filename} |
GET |
Ladda ned en fil från en session. |
files |
GET |
Visa en lista över filerna i en session. |
Skapa den fullständiga URL:en för varje slutpunkt genom att sammanfoga poolens API-slutpunkt för hantering med slutpunktssökvägen. Frågesträngen måste innehålla en identifier
parameter som innehåller sessionsidentifieraren och en api-version
parameter med värdet 2024-02-02-preview
.
Till exempel: https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>
Om du vill köra kod i en session skickar du en POST
begäran till code/execute
slutpunkten med koden som ska köras i begärandetexten. I det här exemplet skrivs "Hello, world!" ut i Python.
Innan du skickar begäran ersätter du platshållarna mellan <>
hakparenteserna med lämpliga värden för sessionspoolen och sessionsidentifieraren.
POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/code/execute?api-version=2024-02-02-preview&identifier=<SESSION_ID>
Content-Type: application/json
Authorization: Bearer <token>
{
"properties": {
"codeInputType": "inline",
"executionType": "synchronous",
"code": "print('Hello, world!')"
}
}
Om du vill återanvända en session anger du samma sessionsidentifierare i efterföljande begäranden.
Om du vill ladda upp en fil till en session skickar du en POST
begäran till uploadFile
slutpunkten i en databegäran i flera delar. Inkludera fildata i begärandetexten. Filen måste innehålla ett filnamn.
Uppladdade filer lagras i sessionens filsystem under /mnt/data
katalogen.
Innan du skickar begäran ersätter du platshållarna mellan <>
hakparenteserna med värden som är specifika för din begäran.
POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/upload?api-version=2024-02-02-preview&identifier=<SESSION_ID>
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Authorization: Bearer <token>
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="<FILE_NAME_AND_EXTENSION>"
Content-Type: application/octet-stream
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Anteckning
Filuppladdningsgränsen är 128MB
. Om detta överskrids kan en HTTP 413
returneras.
Om du vill ladda ned en fil från en sessions /mnt/data
katalog skickar du en GET
begäran till file/content/{filename}
slutpunkten. Svaret innehåller fildata.
Innan du skickar begäran ersätter du platshållarna mellan <>
hakparenteserna med värden som är specifika för din begäran.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/content/<FILE_NAME_AND_EXTENSION>?api-version=2024-02-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Om du vill visa en lista över filerna i en sessions /mnt/data
katalog skickar du en GET
begäran till files
slutpunkten.
Innan du skickar begäran ersätter du platshållarna mellan <>
hakparenteserna med värden som är specifika för din begäran.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2024-02-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Svaret innehåller en lista över filer i sessionen.
I följande lista visas ett exempel på vilken typ av svar du kan förvänta dig av att begära sessionsinnehåll.
{
"$id": "1",
"value": [
{
"$id": "2",
"properties": {
"$id": "3",
"filename": "test1.txt",
"size": 16,
"lastModifiedTime": "2024-05-02T07:21:07.9922617Z"
}
},
{
"$id": "4",
"properties": {
"$id": "5",
"filename": "test2.txt",
"size": 17,
"lastModifiedTime": "2024-05-02T07:21:08.8802793Z"
}
}
]
}
Python-kodtolksessioner innehåller populära Python-paket som NumPy, Pandas och scikit-learn.
Om du vill mata ut listan över förinstallerade paket anropar du code/execute
slutpunkten med följande kod.
Innan du skickar begäran ersätter du platshållarna mellan <>
hakparenteserna med värden som är specifika för din begäran.
POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/identifier/<SESSION_ID>/code/execute?api-version=2024-02-02-preview&identifier=<SESSION_ID>
Content-Type: application/json
Authorization: Bearer <TOKEN>
{
"properties": {
"codeInputType": "inline",
"executionType": "synchronous",
"code": "import pkg_resources\n[(d.project_name, d.version) for d in pkg_resources.working_set]"
}
}
Kodtolkarsessioner stöder inte loggning direkt. Ditt program som interagerar med sessionerna kan logga begäranden till API:et för hantering av sessionspooler och dess svar.
Kodtolkarsessioner faktureras baserat på varaktigheten för varje session. Mer information finns i Fakturering .
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Utbildningsväg
Köra HPC-program (databehandling med höga prestanda) på Azure - Training
Azure HPC är en specialbyggd molnfunktion för HPC & AI-arbetsbelastning, med hjälp av ledande processorer och HPC-klass InfiniBand-anslutning, för att leverera bästa programprestanda, skalbarhet och värde. Med Azure HPC kan användarna frigöra innovation, produktivitet och affärsflexialitet genom ett brett utbud av HPC- och AI-tekniker som kan allokeras dynamiskt när dina affärs- och tekniska behov ändras. Den här utbildningsvägen är en serie moduler som hjälper dig att komma igång med Azure HPC – du kan väl
Certifiering
Certifierad av Microsoft: Azure Data Scientist Associate - Certifications
Hantera datainmatning och förberedelse, modellträning och distribution samt övervakning av maskininlärningslösningar med Python, Azure Machine Learning och MLflow.
Dokumentation
Självstudie: Använda kodtolkarsessioner i LangChain med Azure Container Apps
Lär dig hur du använder kodtolkarsessioner i LangChain i Azure Container Apps.
Anpassade containersessioner i Azure Container Apps
Lär dig att köra en container i en anpassad session i Azure Container Apps.
Översikt över dynamiska sessioner i Azure Container Apps
Lär dig hur du använder dynamiska sessioner i Azure Container Apps.