Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Динамические сеансы приложений контейнеров Azure обеспечивают быстрый и масштабируемый доступ к интерпретатору кода. Каждый сеанс интерпретатора кода полностью изолирован границой Hyper-V и предназначен для запуска ненадежного кода.
Используется для сеансов интерпретатора кода
Сеансы интерпретатора кода идеально подходят для сценариев, в которых необходимо запустить код, который потенциально вредоносный или может причинить вред хост-системе или другим пользователям, например:
- Код, созданный большой языковой моделью (LLM).
- Код, отправленный конечным пользователем в веб-приложении или приложении SaaS.
Для интеграции приложений ИИ с сеансами интерпретатора кода в популярных LLM платформах, таких как LangChain, LlamaIndex и Semantic Kernel, можно использовать средства и подключаемые модули.
Приложения также могут интегрироваться с сеансом интерпретатора кода с помощью REST API. API позволяет выполнять следующие действия.
Запустите код в сеансе и получите результаты.
Отправка и скачивание файлов в сеанс и из него.
Вы можете отправлять и скачивать исполняемые файлы кода или файлы данных, которые может обрабатывать код.
Встроенные сеансы интерпретатора кода поддерживают наиболее распространенные сценарии выполнения кода без необходимости управлять инфраструктурой или контейнерами.
Если вам нужен полный контроль над средой выполнения кода или у вас есть другой сценарий, требующий изолированных песочниц, вы можете использовать сеансы выполнения пользовательского интерпретатора кода.
Пул сеансов интерпретатора кода
Чтобы использовать сеансы интерпретатора кода, требуется ресурс Azure с именем пула сеансов , который определяет конфигурацию сеансов интерпретатора кода.
В пуле сеансов можно указать такие параметры, как максимальное количество одновременных сеансов и время простоя сеанса до остановки сеанса.
Пул сеансов можно создать с помощью портала Azure, Azure CLI или шаблонов Azure Resource Manager. После создания пула сеансов можно использовать конечные точки API управления пулом для управления и выполнения кода внутри сеанса.
Дополнительные сведения о создании и настройке пула сеансов см. в разделе "Использование пулов сеансов".
Выполнение кода в сеансе
После создания пула сеансов приложение может взаимодействовать с сеансами в пуле с помощью интеграции с платформой LLM или с помощью конечных точек API управления пула напрямую.
Идентификаторы сеанса
Внимание
Идентификатор сеанса является конфиденциальной информацией. Для управления его значением необходимо использовать безопасный процесс. Часть этого процесса заключается в том, чтобы убедиться, что ваше приложение гарантирует, что каждый пользователь или клиент имеет доступ только к собственным сеансам.
Неспособность защитить доступ к сеансам может привести к неправильному использованию или несанкционированного доступа к данным, хранящимся в сеансах пользователей. Дополнительные сведения см. в разделе "Идентификаторы сеансов".
При взаимодействии с сеансами в пуле используйте идентификатор сеанса для ссылки на каждый сеанс. Идентификатор сеанса — это строка, которая уникальна в пуле сеансов. При создании веб-приложения можно использовать идентификатор пользователя. При создании чат-бота можно использовать идентификатор беседы.
Если есть запущенный сеанс с идентификатором, сеанс повторно используется. Если с идентификатором нет запущенного сеанса, создается новый сеанс автоматически.
Проверка подлинности
Проверка подлинности обрабатывается с помощью токенов Microsoft Entra. Допустимые токены Microsoft Entra создаются удостоверением, принадлежащим к ролям исполнитель сеансов Azure ContainerApps и участник в пуле сеансов.
Если вы используете интеграцию фреймворка LLM, фреймворк обрабатывает создание токенов и управление ими. Убедитесь, что приложение настроено с управляемым удостоверением, которое имеет необходимые назначения ролей в пуле сеансов.
Если вы используете конечные точки API управления пула напрямую, необходимо создать маркер и включить его в Authorization заголовок HTTP-запросов. Помимо упомянутых ранее назначений ролей, маркер должен содержать утверждение аудитории (aud) со значением https://dynamicsessions.io.
Дополнительные сведения см. в разделе "Проверка подлинности и авторизация".
Работа с файлами
Вы можете отправлять и скачивать файлы и перечислять все файлы в сеансе интерпретатора кода.
Поддерживаемые символы
Имена файлов и пути должны использовать только следующие поддерживаемые символы:
- Прописные и строчные буквы:
A-Z,a-z. - Цифры:
0-9. - Специальные символы:
-,_,.@$&=;,#%^()(Пути не могут содержать..) - Символы Юникода: включает китайский, японский и другие международные символы.
Отправка файла
Чтобы загрузить файл в сеанс, отправьте POST запрос на files конечную точку в запросе данных формы с несколькими частями. Включите данные файла в текст запроса. Файл должен содержать имя файла.
Отправленные файлы хранятся в файловой системе сеанса в каталоге /mnt/data .
В следующем примере показано, как отправить файл в сеанс.
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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--
Скачивание файла
Чтобы скачать файл из каталога сеанса /mnt/data , отправьте запрос в конечную GET точку files/{filename}/content . Ответ содержит данные файла.
В следующем примере показано, как отформатировать GET запрос на скачивание файла.
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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>
Получение метаданных файла
Чтобы получить метаданные для файла в каталоге сеанса /mnt/data, отправьте запрос GET к конечной точке по адресу files/{filename}. Ответ включает такие свойства файла, как размер и время последнего изменения.
В следующем примере показано, как отформатировать GET запрос на получение метаданных файла.
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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>
Перечень файлов
Чтобы получить список файлов в каталоге сеанса /mnt/data , отправьте запрос в конечную GET точку files .
В следующем примере показано, как перечислить файлы в каталоге сеанса.
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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>
Ответ содержит список файлов в сеансе.
В следующем описании показан пример типа ответа, который можно ожидать при запросе содержимого сеанса.
{
"$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"
}
}
]
}
Безопасность
Сеансы интерпретатора кода предназначены для запуска ненадежного кода в изолированных средах, чтобы обеспечить защиту приложений и данных.
Интеграция платформ LLM
Вместо прямого использования API управления пулом сеансов можно использовать следующие платформы LLM, которые обеспечивают интеграцию с сеансами интерпретатора кода.
| Платформа | Пакет | Учебник |
|---|---|---|
| LangChain | Питон (язык программирования): langchain-azure-dynamic-sessions |
Руководство |
| LlamaIndex | Питон (язык программирования): llama-index-tools-azure-code-interpreter |
Руководство |
| Семантическое ядро | Python: semantic-kernel (версия 0.9.8-b1 или более поздней версии) |
Руководство |
Конечные точки API управления
Если вы не используете интеграцию с платформой LLM, вы можете взаимодействовать с пулом сеансов напрямую с помощью конечных точек API управления.
Выполнение кода в сеансе
Чтобы запустить код в сеансе, отправьте запрос POST в конечную точку executions, включив код в тело запроса. Каждое выполнение кода ограничено максимальной продолжительностью выполнения в 220 секунд.
В следующем примере в Python отображается Hello, world!.
Перед отправкой запроса замените заполнители между <> скобками соответствующими значениями для пула сеансов и идентификатора сеанса.
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!')"
}
}
Чтобы повторно использовать сеанс, укажите тот же идентификатор сеанса в последующих запросах.
Отправка файла в сеанс
Чтобы загрузить файл в сеанс, отправьте POST запрос на files конечную точку в запросе данных формы с несколькими частями. Включите данные файла в текст запроса. Файл должен содержать имя файла.
Отправленные файлы хранятся в файловой системе сеанса в каталоге /mnt/data .
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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--
Примечание.
Ограничение отправки файла составляет 128 МБ. Если это ограничение превышено, может возникнуть ошибка HTTP 413.
Скачивание файла из сеанса
Чтобы скачать файл из каталога сеанса /mnt/data , отправьте запрос в конечную GET точку files/{filename}/content . Ответ содержит данные файла.
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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>
Получение метаданных файла
Чтобы получить метаданные для файла в каталоге сеанса /mnt/data , отправьте запрос в конечную GET точку files/{filename} . Ответ включает такие свойства файла, как размер и время последнего изменения.
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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>
Вывод списка файлов в сеансе
Чтобы получить список файлов в каталоге сеанса /mnt/data , отправьте запрос в конечную GET точку files .
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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>
Ответ содержит список файлов в сеансе.
Ниже приведен пример типа ответа, который можно ожидать при запросе содержимого сеанса.
{
"$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 включают популярные пакеты Python, такие как NumPy, pandas и scikit-learn.
Чтобы вывести список предварительно установленных пакетов, вызовите конечную точку executions со следующим кодом.
Перед отправкой запроса замените заполнители между <> квадратными скобками значениями, которые относятся к запросу.
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]"
}
}
Ведение журнала
Доступные выходные данные — это результаты, возвращаемые из выполнения кода, включая stdout и stderr.
Если вам нужна трассировка запросов или ответов, выполните её в приложении, которое вызывает API управления пулом сеансов (например, записывайте идентификаторы запросов, входные данные и ответы на границе приложения).
Примечание.
Сеансы интерпретатора кода не выдают журналы AppEnvSession в Log Analytics.
Metrics
Метрики использования интерпретатора кода и выполнения возвращаются в виде заголовков ответа HTTP для API выполнения кода. Эти метрики не записываются в Log Analytics.
Просмотр метрик
- Вызовите API выполнения кода (
/executions). - Проверьте заголовки ответа HTTP для метрик использования и выполнения.
Дополнительные сведения об API выполнения кода и конечных точках см. в разделах Запуск кода в сеансе и Конечные точки управления API.
Выставление счетов
Счета за сеансы интерпретатора кода выставляются на основе продолжительности каждого сеанса. Дополнительные сведения см. в разделе о выставлении счетов.