Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Dynamické relace Azure Container Apps poskytují rychlý a škálovatelný přístup ke interpretu kódu. Každá relace interpretu kódu je plně izolovaná hranici Technologie Hyper-V a je navržená tak, aby spouštěla nedůvěryhodný kód.
Používá se pro relace interpretu kódu.
Relace interpreta kódu jsou ideální pro scénáře, kdy potřebujete spustit kód, který je potenciálně škodlivý nebo může poškodit hostitelský systém nebo jiné uživatele, například:
- Kód vygenerovaný velkým jazykovým modelem (LLM).
- Kód odeslaný koncovým uživatelem ve webové nebo saaS aplikaci
Pro oblíbené architektury LLM, jako jsou LangChain, LlamaIndex nebo Sémantic Kernel, můžete použít nástroje a moduly plug-in k integraci aplikací AI s relacemi interpretu kódu.
Vaše aplikace se také můžou integrovat s relací interpretu kódu pomocí rozhraní REST API. Rozhraní API umožňuje:
Spusťte kód v relaci a získejte výsledky.
Nahrajte a stáhněte soubory do relace a z ní.
Můžete nahrát a stáhnout spustitelné soubory kódu nebo datové soubory, které může váš kód zpracovat.
Předdefinované relace interpreta kódu podporují nejběžnější scénáře spouštění kódu bez nutnosti spravovat infrastrukturu nebo kontejnery.
Pokud potřebujete úplnou kontrolu nad prostředím spouštění kódu nebo máte jiný scénář, který vyžaduje izolované sandboxy, můžete použít vlastní relace interpretu kódu.
Fond relací interpretu kódu
Pokud chcete použít relace interpreta kódu, potřebujete prostředek Azure s názvem fond relací , který definuje konfiguraci relací interpretu kódu.
Ve fondu relací můžete zadat nastavení, jako je maximální počet souběžných relací a doba nečinnosti relace před ukončením relace.
Fond relací můžete vytvořit pomocí webu Azure Portal, Azure CLI nebo šablon Azure Resource Manageru. Po vytvoření fondu relací můžete pomocí koncových bodů rozhraní API pro správu fondu spravovat a spouštět kód v rámci relace.
Další informace o tom, jak vytvořit a nakonfigurovat fond relací, naleznete v tématu Použití fondů relací.
Provádění kódu v relaci
Po vytvoření fondu relací může vaše aplikace interagovat s relacemi ve fondu pomocí integrace s architekturou LLM nebo přímo pomocí koncových bodů rozhraní API pro správu fondu.
Identifikátory relací
Důležité
Identifikátor relace je citlivé informace, které vyžadují, abyste ke správě jeho hodnoty použili zabezpečený proces. Část tohoto procesu vyžaduje, aby vaše aplikace zajistila, že každý uživatel nebo tenant má přístup jenom k vlastním relacím.
Pokud se nepodaří zabezpečit přístup k relacím, může dojít ke zneužití nebo neoprávněnému přístupu k datům uloženým v relacích uživatelů. Další informace naleznete v tématu Identifikátory relací.
Při interakci s relacemi ve fondu použijete identifikátor relace k odkazování na každou relaci. Identifikátor relace je řetězec, který definujete a který je jedinečný v rámci fondu relací. Pokud vytváříte webovou aplikaci, můžete použít ID uživatele. Pokud vytváříte chatovacího robota, můžete použít ID konverzace.
Pokud existuje spuštěná relace s identifikátorem, relace se znovu použije. Pokud neexistuje žádná spuštěná relace s identifikátorem, vytvoří se nová relace automaticky.
Ověřování
Ověřování se zpracovává pomocí tokenů Microsoft Entra. Platné tokeny Microsoft Entra se generují identitou, která patří do rolí exekutoru relací Azure ContainerApps a přispěvatele ve fondu relací.
Pokud používáte integraci architektury LLM, rozhraní za vás zpracovává generování a správu tokenů. Ujistěte se, že je aplikace nakonfigurovaná se spravovanou identitou s potřebnými přiřazeními rolí ve fondu relací.
Pokud používáte koncové body rozhraní API pro správu fondu přímo, musíte vygenerovat token a zahrnout ho do Authorization hlavičky požadavků HTTP. Kromě dříve zmíněných přiřazení rolí musí token obsahovat deklaraci identity cílové skupiny (aud) s hodnotou https://dynamicsessions.io.
Další informace najdete v tématu Ověřování a autorizace.
Práce se soubory
Můžete nahrát a stáhnout soubory a zobrazit seznam všech souborů v relaci interpretu kódu.
Odeslání souboru
Pokud chcete nahrát soubor do relace, odešlete POST žádost do koncového uploadFile bodu v žádosti o data formuláře s více částmi. Zahrňte data souboru do textu požadavku. Soubor musí obsahovat název souboru.
Nahrané soubory se ukládají do systému souborů relace v /mnt/data adresáři.
Následující příklad ukazuje, jak nahrát soubor do relace.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami hodnotami specifickými pro váš požadavek.
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--
Stažení souboru
Pokud chcete stáhnout soubor z adresáře relace /mnt/data , odešlete GET do koncového file/content/{filename} bodu požadavek. Odpověď obsahuje data souboru.
Následující příklad ukazuje, jak formátovat GET požadavek na stažení souboru.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami hodnotami specifickými pro váš požadavek.
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>
Seznam souborů
Pokud chcete zobrazit seznam souborů v adresáři relace /mnt/data , odešlete GET do koncového files bodu požadavek.
Následující příklad ukazuje, jak zobrazit seznam souborů v adresáři relace.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami hodnotami specifickými pro váš požadavek.
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>
Odpověď obsahuje seznam souborů v relaci.
Následující výpis ukazuje ukázku typu odpovědi, kterou můžete očekávat od žádosti o obsah relace.
{
"$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"
}
}
]
}
Bezpečnost
Seance interpretu kódu jsou navrženy tak, aby spouštěly nedůvěryhodný kód v izolovaných prostředích, čímž zajistí ochranu vašich aplikací a dat.
Integrace architektury LLM
Místo přímého použití rozhraní API pro správu fondu relací poskytují následující architektury LLM integraci s relacemi interpretu kódu:
| Rámec | Balíček | Kurz |
|---|---|---|
| LangChain | Krajta: langchain-azure-dynamic-sessions |
Výuka |
| LlamaIndex | Krajta: llama-index-tools-azure-code-interpreter |
Výuka |
| Sémantické jádro | Python: semantic-kernel (verze 0.9.8-b1 nebo novější) |
Výuka |
Koncové body rozhraní API pro správu
Pokud nepoužíváte integraci architektury LLM, můžete s fondem relací pracovat přímo pomocí koncových bodů rozhraní API pro správu.
Spuštění kódu v relaci
Pokud chcete spustit kód v relaci, odešlete POST do koncového code/execute bodu požadavek s kódem, který se má spustit v textu požadavku.
Následující příklad vytiskne Hello, world! v Pythonu.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami příslušnými hodnotami pro váš fond relací a identifikátor relace.
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!')"
}
}
Pokud chcete relaci znovu použít, zadejte stejný identifikátor relace v následných požadavcích.
Nahrání souboru do relace
Pokud chcete nahrát soubor do relace, odešlete POST žádost do koncového uploadFile bodu v žádosti o data formuláře s více částmi. Zahrňte data souboru do textu požadavku. Soubor musí obsahovat název souboru.
Nahrané soubory se ukládají do systému souborů relace v /mnt/data adresáři.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami hodnotami specifickými pro váš požadavek.
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--
Poznámka:
Limit pro nahrání souboru je 128MB. Pokud je tento počet překročen, HTTP 413 může být vrácen.
Stažení souboru z relace
Pokud chcete stáhnout soubor z adresáře relace /mnt/data , odešlete GET do koncového file/content/{filename} bodu požadavek. Odpověď obsahuje data souboru.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami hodnotami specifickými pro váš požadavek.
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>
Výpis souborů v relaci
Pokud chcete zobrazit seznam souborů v adresáři relace /mnt/data , odešlete GET do koncového files bodu požadavek.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami hodnotami specifickými pro váš požadavek.
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>
Odpověď obsahuje seznam souborů v relaci.
Následující výpis ukazuje ukázku typu odpovědi, kterou můžete očekávat od žádosti o obsah relace.
{
"$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"
}
}
]
}
Předinstalované balíčky
Sezení interpretu kódu Pythonu zahrnují oblíbené balíčky Pythonu, jako jsou NumPy, pandas a scikit-learn.
Pokud chcete vypsat seznam předinstalovaných balíčků, zavolejte code/execute koncový bod následujícím kódem.
Před odesláním požadavku nahraďte zástupné symboly mezi <> hranatými závorkami hodnotami specifickými pro váš požadavek.
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]"
}
}
Protokolování
Relace interpreta kódu nepodporují protokolování přímo. Aplikace, která komunikuje s relacemi, může protokolovat žádosti do rozhraní API pro správu fondu relací a odpovědí.
Fakturace
Relace interpreta kódu se účtují na základě doby trvání každé relace. Další informace najdete v tématu Fakturace.