Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
API пакетной службы Azure OpenAI предназначен для эффективной обработки крупномасштабных и больших объемов задач. Обработка асинхронных групп запросов с отдельной квотой, с целевым временем обработки в 24 часа и на 50% меньше затрат, чем глобальный стандарт. При пакетной обработке вместо отправки одного запроса за раз вы отправляете большое количество запросов в одном файле. Глобальные пакетные запросы имеют отдельную квоту токенов в очереди, что позволяет избежать сбоев в работе ваших онлайн-загрузок.
Основные примеры таких ситуаций:
Обработка крупномасштабных данных: быстро анализируйте обширные наборы данных параллельно.
Создание содержимого: создание больших объемов текста, таких как описания продуктов или статьи.
Проверка и сводка документов. Автоматизация проверки и сводки длинных документов.
Автоматизация поддержки клиентов. Обработка многочисленных запросов одновременно для ускорения ответов.
Извлечение и анализ данных. Извлечение и анализ данных из огромных объемов неструктурированных данных.
Задачи обработки естественного языка (NLP): выполнение таких задач, как анализ тональности или перевод больших наборов данных.
Маркетинг и персонализация: Генерация персонализированного контента и рекомендаций в большом масштабе.
Подсказка
ru-RU: Если ваши пакетные задания настолько велики, что вы достигли предела количества поставленных токенов даже после максимального использования квоты для вашего развертывания, некоторые регионы теперь поддерживают новую функцию, позволяющую ставить в очередь несколько пакетных заданий с экспоненциальным увеличением задержки.
После того как квота на обработанные токены станет доступна, можно создать следующее пакетное задание и запустить его автоматически. Дополнительные сведения см. в статье об автоматизации повторных попыток больших пакетных заданий с экспоненциальным обратным выходом.
Это важно
Мы стремимся обрабатывать пакетные запросы в течение 24 часов; Срок действия заданий, которые занимают больше времени, не истекают. Задание можно отменить в любое время. При отмене задания все оставшиеся работы отменяются и возвращаются все уже завершенные работы. С вас будет взиматься плата за любую выполненную работу.
Данные, хранящиеся в состоянии покоя, остаются в указанном географическом регионе Azure, тогда как данные могут обрабатываться для выполнения выводов в любой локации Azure OpenAI. Дополнительные сведения о местонахождении данных.
Поддержка пакетной обработки
Доступность глобальной пакетной модели
Регион | o3, 2025-04-16 | o4-mini, 2025-04-16 | gpt-4.1, 2025-04-14 | gpt-4.1-nano, 2025-04-14 | gpt-4.1-mini, 2025-04-14 | o3-mini, 2025-01-31 | gpt-4o, 2024-05-13 | gpt-4o, 2024-08-06 | gpt-4o, 2024-11-20 | gpt-4o-mini, 2024-07-18 |
---|---|---|---|---|---|---|---|---|---|---|
австралиявосток | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Бразильский Юг | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Канада Восток | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Истус | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
eastus2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
francecentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Германия-запад-центр | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
japaneast | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
koreacentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
northcentralus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Норвегия Восток | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Польша Центральная | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Южная Африка-север | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
СаутЦентралус | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Южная Индия | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
SwedenCentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Швейцария север | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
UKSOUTH | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Западная Европа | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Вестус | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
westus3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Регистрация требуется для доступа к o3-mini
. Для получения дополнительной информации см. наше руководство по моделям рассуждений.
Следующие модели поддерживают глобальную пакетную обработку:
Модель | Версия | Формат входных данных |
---|---|---|
o3-mini |
31.01.2025 | текст |
gpt-4o |
2024-08-06 | текст + изображение |
gpt-4o-mini |
18.07.2024 | текст + изображение |
gpt-4o |
13.05.2024 | текст + изображение |
поддержка API
Версия API | |
---|---|
Последний выпуск API общедоступной версии: | 2024-10-21 |
Последний поддерживаемый выпуск API предварительной версии: | 2025-04-01-preview |
Замечание
Хотя глобальная пакетная служба поддерживает более старые версии API, некоторые модели требуют более новых версий API предварительной версии. Например, o3-mini
не поддерживается 2024-10-21
, так как он был выпущен после этой даты. Чтобы получить доступ к новым моделям с использованием глобальной пакетной обработки, воспользуйтесь последней предварительной версией API.
Поддержка функций
В настоящее время не поддерживается следующее:
- Интеграция с API помощников.
- Интеграция с Azure OpenAI On Your Data feature.
Пакетное развертывание
Замечание
На портале Azure AI Foundry типы пакетного развертывания будут отображаться как Global-Batch
и Data Zone Batch
. Дополнительные сведения о типах развертывания Azure OpenAI см. в руководстве по типам развертывания.
Подсказка
Мы рекомендуем включить динамическую квоту для всех глобальных развертываний моделей пакетного режима, чтобы помочь избежать сбоев в работе из-за недостаточной квоты на поставленные в очередь токены. Использование динамической квоты позволяет развертыванию выгодно использовать большую квоту при наличии дополнительных ресурсов. Если динамическая квота отключена, развертывание сможет обрабатывать запросы только в пределах ограничения токенов, определенного при создании развертывания.
Предпосылки
- Подписка Azure — создайте бесплатную учетную запись.
- Ресурс Azure OpenAI с моделью типа развертывания
Global-Batch
. Вы можете ознакомиться с руководством по созданию ресурсов и развертыванию моделей, чтобы помочь в этом процессе.
Подготовка пакетного файла
Подобно тонкой настройке, глобальная пакетная обработка использует файлы в формате JSON lines (.jsonl
). Ниже приведены некоторые примеры файлов с различными типами поддерживаемого содержимого:
Формат входных данных
- Стандартные входные данные
- Изображение в кодировке Base64
- URL-адрес изображения
- Структурированные выходные данные
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
Требуется custom_id
, чтобы определить, какой отдельный пакетный запрос соответствует заданному ответу. Ответы не будут возвращены в том же порядке, что и порядок, определённый в .jsonl
пакетном файле.
model
Атрибут должен быть установлен таким образом, чтобы совпадать с именем глобального развертывания Batch, которое вы хотите использовать для получения ответов на запросы вывода.
Это важно
Атрибут model
должен быть установлен в соответствии с именем развертывания Global Batch, на которое вы хотите направить запросы для получения результатов. Одно и то же имя развертывания глобальной пакетной модели должно присутствовать в каждой строке пакетного файла. Если вы хотите использовать другое развертывание, необходимо сделать это в отдельном пакетном файле или задании.
Для оптимальной производительности рекомендуется отправлять большие файлы для пакетной обработки, а не большое количество небольших файлов с несколькими строками в каждом файле.
Создание входного файла
В этой статье мы создадим файл с именем test.jsonl
и скопируйм содержимое из стандартного блока входного кода выше в файл. Вам потребуется изменить и добавить имя глобального пакетного развертывания в каждую строку файла.
Отправка пакетного файла
После подготовки входного файла сначала необходимо отправить файл, чтобы затем запустить пакетное задание. Отправка файлов можно выполнять как программным способом, так и с помощью портала Azure AI Foundry. В этом примере демонстрируется отправка файла непосредственно в ресурс Azure OpenAI. Кроме того, можно настроить хранилище BLOB-объектов Azure для пакетной службы Azure OpenAI.
Войдите на портал Azure AI Foundry.
Выберите ресурс Azure OpenAI, в котором доступно развертывание глобальной пакетной модели.
Выберите Пакетные задания>+Создать пакетные задания.
В раскрывающемся списке в разделе Пакетные данные>Загрузить файлы> выберите Загрузить файл и укажите путь к файлу, созданному на предыдущем шаге
test.jsonl
>.
Создание пакетного задания
Нажмите кнопку "Создать", чтобы запустить пакетное задание.
Отслеживание хода выполнения пакетного задания
После создания задания можно отслеживать ход выполнения задания, выбрав идентификатор задания для последнего созданного задания. По умолчанию вы перейдете на страницу состояния для последнего созданного пакетного задания.
Состояние задания можно отслеживать на панели справа:
Получение выходного файла пакетного задания
После завершения задания или достижения им конечного состояния, будет создан файл ошибок и выходной файл, которые можно скачать для проверки, нажав соответствующую кнопку с иконкой стрелки вниз.
Отмена пакета
Отменяет выполняющееся пакетное задание. Пакет будет находиться в состоянии cancelling
до 10 минут, прежде чем перейти в cancelled
, где в выходном файле будут доступны частичные результаты (если таковые имеются).
Предпосылки
- Подписка Azure — создайте бесплатную учетную запись.
- Python 3.8 или более поздней версии
- Следующая библиотека Python:
openai
- Записные книжки Jupyter
- Ресурс Azure OpenAI с моделью типа развертывания
Global-Batch
. Вы можете ознакомиться с руководством по созданию ресурсов и развертыванию моделей, чтобы помочь в этом процессе.
Действия, описанные в этой статье, предназначены для последовательного выполнения в Jupyter Notebook. По этой причине мы создадим экземпляр клиента Azure OpenAI сразу в начале примеров. Если вы хотите выполнить шаг в неправильном порядке, часто необходимо настроить клиент Azure OpenAI в рамках этого вызова.
Даже если у вас уже установлена библиотека OpenAI Python, может потребоваться обновить установку до последней версии:
!pip install openai --upgrade
Подготовка пакетного файла
Подобно тонкой настройке, глобальная пакетная обработка использует файлы в формате JSON lines (.jsonl
). Ниже приведены некоторые примеры файлов с различными типами поддерживаемого содержимого:
Формат входных данных
- Стандартные входные данные
- Изображение в кодировке Base64
- URL-адрес изображения
- Структурированные выходные данные
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
Требуется custom_id
, чтобы определить, какой отдельный пакетный запрос соответствует заданному ответу. Ответы не будут возвращены в том же порядке, что и порядок, определённый в .jsonl
пакетном файле.
model
Атрибут должен быть установлен таким образом, чтобы совпадать с именем глобального развертывания Batch, которое вы хотите использовать для получения ответов на запросы вывода.
Это важно
Атрибут model
должен быть установлен в соответствии с именем развертывания Global Batch, на которое вы хотите направить запросы для получения результатов. Одно и то же имя развертывания глобальной пакетной модели должно присутствовать в каждой строке пакетного файла. Если вы хотите использовать другое развертывание, необходимо сделать это в отдельном пакетном файле или задании.
Для оптимальной производительности рекомендуется отправлять большие файлы для пакетной обработки, а не большое количество небольших файлов с несколькими строками в каждом файле.
Создание входного файла
В этой статье мы создадим файл с именем test.jsonl
и скопируйм содержимое из стандартного блока входного кода выше в файл. Вам потребуется изменить и добавить имя глобального пакетного развертывания в каждую строку файла. Сохраните этот файл в том же каталоге, где вы выполняете вашу записную книжку Jupyter.
Отправка пакетного файла
После подготовки входного файла сначала необходимо отправить файл, чтобы затем запустить пакетное задание. Отправка файлов можно выполнять как программным способом, так и с помощью портала Azure AI Foundry. В этом примере демонстрируется отправка файла непосредственно в ресурс Azure OpenAI. Кроме того, можно настроить хранилище BLOB-объектов Azure для пакетной службы Azure OpenAI.
import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider,
api_version="2025-04-01-preview"
)
# Upload a file with a purpose of "batch"
file = client.files.create(
file=open("test.jsonl", "rb"),
purpose="batch",
extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}} # Optional you can set to a number between 1209600-2592000. This is equivalent to 14-30 days
)
print(file.model_dump_json(indent=2))
print(f"File expiration: {datetime.fromtimestamp(file.expires_at) if file.expires_at is not None else 'Not set'}")
file_id = file.id
Рассмотрим проект улучшения: при отмене комментария и добавлении extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}}
вы устанавливаете срок действия нашего загружаемого файла на 14 дней. Максимальное ограничение составляет 500 пакетных файлов на один ресурс, если срок действия не установлен. Установив значение для срока действия, количество пакетных файлов на ресурс увеличивается до 10 000 файлов на ресурс.
Выходные данные:
{
"id": "file-655111ec9cfc44489d9af078f08116ef",
"bytes": 176064,
"created_at": 1743391067,
"filename": "test.jsonl",
"object": "file",
"purpose": "batch",
"status": "processed",
"expires_at": 1744600667,
"status_details": null
}
File expiration: 2025-04-13 23:17:47
Создание пакетного задания
После успешной отправки файла можно отправить файл для пакетной обработки.
# Submit a batch job with the file
batch_response = client.batches.create(
input_file_id=file_id,
endpoint="/chat/completions",
completion_window="24h",
extra_body={"output_expires_after":{"seconds": 1209600, "anchor": "created_at"}} # Optional you can set to a number between 1209600-2592000. This is equivalent to 14-30 days
)
# Save batch ID for later use
batch_id = batch_response.id
print(batch_response.model_dump_json(indent=2))
Максимальное ограничение на 500 файлов по умолчанию для каждого ресурса также распространяется на выходные файлы. Здесь вы можете раскомментировать эту строку, чтобы добавить extra_body={"output_expires_after":{"seconds": 1209600, "anchor": "created_at"}}
, и ваши выходные файлы истекали через 14 дней. Установив значение для срока действия, количество пакетных файлов на ресурс увеличивается до 10 000 файлов на ресурс.
Замечание
В настоящее время окно завершения должно быть установлено на 24h
. Если вы установите любое значение, кроме 24h
, ваша задача будет провалена. Задания, выполняемые дольше 24 часов, будут продолжать выполняться до отмены.
Выходные данные:
{
"id": "batch_6caaf24d-54a5-46be-b1b7-518884fcbdde",
"completion_window": "24h",
"created_at": 1722476583,
"endpoint": null,
"input_file_id": "file-655111ec9cfc44489d9af078f08116ef",
"object": "batch",
"status": "validating",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"error_file_id": null,
"errors": null,
"expired_at": null,
"expires_at": 1722562983,
"failed_at": null,
"finalizing_at": null,
"in_progress_at": null,
"metadata": null,
"output_file_id": null,
"request_counts": {
"completed": 0,
"failed": 0,
"total": 0
}
}
Если ваши пакеты заданий настолько велики, что вы достигаете предела количества токенов в очереди даже после максимального использования квоты вашего развертывания, некоторые регионы теперь поддерживают новую функцию быстрого отказа, которая позволяет поставить в очередь несколько пакетных заданий с экспоненциальной задержкой, чтобы после завершения одного большого задания следующее автоматически запускалось. Чтобы узнать больше о том, какие регионы поддерживают эту функцию и как адаптировать ваш код для использования её возможностей, смотрите очередь коллективных задач.
Отслеживание хода выполнения пакетного задания
После успешного создания пакетного задания можно отслеживать ход выполнения в Студии или программно. При проверке прогресса пакетной обработки мы рекомендуем ждать не менее 60 секунд между каждым запросом статуса.
import time
import datetime
status = "validating"
while status not in ("completed", "failed", "canceled"):
time.sleep(60)
batch_response = client.batches.retrieve(batch_id)
status = batch_response.status
print(f"{datetime.datetime.now()} Batch Id: {batch_id}, Status: {status}")
if batch_response.status == "failed":
for error in batch_response.errors.data:
print(f"Error code {error.code} Message {error.message}")
Выходные данные:
2024-07-31 21:48:32.556488 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: validating
2024-07-31 21:49:39.221560 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:50:53.383138 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:52:07.274570 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:53:21.149501 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:54:34.572508 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:55:35.304713 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:56:36.531816 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:57:37.414105 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: completed
Возможны следующие значения состояния:
Статус | Описание |
---|---|
validating |
Входной файл проверяется до начала пакетной обработки. |
failed |
Входной файл не прошёл процесс проверки. |
in_progress |
Входной файл был успешно проверен и пакет запущен в данный момент. |
finalizing |
Процесс завершился, и результаты подготавливаются. |
completed |
Пакет завершен, и результаты готовы. |
expired |
Пакет не удалось завершить в течение 24-часового периода. |
cancelling |
Пакет обрабатывается cancelled (Это может занять до 10 минут, чтобы вступить в силу.) |
cancelled |
Пакет был cancelled . |
Чтобы проверить сведения о состоянии задания, можно выполнить следующее:
print(batch_response.model_dump_json(indent=2))
Выходные данные:
{
"id": "batch_6caaf24d-54a5-46be-b1b7-518884fcbdde",
"completion_window": "24h",
"created_at": 1722476583,
"endpoint": null,
"input_file_id": "file-9f3a81d899b4442f98b640e4bc3535dd",
"object": "batch",
"status": "completed",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1722477429,
"error_file_id": "file-c795ae52-3ba7-417d-86ec-07eebca57d0b",
"errors": null,
"expired_at": null,
"expires_at": 1722562983,
"failed_at": null,
"finalizing_at": 1722477177,
"in_progress_at": null,
"metadata": null,
"output_file_id": "file-3304e310-3b39-4e34-9f1c-e1c1504b2b2a",
"request_counts": {
"completed": 3,
"failed": 0,
"total": 3
}
}
Обратите внимание, что есть как error_file_id
, так и отдельный output_file_id
.
error_file_id
Используйте эту возможность для отладки любых проблем, возникающих при выполнении пакетного задания.
Получение выходного файла пакетного задания
import json
output_file_id = batch_response.output_file_id
if not output_file_id:
output_file_id = batch_response.error_file_id
if output_file_id:
file_response = client.files.content(output_file_id)
raw_responses = file_response.text.strip().split('\n')
for raw_response in raw_responses:
json_response = json.loads(raw_response)
formatted_json = json.dumps(json_response, indent=2)
print(formatted_json)
Выходные данные:
Для краткости мы включаем только один ответ на завершение чата. Если вы выполните действия, описанные в этой статье, у вас должно быть три ответа, аналогичные приведенному ниже:
{
"custom_id": "task-0",
"response": {
"body": {
"choices": [
{
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
},
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Microsoft was founded on April 4, 1975, by Bill Gates and Paul Allen in Albuquerque, New Mexico.",
"role": "assistant"
}
}
],
"created": 1722477079,
"id": "chatcmpl-9rFGJ9dh08Tw9WRKqaEHwrkqRa4DJ",
"model": "gpt-4o-2024-05-13",
"object": "chat.completion",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"jailbreak": {
"filtered": false,
"detected": false
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"system_fingerprint": "fp_a9bfe9d51d",
"usage": {
"completion_tokens": 24,
"prompt_tokens": 27,
"total_tokens": 51
}
},
"request_id": "660b7424-b648-4b67-addc-862ba067d442",
"status_code": 200
},
"error": null
}
Дополнительные пакетные команды
Отмена пакета
Отменяет выполняющееся пакетное задание. Пакет будет находиться в состоянии cancelling
до 10 минут, прежде чем перейти в cancelled
, где в выходном файле будут доступны частичные результаты (если таковые имеются).
client.batches.cancel("batch_abc123") # set to your batch_id for the job you want to cancel
Список партии
Вывод списка пакетных заданий для определенного ресурса Azure OpenAI.
client.batches.list()
Методы перечисления в библиотеке Python разбиены на страницы.
Чтобы перечислить все задания:
all_jobs = []
# Automatically fetches more pages as needed.
for job in client.batches.list(
limit=20,
):
# Do something with job here
all_jobs.append(job)
print(all_jobs)
Пакет списка (предварительная версия)
Используйте REST API для перечисления всех пакетных заданий с дополнительными параметрами сортировки и фильтрации.
В приведенных ниже примерах мы предоставляем generate_time_filter
функцию, чтобы упростить создание фильтра. Если вы не хотите использовать эту функцию, формат строки фильтра будет выглядеть следующим created_at gt 1728860560 and status eq 'Completed'
образом.
import requests
import json
from datetime import datetime, timedelta
from azure.identity import DefaultAzureCredential
token_credential = DefaultAzureCredential()
token = token_credential.get_token('https://cognitiveservices.azure.com/.default')
endpoint = "https://{YOUR_RESOURCE_NAME}.openai.azure.com/"
api_version = "2025-03-01-preview"
url = f"{endpoint}openai/batches"
order = "created_at asc"
time_filter = lambda: generate_time_filter("past 8 hours")
# Additional filter examples:
#time_filter = lambda: generate_time_filter("past 1 day")
#time_filter = lambda: generate_time_filter("past 3 days", status="Completed")
def generate_time_filter(time_range, status=None):
now = datetime.now()
if 'day' in time_range:
days = int(time_range.split()[1])
start_time = now - timedelta(days=days)
elif 'hour' in time_range:
hours = int(time_range.split()[1])
start_time = now - timedelta(hours=hours)
else:
raise ValueError("Invalid time range format. Use 'past X day(s)' or 'past X hour(s)'")
start_timestamp = int(start_time.timestamp())
filter_string = f"created_at gt {start_timestamp}"
if status:
filter_string += f" and status eq '{status}'"
return filter_string
filter = time_filter()
headers = {'Authorization': 'Bearer ' + token.token}
params = {
"api-version": api_version,
"$filter": filter,
"$orderby": order
}
response = requests.get(url, headers=headers, params=params)
json_data = response.json()
if response.status_code == 200:
print(json.dumps(json_data, indent=2))
else:
print(f"Request failed with status code: {response.status_code}")
print(response.text)
Выходные данные:
{
"data": [
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1729011896,
"completion_window": "24h",
"created_at": 1729011128,
"error_file_id": "file-472c0626-4561-4327-9e4e-f41afbfb30e6",
"expired_at": null,
"expires_at": 1729097528,
"failed_at": null,
"finalizing_at": 1729011805,
"id": "batch_4ddc7b60-19a9-419b-8b93-b9a3274b33b5",
"in_progress_at": 1729011493,
"input_file_id": "file-f89384af0082485da43cb26b49dc25ce",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": "file-62bebde8-e767-4cd3-a0a1-28b214dc8974",
"request_counts": {
"total": 3,
"completed": 2,
"failed": 1
},
"status": "completed",
"endpoint": "/chat/completions"
},
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1729016366,
"completion_window": "24h",
"created_at": 1729015829,
"error_file_id": "file-85ae1971-9957-4511-9eb4-4cc9f708b904",
"expired_at": null,
"expires_at": 1729102229,
"failed_at": null,
"finalizing_at": 1729016272,
"id": "batch_6287485f-50fc-4efa-bcc5-b86690037f43",
"in_progress_at": 1729016126,
"input_file_id": "file-686746fcb6bc47f495250191ffa8a28e",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": "file-04399828-ae0b-4825-9b49-8976778918cb",
"request_counts": {
"total": 3,
"completed": 2,
"failed": 1
},
"status": "completed",
"endpoint": "/chat/completions"
}
],
"first_id": "batch_4ddc7b60-19a9-419b-8b93-b9a3274b33b5",
"has_more": false,
"last_id": "batch_6287485f-50fc-4efa-bcc5-b86690037f43"
}
Постановка пакетных заданий в очередь
Если ваши пакетные задания настолько велики, что вы достигаете предела количества поставленных в очередь токенов, даже при максимальном использовании квоты вашего развертывания, некоторые регионы теперь поддерживают новую функцию быстрого отказа, которая позволяет ставить в очередь несколько пакетных заданий с экспоненциальной задержкой. Как только одна большая пакетная задача завершится и ваша квота на распределенные токены снова станет доступной, можно автоматически создать и запустить следующую пакетную задачу.
Старое поведение:
- Задания с большим пакетом уже выполняются и используют все доступные токены для вашего развертывания.
- Новая пакетная задача отправлена.
- Новая пакетная задача переходит в фазу проверки, которая может длиться до нескольких минут.
- Количество токенов для новой задачи проверяется на соответствие доступной квоте.
- Новая пакетная задача завершилась с ошибкой: превышено допустимое количество токенов.
Новое поведение:
- Исполняется/ются крупные задачи пакета, которые уже используют все доступные токены для вашего развертывания.
- Новое пакетное задание отправлено.
- Приблизительное количество токенов нового задания непосредственно сравнивается с текущей доступной квотой пакетных заданий, что позволяет быстрее и легче программно обрабатывать повторные попытки.
Поддержка регионов
Следующие регионы поддерживают новое поведение быстрого отказа:
- австралиявосток
- Истус
- Германия-запад-центр
- северная италия
- northcentralus
- Польша Центральная
- SwedenCentral
- Швейцария север
- eastus2
- Вестус
Код ниже демонстрирует основные механизмы обработки поведения быстрого отказа для обеспечения автоматизации повторных попыток и постановки задач в очередь с экспоненциальным увеличением времени задержки.
В зависимости от размера ваших пакетных заданий, вам может понадобиться значительно увеличить max_retries
или внести дополнительные изменения в этот пример.
import time
from openai import BadRequestError
max_retries = 10
retries = 0
initial_delay = 5
delay = initial_delay
while True:
try:
batch_response = client.batches.create(
input_file_id=file_id,
endpoint="/chat/completions",
completion_window="24h",
)
# Save batch ID for later use
batch_id = batch_response.id
print(f"✅ Batch created successfully after {retries} retries")
print(batch_response.model_dump_json(indent=2))
break
except BadRequestError as e:
error_message = str(e)
# Check if it's a token limit error
if 'token_limit_exceeded' in error_message:
retries += 1
if retries >= max_retries:
print(f"❌ Maximum retries ({max_retries}) reached. Giving up.")
raise
print(f"⏳ Token limit exceeded. Waiting {delay} seconds before retry {retries}/{max_retries}...")
time.sleep(delay)
# Exponential backoff - increase delay for next attempt
delay *= 2
else:
# If it's a different error, raise it immediately
print(f"❌ Encountered non-token limit error: {error_message}")
raise
Выходные данные:
⏳ Token limit exceeded. Waiting 5 seconds before retry 1/10...
⏳ Token limit exceeded. Waiting 10 seconds before retry 2/10...
⏳ Token limit exceeded. Waiting 20 seconds before retry 3/10...
⏳ Token limit exceeded. Waiting 40 seconds before retry 4/10...
⏳ Token limit exceeded. Waiting 80 seconds before retry 5/10...
⏳ Token limit exceeded. Waiting 160 seconds before retry 6/10...
⏳ Token limit exceeded. Waiting 320 seconds before retry 7/10...
✅ Batch created successfully after 7 retries
{
"id": "batch_1e1e7b9f-d4b4-41fa-bd2e-8d2ec50fb8cc",
"completion_window": "24h",
"created_at": 1744402048,
"endpoint": "/chat/completions",
"input_file_id": "file-e2ba4ccaa4a348e0976c6fe3c018ea92",
"object": "batch",
"status": "validating",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"error_file_id": "",
"errors": null,
"expired_at": null,
"expires_at": 1744488444,
"failed_at": null,
"finalizing_at": null,
"in_progress_at": null,
"metadata": null,
"output_file_id": "",
"request_counts": {
"completed": 0,
"failed": 0,
"total": 0
}
}
Предпосылки
- Подписка Azure — создайте бесплатную учетную запись.
- Ресурс Azure OpenAI с моделью типа развертывания
Global-Batch
. Вы можете ознакомиться с руководством по созданию ресурсов и развертыванию моделей, чтобы помочь в этом процессе.
Подготовка пакетного файла
Подобно тонкой настройке, глобальная пакетная обработка использует файлы в формате JSON lines (.jsonl
). Ниже приведены некоторые примеры файлов с различными типами поддерживаемого содержимого:
Формат входных данных
- Стандартные входные данные
- Изображение в кодировке Base64
- URL-адрес изображения
- Структурированные выходные данные
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
Требуется custom_id
, чтобы определить, какой отдельный пакетный запрос соответствует заданному ответу. Ответы не будут возвращены в том же порядке, что и порядок, определённый в .jsonl
пакетном файле.
model
Атрибут должен быть установлен таким образом, чтобы совпадать с именем глобального развертывания Batch, которое вы хотите использовать для получения ответов на запросы вывода.
Это важно
Атрибут model
должен быть установлен в соответствии с именем развертывания Global Batch, на которое вы хотите направить запросы для получения результатов. Одно и то же имя развертывания глобальной пакетной модели должно присутствовать в каждой строке пакетного файла. Если вы хотите использовать другое развертывание, необходимо сделать это в отдельном пакетном файле или задании.
Для оптимальной производительности рекомендуется отправлять большие файлы для пакетной обработки, а не большое количество небольших файлов с несколькими строками в каждом файле.
Создание входного файла
В этой статье мы создадим файл с именем test.jsonl
и скопируйм содержимое из стандартного блока входного кода выше в файл. Вам потребуется изменить и добавить имя глобального пакетного развертывания в каждую строку файла.
Отправка пакетного файла
После подготовки входного файла сначала необходимо отправить файл, чтобы затем запустить пакетное задание. Отправка файлов можно выполнять как программным способом, так и с помощью портала Azure AI Foundry. В этом примере демонстрируется отправка файла непосредственно в ресурс Azure OpenAI. Кроме того, можно настроить хранилище BLOB-объектов Azure для пакетной службы Azure OpenAI.
Это важно
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files?api-version=2025-03-01-preview \
-H "Content-Type: multipart/form-data" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-F "purpose=batch" \
-F "file=@C:\\batch\\test.jsonl;type=application/json" \
-F "expires_after.seconds=1209600" \
-F "expires_after.anchor=created_at"
Приведенный выше код предполагает определенный путь к файлу test.jsonl. Настройте этот путь к файлу по мере необходимости для локальной системы.
Добавив необязательные параметры "expires_after.seconds=1209600"
и "expires_after.anchor=created_at"
, вы установите срок действия загружаемого файла через 14 дней. Максимальное ограничение составляет 500 пакетных файлов на один ресурс, если срок действия не установлен. Установив значение для срока действия, количество пакетных файлов на ресурс увеличивается до 10 000 файлов на ресурс. Вы можете установить значение в диапазоне от 1209600 до 2592000. Это эквивалентно 14-30 дням.
Выходные данные:
{
"status": "processed",
"bytes": 817,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1743398147,
"object": "file"
}
Отслеживание состояния отправки файлов
В зависимости от размера файла отправки может потребоваться некоторое время, прежде чем он будет полностью отправлен и обработан. Чтобы проверить состояние отправки файла, выполните следующие действия:
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files/{file-id}?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Выходные данные:
{
"status": "processed",
"bytes": 686,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1721408291,
"object": "file"
}
Создание пакетного задания
После успешной отправки файла можно отправить файл для пакетной обработки.
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file-abc123",
"endpoint": "/chat/completions",
"completion_window": "24h",
"output_expires_after": {
"seconds": 1209600
},
"anchor": "created_at"
}'
Максимальное ограничение на 500 файлов по умолчанию для каждого ресурса также распространяется на выходные файлы. Здесь вы можете при необходимости добавить "output_expires_after":{"seconds": 1209600},
и "anchor": "created_at"
, чтобы ваши выходные файлы стали недействительными через 14 дней. Установив значение для срока действия, количество пакетных файлов на ресурс увеличивается до 10 000 файлов на ресурс.
Замечание
В настоящее время окно завершения должно быть установлено на 24h
. Если вы установите любое значение, кроме 24h
, ваша задача будет провалена. Задания, выполняемые дольше 24 часов, будут продолжать выполняться до отмены.
Выходные данные:
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"completion_window": "24h",
"created_at": "2024-07-19T17:13:57.2491382+00:00",
"error_file_id": null,
"expired_at": null,
"expires_at": "2024-07-20T17:13:57.1918498+00:00",
"failed_at": null,
"finalizing_at": null,
"id": "batch_fe3f047a-de39-4068-9008-346795bfc1db",
"in_progress_at": null,
"input_file_id": "file-21006e70789246658b86a1fc205899a4",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": null,
"request_counts": {
"total": null,
"completed": null,
"failed": null
},
"status": "Validating"
}
Отслеживание хода выполнения пакетного задания
После успешного создания пакетного задания можно отслеживать ход выполнения в Студии или программно. При проверке прогресса пакетной обработки мы рекомендуем ждать не менее 60 секунд между каждым запросом статуса.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches/{batch_id}?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Выходные данные:
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"completion_window": "24h",
"created_at": "2024-07-19T17:33:29.1619286+00:00",
"error_file_id": null,
"expired_at": null,
"expires_at": "2024-07-20T17:33:29.1578141+00:00",
"failed_at": null,
"finalizing_at": null,
"id": "batch_e0a7ee28-82c4-46a2-a3a0-c13b3c4e390b",
"in_progress_at": null,
"input_file_id": "file-c55ec4e859d54738a313d767718a2ac5",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": null,
"request_counts": {
"total": null,
"completed": null,
"failed": null
},
"status": "Validating"
}
Возможны следующие значения состояния:
Статус | Описание |
---|---|
validating |
Входной файл проверяется до начала пакетной обработки. |
failed |
Входной файл не прошёл процесс проверки. |
in_progress |
Входной файл был успешно проверен и пакет запущен в данный момент. |
finalizing |
Процесс завершился, и результаты подготавливаются. |
completed |
Пакет завершен, и результаты готовы. |
expired |
Пакет не удалось завершить в течение 24-часового периода. |
cancelling |
Пакет обрабатывается cancelled (это может занять до 10 минут, чтобы вступить в действие.) |
cancelled |
Пакет был cancelled . |
Получение выходного файла пакетного задания
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files/{output_file_id}/content?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" > batch_output.jsonl
Дополнительные пакетные команды
Отмена пакета
Отменяет выполняющееся пакетное задание. Пакет будет находиться в состоянии cancelling
до 10 минут, прежде чем перейти в cancelled
, где в выходном файле будут доступны частичные результаты (если таковые имеются).
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches/{batch_id}/cancel?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Список партии
Перечислить существующие пакетные задания для заданного ресурса Azure OpenAI.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Вызов API списка разбит на страницы. Ответ содержит логическое значение has_more
, указывающее, есть ли больше результатов для итерации.
Пакет списка (предварительная версия)
Используйте REST API для перечисления всех пакетных заданий с дополнительными параметрами сортировки и фильтрации.
curl "YOUR_RESOURCE_NAME.openai.azure.com/batches?api-version=2025-03-01-preview&$filter=created_at%20gt%201728773533%20and%20created_at%20lt%201729032733%20and%20status%20eq%20'Completed'&$orderby=created_at%20asc" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Чтобы избежать ошибки, пробелы заменяются на URL rejected: Malformed input to a URL function
.
Лимиты на партии
Название ограничения | Значение ограничения |
---|---|
Максимальное количество файлов на ресурс | 500 |
Максимальный размер входного файла | 200 МБ |
Максимальное количество запросов на файл | 100 000 |
Квота на пакетную обработку
В таблице показан предел квоты партии. Значения квот для глобального пакета представлены в виде поставленных в очередь токенов. При отправке файла для пакетной обработки количество маркеров, присутствующих в файле, учитывается. До тех пор, пока пакетное задание не достигнет терминального состояния, эти токены будут учитываться против вашего общего лимита на очередь токенов.
Глобальная партия
Модель | Соглашение Enterprise | По умолчанию | Ежемесячные подписки на основе кредитной карты | Подписки MSDN | Azure для учащихся, бесплатные пробные версии |
---|---|---|---|---|---|
gpt-4.1 |
5 B | 200 М | 50 М | 90 K | Не применимо |
gpt-4.1 mini |
15B | 1 млрд | 50 млн | 90k | Не применимо |
gpt-4.1-nano |
15 B | 1 B | 50 М | 90 K | Не применимо |
gpt-4o |
5 B | 200 М | 50 М | 90 K | Не применимо |
gpt-4o-mini |
15 B | 1 B | 50 М | 90 K | Не применимо |
gpt-4-turbo |
300 М | 80 М | 40 М | 90 K | Не применимо |
gpt-4 |
150 М | 30 М | 5 М | 100 К | Не применимо |
gpt-35-turbo |
10 B | 1 B | 100 М | 2 млн | 50 К |
o3-mini |
15 B | 1 B | 50 М | 90 K | Не применимо |
o4-mini |
15 B | 1 B | 50 М | 90 K | Не применимо |
B = миллиард | M = миллион | K = тысяча
Пакет зоны данных
Модель | Соглашение Enterprise | По умолчанию | Ежемесячные подписки на основе кредитной карты | Подписки MSDN | Azure для учащихся, бесплатные пробные версии |
---|---|---|---|---|---|
gpt-4.1 |
500 М | 30 М | 30 М | 90 K | Не применимо |
gpt-4.1-mini |
1.5 B | 100 М | 50 М | 90 K | Не применимо |
gpt-4o |
500 М | 30 М | 30 М | 90 K | Не применимо |
gpt-4o-mini |
1.5 B | 100 М | 50 М | 90 K | Не применимо |
o3-mini |
1.5 B | 100 М | 50 М | 90 K | Не применимо |
Пакетный объект
Недвижимость | Тип | Определение |
---|---|---|
id |
струна | |
object |
струна | batch |
endpoint |
струна | Конечная точка API, используемая пакетом |
errors |
объект | |
input_file_id |
струна | Идентификатор входного файла для пакета |
completion_window |
струна | Интервал времени, в течение которого должен обрабатываться пакет |
status |
струна | Текущее состояние пакета. Возможные значения: validating , failed , in_progress finalizing completed expired , . cancelling cancelled |
output_file_id |
струна | Идентификатор файла, содержащего выходные данные успешно выполненных запросов. |
error_file_id |
струна | Идентификатор файла, содержащего выходные данные запросов с ошибками. |
created_at |
целое число | Метка времени при создании пакета (в эпохах UNIX). |
in_progress_at |
целое число | Метка времени при запуске этого пакета (в эпохах UNIX). |
expires_at |
целое число | Метка времени, когда эта партия истечет (в эпохах Unix). |
finalizing_at |
целое число | Отметка времени, когда этот пакет начал завершаться (в формате эпох Unix). |
completed_at |
целое число | Отметка времени, когда этот пакет начал завершаться (в формате эпох Unix). |
failed_at |
целое число | Метка времени, когда этот пакет завершился сбоем (в эпохах UNIX) |
expired_at |
целое число | Отметка времени, когда срок действия этой партии истек (в формате Unix Epoch). |
cancelling_at |
целое число | Метка времени при запуске cancelling этого пакета (в эпохах UNIX). |
cancelled_at |
целое число | Отметка времени, когда этот пакет был cancelled (в формате эпохи Unix). |
request_counts |
объект | Структура объекта:total
целое число Общее количество запросов в пакете. completed
целое число Число запросов в пакете, успешно завершенных. failed
целое число Количество запросов в пакете, завершившемся сбоем. |
metadata |
карта | Набор пар ключ-значение, которые можно прикрепить к пакету. Это свойство может быть полезно для хранения дополнительных сведений о пакете в структурированном формате. |
Часто задаваемые вопросы (FAQ)
Можно ли использовать изображения с пакетным API?
Эта возможность ограничена определенными многомодальными моделями. В настоящее время только GPT-4o поддерживает изображения в составе пакетных запросов. Изображения можно предоставлять как входные данные с помощью URL-адреса изображения или представления изображения в кодировке Base64. Изображения для пакетной обработки в настоящее время не поддерживаются с GPT-4 Turbo.
Можно ли использовать пакетный API с точно настроенными моделями?
В настоящее время это не поддерживается.
Можно ли использовать пакетный API для внедрения моделей?
В настоящее время это не поддерживается.
Работает ли фильтрация содержимого при глобальном пакетном развертывании?
Да. Аналогично другим типам развертывания, можно создавать фильтры содержимого и связывать их с типом глобального пакетного развертывания.
Можно ли запросить дополнительную квоту?
Да, на странице квоты на портале Azure AI Foundry. Выделение квот по умолчанию можно найти в статье о квоте и ограничениях.
Что произойдет, если API не завершает мой запрос в течение 24 часов?
Мы стремимся обрабатывать эти запросы в течение 24 часов; Срок действия заданий, которые занимают больше времени, не истекают. Задание можно отменить в любое время. При отмене задания все оставшиеся работы отменяются и возвращаются все уже завершенные работы. С вас будет взиматься плата за любую выполненную работу.
Сколько запросов я могу поставить в очередь, используя пакетную обработку?
В нашем сервисе нет жесткого ограничения на количество запросов, которые вы можете объединять в один пакет. Однако это будет зависеть от вашей квоты токенов в очереди. Квота токенов в очереди включает максимальное количество входных токенов, которые можно разместить одновременно.
После завершения выполнения вашего пакетного запроса лимит скорости выполнения сбрасывается, так как токены вашего ввода очищаются. Ограничение зависит от количества глобальных запросов в очереди. Если очередь Batch API быстро обрабатывает ваши пакеты, то лимит скорости обработки пакетов сбрасывается быстрее.
Устранение неполадок
Задача считается успешной, когда status
Completed
. Успешные задания по-прежнему будут генерировать error_file_id, но он будет связан с пустым файлом размером ноль байт.
При сбое задания вы найдете сведения о сбое в свойстве errors
:
"value": [
{
"id": "batch_80f5ad38-e05b-49bf-b2d6-a799db8466da",
"completion_window": "24h",
"created_at": 1725419394,
"endpoint": "/chat/completions",
"input_file_id": "file-c2d9a7881c8a466285e6f76f6321a681",
"object": "batch",
"status": "failed",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1725419955,
"error_file_id": "file-3b0f9beb-11ce-4796-bc31-d54e675f28fb",
"errors": {
"object": “list”,
"data": [
{
"code": "empty_file",
"message": "The input file is empty. Please ensure that the batch contains at least one request."
}
]
},
"expired_at": null,
"expires_at": 1725505794,
"failed_at": null,
"finalizing_at": 1725419710,
"in_progress_at": 1725419572,
"metadata": null,
"output_file_id": "file-ef12af98-dbbc-4d27-8309-2df57feed572",
"request_counts": {
"total": 10,
"completed": null,
"failed": null
},
}
Коды ошибок
Код ошибки | Определение |
---|---|
invalid_json_line |
Строка (или несколько) в вашем входном файле не может быть разобрана как допустимый JSON. Пожалуйста, убедитесь, что в тексте нет опечаток, правильно расставлены открывающие и закрывающие скобки, а также кавычки в соответствии со стандартом JSON, и повторно отправьте запрос. |
too_many_tasks |
Число запросов во входном файле превышает максимально допустимое значение 100 000. Убедитесь, что общий объем запросов составляет менее 100 000 и повторно отправьте задание. |
url_mismatch |
Строка в входном файле имеет URL-адрес, который не соответствует остальным строкам, или URL-адрес, указанный в входном файле, не соответствует ожидаемому URL-адресу конечной точки. Убедитесь, что все URL-адреса запросов одинаковы, и что они соответствуют URL-адресу конечной точки, связанному с развертыванием Azure OpenAI. |
model_not_found |
Имя развертывания модели Azure OpenAI, указанное в свойстве model входного файла, не найдено.Убедитесь, что это имя указывает на допустимое развертывание модели Azure OpenAI. |
duplicate_custom_id |
Пользовательский идентификатор для этого запроса является дубликатом пользовательского идентификатора в другом запросе. |
empty_batch |
Проверьте входной файл, чтобы убедиться, что параметр пользовательского идентификатора уникален для каждого запроса в пакете. |
model_mismatch |
Имя развертывания модели Azure OpenAI, указанное в model свойстве этого запроса в входном файле, не соответствует остальной части файла.Убедитесь, что все запросы в пакете указывают на одно и то же развертывание модели Azure OpenAI в Azure AI Foundry Models в свойстве model запроса. |
invalid_request |
Схема входной линии недействительна, или недействителен SKU развертывания. Пожалуйста, убедитесь, что свойства запроса в вашем входном файле соответствуют ожидаемым свойствам ввода, и что SKU развертывания Azure OpenAI равно globalbatch для пакетных API-запросов. |
input_modified |
Входные данные BLOB были изменены после отправки пакетной задачи. |
input_no_permissions |
Невозможно получить доступ к входным блобам. Проверьте разрешения и сетевой доступ между учетной записью Azure OpenAI и учетной записью хранения Azure. |
Известные проблемы
Ресурсы, развернутые с помощью Azure CLI, не будут работать из коробки с глобальной партией Azure OpenAI. Это связано с проблемой, из-за которой ресурсы, развернутые с помощью этого метода, имеют поддомены конечных точек, которые не соответствуют шаблону
https://your-resource-name.openai.azure.com
. Решение этой проблемы заключается в развертывании нового ресурса Azure OpenAI с помощью одного из других распространенных методов развертывания, которые будут правильно обрабатывать настройку поддомена в процессе развертывания.Файлы в кодировке
jsonl
UTF-8-BOM не поддерживаются. Файлы строк JSON должны быть закодированы с помощью UTF-8. Использование файлов в кодировке Byte-Order-Mark (BOM) официально не поддерживается спецификацией JSON RFC, и Azure OpenAI в настоящее время будет рассматривать файлы в кодировке BOM как недопустимые. Файл, закодированный в формате UTF-8-BOM, в настоящее время возвращает общее сообщение об ошибке: "Ошибка проверки: из входного файла не удалось извлечь допустимое имя развертывания модели. Убедитесь, что каждая строка в входном файле имеет допустимое имя развертывания, указанное в поле "модель", и что имя развертывания согласовано во всех строках".