Работа с Files и Batch
Загрузка построчных запросов, отправка пакета и получение результатов по элементам.
Совместимый интерфейс Files/Batch принимает входной JSONL для поддерживаемых эндпоинтов Responses, Chat Completions и embeddings. Каждый элемент проходит обычную маршрутизацию и расчёт шлюза; пакетный сервис самого поставщика не вызывается.
Подготовка входных данных
Используйте уникальные custom_id и одну операцию POST на строку. URL всех элементов должны соответствовать выбранному эндпоинту пакета. Пример work.jsonl:
{"custom_id":"case-001","method":"POST","url":"/v1/responses","body":{"model":"gpt-5.4","input":"Label this request: invoice copy."}}
{"custom_id":"case-002","method":"POST","url":"/v1/responses","body":{"model":"gpt-5.4","input":"Label this request: change delivery date."}}
Запрос: загрузка и создание
curl https://api.b2b-llm.com/v1/files \
-H "Authorization: Bearer $B2B_API_KEY" -F purpose=batch -F [email protected]
Используйте полученный ID файла:
curl https://api.b2b-llm.com/v1/batches \
-H "Authorization: Bearer $B2B_API_KEY" -H 'Content-Type: application/json' \
-d '{"input_file_id":"file-EXAMPLE","endpoint":"/v1/responses","completion_window":"24h","metadata":{"workflow":"support-triage"}}'
Ответ
{"id":"batch_EXAMPLE","object":"batch","status":"in_progress","input_file_id":"file-EXAMPLE","output_file_id":null,"error_file_id":null,"request_counts":{"total":2,"completed":0,"failed":0}}
Получение результатов и отмена
GET /v1/batches/BATCH_ID
GET /v1/batches?limit=20&after=BATCH_ID
POST /v1/batches/BATCH_ID/cancel
GET /v1/files/FILE_ID
GET /v1/files/FILE_ID/content
GET /v1/files?purpose=batch&order=desc&limit=100
DELETE /v1/files/FILE_ID
Скачайте готовые файлы результатов/ошибок и сопоставьте каждую строку JSONL по custom_id. Не полагайтесь на порядок входа. Отмена применяется к ещё не выполняющейся работе; уже запущенные элементы могут завершиться.
Ограничения и хранение
Пакет поддерживает до 50 000 элементов; стандартный предел загружаемого файла — 200 MiB, при этом у каждого элемента есть отдельный обычный предел тела запроса. Элементы не могут включать потоковый режим или вложенный async. completion_window равен 24h. Квоты хранения файлов и заданий действуют независимо от баланса компании. Используйте возвращённые данные срока действия и удаляйте ненужные файлы, на которые нет ссылок, поддерживаемой операцией.
Загрузка/создание требуют положительного баланса и допуска по расходам. Чтение файлов/заданий и управление ими проверяют пригодность ключа без требования положительных средств. Каждый взятый в работу элемент повторно проверяет допуск. Восстановление аренды с выполнением «как минимум один раз» не гарантирует ровно одно выполнение у поставщика. Расчёт применяет сохранённый пакетный коэффициент к фактической стоимости элемента; собственный async его не использует. Временные ключи Playground не могут создавать или читать долговременные ресурсы batch/files.
Images не является элементом Batch
Генерация и редактирование изображений компании исключены из этой очереди совместимости. Отдельная операция Images сохраняет сотрудника компании, согласованную цену и границу отправки без повторов. Старые элементы изображений могут завершиться с images_dedicated_api_required; изучите предыдущие действия до намеренного нового запроса пользователя. Пакетный коэффициент не является тарифом изображений.
Распознавание речи доступно только через специализированный API транскрибации, а не через эту очередь. Аудиопуть, запущенный через общую очередь, отклоняется с audio_dedicated_api_required; не ставьте его повторно в очередь как новый платный запрос.
Специализированные операции Video не принимаются этой общей очередью. Используйте JSON API Video с собственным Idempotency-Key и историей операций; попытка отправки Video через старый путь завершается с video_dedicated_api_required до обращения к поставщику. API Video.