Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sesi dinamis Azure Container Apps menyediakan akses yang cepat dan dapat diskalakan ke penerjemah kode. Setiap sesi penerjemah kode sepenuhnya diisolasi oleh batas Hyper-V dan dirancang untuk menjalankan kode yang tidak tepercaya.
Menggunakan untuk sesi penerjemah kode
Sesi penerjemah kode sangat ideal untuk skenario di mana Anda perlu menjalankan kode yang berpotensi berbahaya atau dapat membahayakan sistem host atau pengguna lain, seperti:
- Kode yang dihasilkan oleh model bahasa besar (LLM).
- Kode yang dikirimkan oleh pengguna akhir di aplikasi web atau SaaS.
Untuk kerangka kerja LLM populer seperti LangChain, LlamaIndex, dan Kernel Semantik, Anda dapat menggunakan alat dan plugin untuk mengintegrasikan aplikasi AI dengan sesi penerjemah kode.
Aplikasi Anda juga dapat diintegrasikan dengan sesi penerjemah kode dengan menggunakan REST API. API memungkinkan Anda untuk:
Jalankan kode dalam sesi dan ambil hasil.
Unggah dan unduh file ke dan dari sesi.
Anda dapat mengunggah dan mengunduh file kode yang dapat dieksekusi atau file data yang dapat diproses kode Anda.
Sesi penerjemah kode bawaan mendukung skenario eksekusi kode yang paling umum tanpa mengharuskan Anda mengelola infrastruktur atau kontainer.
Jika Anda memerlukan kontrol penuh atas lingkungan eksekusi kode atau memiliki skenario berbeda yang memerlukan kotak pasir terisolasi, Anda dapat menggunakan sesi penerjemah kode kustom.
Kumpulan sesi penerjemah kode
Untuk menggunakan sesi penerjemah kode, Anda memerlukan sumber daya Azure yang disebut kumpulan sesi yang menentukan konfigurasi untuk sesi penerjemah kode.
Di kumpulan sesi, Anda dapat menentukan pengaturan seperti jumlah maksimum sesi bersamaan dan berapa lama sesi dapat diam sebelum sesi dihentikan.
Anda dapat membuat kumpulan sesi dengan menggunakan portal Microsoft Azure, Azure CLI, atau templat Azure Resource Manager. Setelah membuat kumpulan sesi, Anda dapat menggunakan titik akhir API manajemen kumpulan untuk mengelola dan menjalankan kode di dalam sesi.
Untuk informasi selengkapnya tentang cara membuat dan mengonfigurasi kumpulan sesi, lihat Menggunakan kumpulan sesi.
Eksekusi kode dalam sesi
Setelah Anda membuat kumpulan sesi, aplikasi Anda dapat berinteraksi dengan sesi di kumpulan dengan menggunakan integrasi dengan kerangka kerja LLM atau dengan menggunakan titik akhir API manajemen kumpulan secara langsung.
Pengidentifikasi sesi
Penting
Pengidentifikasi sesi adalah informasi sensitif. Anda perlu menggunakan proses aman untuk mengelola nilainya. Bagian dari proses ini adalah memastikan bahwa aplikasi Anda memastikan setiap pengguna atau penyewa hanya memiliki akses ke sesi mereka sendiri.
Kegagalan untuk mengamankan akses ke sesi dapat mengakibatkan penyalahgunaan atau akses tidak sah ke data yang disimpan dalam sesi pengguna Anda. Untuk informasi selengkapnya, lihat Pengidentifikasi sesi.
Saat berinteraksi dengan sesi di kumpulan, Anda menggunakan pengidentifikasi sesi untuk mereferensikan setiap sesi. Pengidentifikasi sesi adalah string yang Anda tentukan unik dalam kumpulan sesi. Jika Anda membuat aplikasi web, Anda dapat menggunakan ID pengguna. Jika Anda membuat chatbot, Anda dapat menggunakan ID percakapan.
Jika ada sesi yang sedang berjalan dengan pengidentifikasi, sesi akan digunakan kembali. Jika tidak ada sesi yang berjalan dengan pengidentifikasi, sesi baru akan dibuat secara otomatis.
Autentikasi
Autentikasi ditangani melalui token Microsoft Entra. Token Microsoft Entra yang valid dihasilkan oleh identitas yang termasuk dalam peran Azure ContainerApps Session Executor dan Kontributor pada kumpulan sesi.
Jika Anda menggunakan integrasi kerangka kerja LLM, kerangka kerja menangani pembuatan dan manajemen token untuk Anda. Pastikan bahwa aplikasi dikonfigurasi dengan identitas terkelola yang memiliki penetapan peran yang diperlukan pada kumpulan sesi.
Jika Anda menggunakan titik akhir API manajemen kumpulan secara langsung, Anda harus membuat token dan menyertakannya di Authorization header permintaan HTTP Anda. Selain penetapan peran yang disebutkan sebelumnya, token perlu berisi klaim audiens (aud) yang memiliki nilai https://dynamicsessions.io.
Untuk informasi selengkapnya, lihat Autentikasi dan otorisasi.
Bekerja dengan berkas
Anda dapat mengunggah dan mengunduh file, dan mencantumkan semua file dalam sesi penerjemah kode.
Karakter yang didukung
Nama file dan jalur hanya boleh menggunakan karakter yang didukung berikut:
- Huruf besar dan huruf kecil:
A-Z,a-z. - Digit:
0-9. - Karakter khusus:
-, ,_,.,@,$,&,=,;,,,#,%^, ,(.)(Jalur tidak boleh berisi..) - Karakter Unicode: Termasuk karakter Tionghoa, Jepang, dan internasional lainnya.
Mengunggah file
Untuk mengunggah file ke sesi, kirim POST permintaan ke files titik akhir dalam permintaan data formulir multipihak. Sertakan data file dalam isi permintaan. File harus menyertakan nama file.
File yang diunggah disimpan dalam sistem file sesi di /mnt/data direktori.
Contoh berikut menunjukkan cara mengunggah file ke sesi.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-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--
Unduh sebuah file
Untuk mengunduh file dari direktori sesi /mnt/data , kirim GET permintaan ke files/{filename}/content titik akhir. Respons mencakup data file.
Contoh berikut menunjukkan cara memformat GET permintaan untuk mengunduh file.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>/content?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Dapatkan metadata file
Untuk mendapatkan metadata untuk file di direktori sesi /mnt/data, kirimkan permintaan GET ke endpoint files/{filename}. Respons mencakup properti file seperti ukuran dan waktu terakhir diubah.
Contoh berikut menunjukkan cara memformat GET permintaan untuk mengambil metadata file.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Daftar file
Untuk mencantumkan file dalam direktori sesi /mnt/data, kirimkan permintaan GET ke titik akhir files.
Contoh berikut menunjukkan cara mencantumkan file dalam direktori sesi.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Respons berisi daftar file dalam sesi.
Daftar berikut ini memperlihatkan sampel jenis respons yang dapat Anda harapkan saat meminta konten sesi.
{
"$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"
}
}
]
}
Keamanan
Sesi penerjemah kode dirancang untuk menjalankan kode yang tidak tepercaya di lingkungan terisolasi untuk memastikan bahwa aplikasi dan data Anda tetap terlindungi.
Integrasi kerangka kerja LLM
Alih-alih menggunakan API manajemen kumpulan sesi secara langsung, Anda dapat menggunakan kerangka kerja LLM berikut, yang menyediakan integrasi dengan sesi penerjemah kode.
| Kerangka kerja | Paket | Panduan |
|---|---|---|
| LangChain | Python: langchain-azure-dynamic-sessions |
Tutorial |
| LlamaIndex | Python: llama-index-tools-azure-code-interpreter |
Tutorial |
| Kernel Semantik | Python: semantic-kernel (versi 0.9.8-b1 atau yang lebih baru) |
Tutorial |
Titik akhir API Manajemen
Jika Anda tidak menggunakan integrasi kerangka kerja LLM, Anda dapat berinteraksi dengan kumpulan sesi secara langsung dengan menggunakan titik akhir API manajemen.
Menjalankan kode dalam sesi
Untuk menjalankan kode dalam sesi, kirimkan POST permintaan ke executions endpoint dengan kode yang akan dijalankan di dalam badan permintaan. Setiap eksekusi kode dibatasi hingga runtime maksimum 220 detik.
Contoh berikut mencetak Hello, world! di Python.
Sebelum Anda mengirim permintaan, ganti placeholder di antara tanda kurung <> dengan nilai yang menyesuaikan untuk kumpulan sesi dan pengidentifikasi sesi Anda.
POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/executions?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Content-Type: application/json
Authorization: Bearer <TOKEN>
{
"properties": {
"codeInputType": "inline",
"executionType": "synchronous",
"code": "print('Hello, world!')"
}
}
Untuk menggunakan kembali sesi, tentukan pengidentifikasi sesi yang sama dalam permintaan berikutnya.
Mengunggah file ke sesi
Untuk mengunggah file ke sesi, kirim POST permintaan ke files titik akhir dalam permintaan data formulir multipihak. Sertakan data file dalam isi permintaan. File harus menyertakan nama file.
File yang diunggah disimpan dalam sistem file sesi di /mnt/data direktori.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-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--
Catatan
Batas unggahan file adalah 128 MB. Jika batas ini terlampaui, Anda mungkin mendapatkan kesalahan HTTP 413.
Mengunduh file dari sesi
Untuk mengunduh file dari direktori sesi /mnt/data , kirim GET permintaan ke files/{filename}/content titik akhir. Respons mencakup data file.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>/content?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Dapatkan metadata file
Untuk mendapatkan metadata untuk file di direktori sesi /mnt/data, kirimkan permintaan GET ke endpoint files/{filename}. Respons mencakup properti file seperti ukuran dan waktu terakhir diubah.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Mencantumkan file dalam sesi
Untuk mencantumkan file dalam direktori sesi /mnt/data, kirimkan permintaan GET ke titik akhir files.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>
Respons berisi daftar file dalam sesi.
Berikut ini adalah contoh jenis respons yang dapat Anda harapkan saat meminta konten sesi.
{
"$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"
}
}
]
}
Menghapus sesi
Gunakan API Hapus Sesi untuk mengakhiri sesi di kumpulan sesi penerjemah kode.
Setelah mengalokasikan sesi, Anda dapat memanggil API ini untuk menghentikannya secara manual kapan saja. Ini berguna ketika:
- Anda perlu membersihkan sumber daya sebelum sesi mencapai "time-to-live"nya.
- Kumpulan sesi Anda telah mencapai batas sesi bersamaan maksimumnya dan Anda perlu membebaskan kapasitas untuk sesi baru.
- Sesi telah menyelesaikan pekerjaannya dan Anda ingin segera merilis sumber daya.
Referensi API
Permintaan
DELETE <POOL_MANAGEMENT_ENDPOINT>/session?api-version=2025-02-02-preview&identifier=<SessionIdentifier>
Parameter-parameternya
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
api-version |
string | Yes | Versi API yang akan digunakan (misalnya, 2025-02-02-preview). |
identifier |
string | Yes | Pengidentifikasi unik dari sesi yang akan dihentikan. |
Examples
Permintaan
DELETE <POOL_MANAGEMENT_ENDPOINT>/session?api-version=2025-02-02-preview&identifier=testSessionIdentifier
Jawaban
HTTP/1.1 204 No Content
Mengambil informasi sesi
Anda bisa mengkueri kumpulan sesi untuk memeriksa status sesi, mendapatkan detail kedaluwarsa, dan mencantumkan semua sesi aktif. Kemampuan ini berguna untuk memantau kesehatan sesi, melacak penggunaan sumber daya, dan menerapkan alur kerja pembersihan kustom.
Dapatkan satu sesi
Untuk mengambil detail tentang sesi tertentu, gunakan API get session:
GET <POOL_MANAGEMENT_ENDPOINT>/session?identifier=<SessionIdentifier>&api-version=2025-02-02-preview
Titik getSession akhir mengembalikan metadata sesi termasuk pengidentifikasi sesi, waktu kedaluwarsa saat ini, dan tanda waktu pembuatan.
Skema respons SessionView
| Ladang | Type | Required | Deskripsi |
|---|---|---|---|
identifier |
string | Yes | ID sesi yang Anda berikan |
etag |
string | Yes | Pengidentifikasi versi opaque untuk sesi. Anda dapat menggunakan pengidentifikasi ini untuk deteksi perubahan. |
expiresAt |
DateTime | Yes | Tanda waktu UTC ketika sesi akan dihentikan |
createdAt |
DateTime | No | Tanda waktu pembuatan sesi |
lastAccessedAt |
DateTime | No | Tanda waktu permintaan terakhir untuk sesi ini |
Contoh permintaan dan respons
curl -X GET "https://eastasia.dynamicsessions.io/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myrg/sessionPools/mysessionpool/session?identifier=user-123&api-version=2025-02-02-preview" \
-H "Authorization: Bearer $TOKEN"
Respons keberhasilan (HTTP 200):
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
Daftarkan semua sesi dalam kumpulan
Untuk mengambil daftar semua sesi dalam kumpulan sesi Anda, gunakan endpoint listSessions
GET <POOL_MANAGEMENT_ENDPOINT>/listSessions?skip=0&api-version=2025-02-02-preview
Authorization: Bearer <TOKEN>
Pagination
Titik akhir daftar mendukung penomoran halaman berbasis lewati. Secara default, setiap halaman mengembalikan hingga 300 sesi.
skip Gunakan parameter kueri untuk menavigasi melalui hasil.
| Parameter | Deskripsi |
|---|---|
skip |
Jumlah sesi yang akan dilewati dari awal (default: 0) |
nextLink |
URL lengkap untuk halaman hasil berikutnya (disertakan sebagai respons saat ada lebih banyak hasil) |
Skema respons untuk ApiCollectionEnvelope
| Ladang | Type | Deskripsi |
|---|---|---|
value |
SessionView[] | Kumpulan objek sesi |
nextLink |
string | URL untuk halaman berikutnya (null jika tidak ada hasil lagi) |
Contoh perulangan penomoran halaman
POOL_URL="https://eastasia.dynamicsessions.io/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myrg/sessionPools/mysessionpool"
next_url="$POOL_URL/.management/listSessions?skip=0&api-version=2025-02-02-preview"
while [ -n "$next_url" ]; do
response=$(curl -s "$next_url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.value[] | {identifier, expiresAt}'
next_url=$(echo "$response" | jq -r '.nextLink // empty')
done
Contoh respons (HTTP 200):
{
"value": [
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
},
{
"identifier": "user-456",
"etag": "e5f6a7b8",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
],
"nextLink": "https://eastasia.dynamicsessions.io/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myrg/sessionPools/mysessionpool/listSessions?skip=300"
}
Paket yang telah diinstal sebelumnya
Sesi penerjemah kode Python mencakup paket Python populer seperti NumPy, panda, dan scikit-learn.
Untuk menghasilkan daftar paket yang telah diinstal sebelumnya, panggil executions titik akhir dengan kode berikut.
Sebelum Anda mengirim permintaan, ganti placeholder dalam tanda <> dengan nilai khusus untuk permintaan Anda.
POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/executions?api-version=2025-10-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]"
}
}
Pencatatan
Output yang tersedia adalah hasil yang Anda kembalikan dari eksekusi kode, termasuk stdout dan stderr.
Jika Anda memerlukan pelacakan permintaan atau respons, rekam di aplikasi yang memanggil API manajemen kumpulan sesi (misalnya, catat ID permintaan, input, dan respons di batas aplikasi Anda).
Catatan
Sesi penerjemah kode tidak mengeluarkan log AppEnvSession ke Analitik Log.
Metode pengukuran
Metrik penggunaan dan eksekusi penerjemah kode dikembalikan sebagai header respons HTTP untuk API eksekusi kode. Metrik ini tidak ditulis ke Analitik Log.
Lihat metrik
- Panggil API eksekusi kode (
/executions). - Periksa header respons HTTP untuk metrik penggunaan dan eksekusi.
Untuk detail tentang API dan titik akhir eksekusi kode, lihat Menjalankan kode dalam sesi dan titik akhir API Manajemen.
Penagihan
Sesi penerjemah kode ditagih berdasarkan durasi setiap sesi. Untuk mengetahui informasi lebih lanjut, lihat Penagihan.