Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dynamische Sitzungen in Azure Container Apps bieten schnellen und skalierbaren Zugriff auf einen Codeinterpreter. Jede Codeinterpretersitzung ist durch eine Hyper-V-Grenze vollständig isoliert und für das Ausführen von nicht vertrauenswürdigem Code konzipiert.
Anwendungsfälle für Codeinterpretersitzungen
Codeinterpretersitzungen eignen sich ideal für Szenarien, in denen Sie Code ausführen müssen, der potenziell schädlich ist oder dem Hostsystem oder anderen Benutzern schaden könnte, z. B.:
- Code, der von einem großen Sprachmodell (LLM) generiert wird.
- Code, der von einem Endbenutzer in einer Web- oder SaaS-Anwendung übermittelt wird.
Für beliebte LLM-Frameworks wie LangChain, LlamaIndex oder Semantic Kernel können Sie Tools und Plug-Ins verwenden, um KI-Apps in Codeinterpretersitzungen zu integrieren.
Ihre Anwendungen können auch mithilfe einer REST-API in Codeinterpretersitzungen integriert werden. Die API ermöglicht Folgendes:
Ausführen von Code in einer Sitzung und Abrufen von Ergebnissen
Laden Sie Dateien in und aus der Sitzung hoch und laden Sie sie herunter.
Sie können ausführbare Codedateien oder Datendateien hochladen und herunterladen, die Ihr Code verarbeiten kann.
Die integrierten Codeinterpretersitzungen unterstützen die häufigsten Codeausführungsszenarien, ohne dass Infrastruktur oder Container verwaltet werden müssen.
Wenn Sie die vollständige Kontrolle über die Codeausführungsumgebung benötigen oder über ein anderes Szenario verfügen, das isolierte Sandboxes erfordert, können Sie benutzerdefinierte Codeinterpretersitzungenverwenden.
Codeinterpreter-Sitzungspool
Um Codedolmetschersitzungen zu verwenden, benötigen Sie eine Azure-Ressource, die als Sitzungspool bezeichnet wird, der die Konfiguration für Codedolmetschersitzungen definiert.
Im Sitzungspool können Sie Einstellungen angeben, z. B. die maximale Anzahl gleichzeitiger Sitzungen und wie lange eine Sitzung im Leerlauf sein kann, bevor sie beendet wird.
Sie können einen Sitzungspool über das Azure-Portal, die Azure CLI oder mithilfe von Azure Resource Manager-Vorlagen erstellen. Nachdem Sie einen Sitzungspool erstellt haben, können Sie die API-Verwaltungsendpunkte des Pools verwenden, um Code innerhalb einer Sitzung zu verwalten und auszuführen.
Weitere Informationen zum Erstellen und Konfigurieren eines Sitzungspools finden Sie unter Verwenden von Sitzungspools.
Codeausführung in einer Sitzung
Nachdem Sie einen Sitzungspool erstellt haben, kann Ihre Anwendung mit Sitzungen im Pool interagieren, indem sie eine Integration mit einem LLM-Framework oder direkt die API-Verwaltungsendpunkte des Pools verwendet.
Sitzungs-IDs
Wichtig
Der Sitzungsbezeichner ist eine vertrauliche Angabe. Sie benötigen einen sicheren Prozess zum Verwalten seines Werts. Im Rahmen dieses Prozesses muss Ihre Anwendung sicherstellen, dass jeder Benutzer oder Mandant nur Zugriff auf seine eigenen Sitzungen hat.
Wenn sie den Zugriff auf Sitzungen nicht sichern, kann es zu Missbrauch oder unbefugtem Zugriff auf daten führen, die in den Sitzungen Ihrer Benutzer gespeichert sind. Weitere Informationen finden Sie unter Sitzungs-IDs.
Wenn Sie mit Sitzungen in einem Pool interagieren, verwenden Sie einen Sitzungsbezeichner, um auf jede Sitzung zu verweisen. Ein Sitzungsbezeichner ist eine von Ihnen definierte Zeichenfolge, die innerhalb des Sitzungspools einzigartig ist. Wenn Sie eine Webanwendung erstellen, können Sie die ID des Benutzers verwenden. Wenn Sie einen Chatbot erstellen, können Sie die Unterhaltungs-ID verwenden.
Wenn eine laufende Sitzung mit der ID vorhanden ist, wird die Sitzung wiederverwendet. Wenn keine laufende Sitzung mit der ID vorhanden ist, wird automatisch eine neue Sitzung erstellt.
Authentifizierung
Die Authentifizierung wird mit Microsoft Entra-Token verarbeitet. Gültige Microsoft Entra-Token werden durch eine Identität generiert, die zu den Rollen Azure ContainerApps Session Executor und Mitwirkender im Sitzungspool gehört.
Wenn Sie eine LLM-Frameworkintegration verwenden, verarbeitet das Framework die Tokengenerierung und -verwaltung für Sie. Stellen Sie sicher, dass die Anwendung mit einer verwalteten Identität mit den erforderlichen Rollenzuweisungen im Sitzungspool konfiguriert ist.
Wenn Sie die API-Verwaltungsendpunkte des Pools direkt verwenden, müssen Sie ein Token generieren und in den Authorization
-Header Ihrer HTTP-Anforderungen einschließen. Zusätzlich zu den zuvor erwähnten Rollenzuweisungen muss das Token einen Zielgruppenanspruch (aud
) mit dem Wert https://dynamicsessions.io
enthalten.
Weitere Informationen finden Sie unter Authentifizierung und Autorisierung.
Arbeiten mit Dateien
Sie können Dateien hochladen und herunterladen und alle Dateien in einer Codedolmetschersitzung auflisten.
Hochladen einer Datei
Um eine Datei in eine Sitzung hochzuladen, senden Sie eine POST
-Anforderung an den uploadFile
-Endpunkt in einer „multipart form data“-Anforderung. Fügen Sie die Dateidaten in den Anforderungstext ein. Die Datei muss einen Dateinamen enthalten.
Hochgeladene Dateien werden im Dateisystem der Sitzung unter dem Verzeichnis /mnt/data
gespeichert.
Das folgende Beispiel zeigt, wie Sie eine Datei in eine Sitzung hochladen.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch Werte, die für Ihre Anforderung spezifisch sind.
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--
Herunterladen einer Datei
Um eine Datei aus dem /mnt/data
-Verzeichnis einer Sitzung herunterzuladen, senden Sie eine GET
-Anforderung an den file/content/{filename}
-Endpunkt. Die Antwort enthält die Dateidaten.
Im folgenden Beispiel wird veranschaulicht, wie eine Anforderung zum Herunterladen einer GET
Datei formatiert wird.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch Werte, die für Ihre Anforderung spezifisch sind.
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>
Auflisten der Dateien
Um die Dateien im /mnt/data
-Verzeichnis einer Sitzung aufzulisten, senden Sie eine GET
-Anforderung an den files
-Endpunkt.
Das folgende Beispiel zeigt, wie Sie die Dateien im Verzeichnis einer Sitzung auflisten.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch Werte, die für Ihre Anforderung spezifisch sind.
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>
Die Antwort enthält eine Liste der Dateien in der Sitzung.
Die folgende Auflistung zeigt ein Beispiel für den Typ der Antwort, die Sie beim Anfordern von Sitzungsinhalten erwarten können.
{
"$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"
}
}
]
}
Sicherheit
Codedolmetschersitzungen sind so konzipiert, dass nicht vertrauenswürdiger Code in isolierten Umgebungen ausgeführt wird, um sicherzustellen, dass Ihre Anwendungen und Daten geschützt bleiben.
LLM-Frameworkintegrationen
Anstatt die Sitzungspoolverwaltungs-API direkt zu verwenden, bieten die folgenden LLM-Frameworks Integrationen mit Codeinterpretersitzungen:
Rahmenwerk | Paket | Anleitung |
---|---|---|
LangChain | Python: langchain-azure-dynamic-sessions |
Tutorium |
LlamaIndex | Python: llama-index-tools-azure-code-interpreter |
Tutorium |
Semantischer Kernel | Python: semantic-kernel (Version 0.9.8-b1 oder höher) |
Tutorium |
API-Verwaltungsendpunkte
Wenn Sie keine LLM-Framework-Integration verwenden, können Sie direkt mithilfe der Verwaltungs-API-Endpunkte mit dem Sitzungspool interagieren.
Ausführen von Code in einer Sitzung
Um Code in einer Sitzung auszuführen, senden Sie eine POST
-Anforderung an den code/execute
-Endpunkt. Der auszuführende Code muss im Anforderungstext enthalten sein.
Im folgenden Beispiel wird Hello, world!
in Python gedruckt.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch die entsprechenden Werte für Ihren Sitzungspool und die Sitzungs-ID.
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!')"
}
}
Wenn Sie eine Sitzung wiederverwenden möchten, geben Sie dieselbe Sitzungs-ID in nachfolgenden Anforderungen an.
Hochladen einer Datei in eine Sitzung
Um eine Datei in eine Sitzung hochzuladen, senden Sie eine POST
-Anforderung an den uploadFile
-Endpunkt in einer „multipart form data“-Anforderung. Fügen Sie die Dateidaten in den Anforderungstext ein. Die Datei muss einen Dateinamen enthalten.
Hochgeladene Dateien werden im Dateisystem der Sitzung unter dem Verzeichnis /mnt/data
gespeichert.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch Werte, die für Ihre Anforderung spezifisch sind.
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--
Hinweis
Das Dateiuploadlimit lautet 128MB
. Wenn dies überschritten wird, wird HTTP 413
zurückgegeben.
Herunterladen einer Datei aus einer Sitzung
Um eine Datei aus dem /mnt/data
-Verzeichnis einer Sitzung herunterzuladen, senden Sie eine GET
-Anforderung an den file/content/{filename}
-Endpunkt. Die Antwort enthält die Dateidaten.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch Werte, die für Ihre Anforderung spezifisch sind.
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>
Auflisten der Dateien in einer Sitzung
Um die Dateien im /mnt/data
-Verzeichnis einer Sitzung aufzulisten, senden Sie eine GET
-Anforderung an den files
-Endpunkt.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch Werte, die für Ihre Anforderung spezifisch sind.
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>
Die Antwort enthält eine Liste der Dateien in der Sitzung.
Die folgende Auflistung zeigt ein Beispiel für den Typ der Antwort, die Sie beim Anfordern von Sitzungsinhalten erwarten können.
{
"$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"
}
}
]
}
Vorinstallierte Pakete
Python-Codedolmetschersitzungen umfassen beliebte Python-Pakete wie NumPy, Pandas und Scikit-Learn.
Rufen Sie zum Ausgeben der Liste der vorinstallierten Pakete den code/execute
-Endpunkt mit dem folgenden Code auf.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den Klammern (<>
) durch Werte, die für Ihre Anforderung spezifisch sind.
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]"
}
}
Protokollierung
Codedolmetschersitzungen unterstützen die Protokollierung nicht direkt. Ihre Anwendung, die mit den Sitzungen interagiert, kann Anforderungen an die Sitzungspoolverwaltungs-API und deren Antworten protokollieren.
Abrechnung
Codedolmetschersitzungen werden basierend auf der Dauer jeder Sitzung abgerechnet. Weitere Informationen finden Sie unter Abrechnung.