Пакетная обработка сообщений (бета)
API пакетной обработки сообщений - это мощный и экономичный способ асинхронной обработки больших объемов запросов Messages. Этот подход хорошо подходит для задач, не требующих немедленного ответа, снижая затраты на 50% при увеличении пропускной способности.
API пакетной обработки сообщений находится в бета-версии
Мы рады сообщить, что API пакетной обработки теперь находится в открытой бета-версии! Для доступа к этой функции вам нужно включить заголовок anthropic-beta: message-batches-2024-09-24
в ваши API-запросы или использовать client.beta.messages.batches
в вызовах SDK.
Мы будем улучшать эту открытую бета-версию в течение следующих недель, поэтому мы ценим ваши отзывы. Пожалуйста, делитесь своими идеями и предложениями, используя эту форму.
Вы можете изучить справочник API напрямую в дополнение к этому руководству.
Как работает API пакетной обработки сообщений
Когда вы отправляете запрос в API пакетной обработки сообщений:
- Система создает новый пакет сообщений с предоставленными запросами Messages.
- Затем пакет обрабатывается асинхронно, каждый запрос обрабатывается независимо.
- Вы можете опрашивать статус пакета и получать результаты после завершения обработки всех запросов.
Это особенно полезно для массовых операций, не требующих немедленных результатов, таких как:
- Масштабные оценки: Эффективная обработка тысяч тестовых случаев.
- Модерация контента: Асинхронный анализ больших объемов пользовательского контента.
- Анализ данных: Генерация выводов или сводок для больших наборов данных.
- Массовая генерация контента: Создание большого количества текста для различных целей (например, описания продуктов, краткие изложения статей).
Ограничения пакетов
- Пакет сообщений ограничен либо 10 000 запросами Message, либо размером 32 МБ, в зависимости от того, что будет достигнуто первым.
- Обработка пакета занимает до 24 часов, хотя может завершиться и раньше. Результаты вашего пакета не будут доступны до завершения обработки всего пакета. Пакеты истекают, если обработка не завершается в течение 24 часов.
- Результаты пакетов доступны в течение 29 дней после создания. После этого вы все еще можете просматривать пакет, но его результаты больше не будут доступны для загрузки.
- Пакеты привязаны к Рабочему пространству. Вы можете просматривать все пакеты и их результаты, созданные в рабочем пространстве, к которому принадлежит ваш API-ключ.
- Ограничения скорости применяются к HTTP-запросам API пакетов, а не к количеству запросов в пакете. Кроме того, мы можем замедлить обработку в зависимости от текущего спроса и объема ваших запросов. В этом случае вы можете увидеть больше запросов, истекающих через 24 часа.
- Из-за высокой пропускной способности и параллельной обработки пакеты могут немного превысить настроенный лимит расходов вашего рабочего пространства.
Поддерживаемые модели
API пакетной обработки сообщений в настоящее время поддерживает:
- Claude 3.5 Sonnet (
claude-3-5-sonnet-20240620
иclaude-3-5-sonnet-20241022
) - Claude 3.5 Haiku (
claude-3-5-haiku-20241022
) - Claude 3 Haiku (
claude-3-haiku-20240307
) - Claude 3 Opus (
claude-3-opus-20240229
)
Что можно обрабатывать пакетно
Любой запрос, который вы можете сделать к API Messages, может быть включен в пакет. Это включает:
- Зрение
- Использование инструментов
- Системные сообщения
- Многоходовые разговоры
- Любые бета-функции
Поскольку каждый запрос в пакете обрабатывается независимо, вы можете смешивать различные типы запросов в одном пакете.
Ценообразование
API пакетной обработки предлагает значительную экономию средств. Все использование тарифицируется по 50% от стандартных цен API.
Модель | Пакетный ввод | Пакетный вывод |
---|---|---|
Claude 3.5 Sonnet | $1.50 / MTok | $7.50 / MTok |
Claude 3 Opus | $7.50 / MTok | $37.50 / MTok |
Claude 3 Haiku | $0.125 / MTok | $0.625 / MTok |
Как использовать API пакетной обработки сообщений
Подготовка и создание пакета
Пакет сообщений состоит из списка запросов на создание сообщения. Форма отдельного запроса включает:
- Уникальный
custom_id
для идентификации запроса Messages - Объект
params
со стандартными параметрами API Messages
Вы можете создать пакет, передав этот список в параметр requests
:
В этом примере два отдельных запроса объединены в пакет для асинхронной обработки. Каждый запрос имеет уникальный custom_id
и содержит стандартные параметры, которые вы бы использовали для вызова API Messages.
Тестируйте ваши пакетные запросы с помощью API Messages
Валидация объекта params
для каждого запроса сообщения выполняется асинхронно, и ошибки валидации возвращаются после завершения обработки всего пакета. Вы можете убедиться, что правильно формируете ваш ввод, сначала проверив форму запроса с помощью API Messages.
Когда пакет впервые создается, ответ будет иметь статус обработки in_progress
.
Отслеживание вашего пакета
Поле processing_status
пакета сообщений указывает на этап обработки пакета. Он начинается как in_progress
, затем обновляется до ended
, когда все запросы в пакете завершили обработку и результаты готовы. Вы можете отслеживать состояние вашего пакета, посетив Консоль или используя конечную точку получения:
Вы можете опрашивать эту конечную точку, чтобы узнать, когда обработка завершилась.
Получение результатов пакета
После завершения обработки пакета каждый запрос Messages в пакете будет иметь результат. Существует 4 типа результатов:
Тип результата | Описание |
---|---|
succeeded | Запрос успешно выполнен. Включает результат сообщения. |
errored | При выполнении запроса произошла ошибка, и сообщение не было создано. Возможные ошибки включают недействительные запросы и внутренние ошибки сервера. С вас не будет взиматься плата за эти запросы. |
canceled | Пользователь отменил пакет до того, как этот запрос мог быть отправлен модели. С вас не будет взиматься плата за эти запросы. |
expired | Пакет достиг своего 24-часового срока действия до того, как этот запрос мог быть отправлен модели. С вас не будет взиматься плата за эти запросы. |
Вы увидите обзор ваших результатов с помощью request_counts
пакета, который показывает, сколько запросов достигло каждого из этих четырех состояний.
Результаты пакета доступны для загрузки как в Консоли, так и по results_url
в пакете сообщений. Из-за потенциально большого размера результатов рекомендуется потоковая передача результатов, а не загружать их все сразу.
Результаты будут в формате .jsonl
, где каждая строка представляет собой действительный JSON-объект, представляющий результат одного запроса в пакете сообщений. Для каждого потокового результата вы можете выполнить различные действия в зависимости от его custom_id
и типа результата. Вот пример набора результатов:
Если ваш результат содержит ошибку, его result.error
будет установлен в нашу стандартную форму ошибки.
Результаты пакета могут не соответствовать порядку ввода
Результаты пакета могут быть возвращены в любом порядке и могут не соответствовать порядку запросов при создании пакета. В приведенном выше примере результат второго пакетного запроса возвращается перед первым. Чтобы правильно сопоставить результаты с соответствующими запросами, всегда используйте поле custom_id
.
Лучшие практики для эффективной пакетной обработки
Чтобы максимально эффективно использовать API пакетной обработки:
- Регулярно отслеживайте статус обработки пакета и реализуйте соответствующую логику повторных попыток для неудачных запросов.
- Используйте значимые значения
custom_id
для легкого сопоставления результатов с запросами, так как порядок не гарантируется. - Рассмотрите возможность разбиения очень больших наборов данных на несколько пакетов для лучшей управляемости.
- Выполните пробный запуск одной формы запроса с API Messages, чтобы избежать ошибок валидации.
Устранение распространенных проблем
При возникновении неожиданного поведения:
- Убедитесь, что общий размер пакетного запроса не превышает 32 МБ. Если размер запроса слишком большой, вы можете получить ошибку 413
request_too_large
. - Проверьте, что вы используете поддерживаемые модели для всех запросов в пакете.
- Убедитесь, что каждый запрос в пакете имеет уникальный
custom_id
. - Убедитесь, что прошло менее 29 дней с момента
created_at
пакета (не с моментаended_at
обработки). Если прошло более 29 дней, результаты больше не будут доступны для просмотра. - Подтвердите, что пакет не был отменен.
Обратите внимание, что сбой одного запроса в пакете не влияет на обработку других запросов.
Хранение и конфиденциальность пакетов
-
Изоляция рабочего пространства: Пакеты изолированы в рамках рабочего пространства, в котором они созданы. Доступ к ним могут получить только API-ключи, связанные с этим рабочим пространством, или пользователи с разрешением на просмотр пакетов рабочего пространства в Консоли.
-
Доступность результатов: Результаты пакетов доступны в течение 29 дней после создания пакета, что дает достаточно времени для получения и обработки.