Новая версия — старые проблемы. Зачем переходить с Nova 1?
Ты сидишь на Nova 1 уже полгода. Всё работает, промпты отлажены, клиенты довольны. Зачем что-то менять? Потому что Nova 2 — это не просто апдейт, а другая лига. Контекст в миллион токенов, Extended Thinking для сложных рассуждений, нативный web grounding. Если не переключишься сейчас, через месяц твой продукт будет выглядеть как Nokia 3310 на фоне iPhone 18.
Важно: По состоянию на 18.03.2026, Amazon полностью перешёл на Nova 2 как основную модель. Nova 1 остаётся в продакшене, но новые фичи вроде агентских функций будут доступны только на второй версии. Миграция — вопрос времени.
Что сломалось в API и как это починить
Самое болезненное — изменения в Converse API. Старый код InvokeModel сломается. Не полностью, но новые параметры Extended Thinking и увеличенный контекст требуют переписать вызовы.
Раньше ты делал так:
# УСТАРЕВШИЙ КОД для Nova 1 (НЕ ИСПОЛЬЗОВАТЬ)
import boto3
client = boto3.client('bedrock-runtime')
response = client.invoke_model(
modelId='amazon.nova-express-v1:0',
body=json.dumps({
'prompt': 'Твой промпт здесь',
'max_tokens': 2000,
'temperature': 0.7
})
)
Проблема в том, что этот подход не поддерживает стриминг, tool use и новые форматы сообщений. Converse API — единый интерфейс для всего.
1 Шаг первый: Переписываем вызовы на Converse API
Nova 2 требует использования converse или converse_stream методов. Вот как это выглядит сейчас:
# АКТУАЛЬНЫЙ КОД для Nova 2 (18.03.2026)
import boto3
from botocore.config import Config
# Конфиг с увеличенными таймаутами для длинных контекстов
config = Config(connect_timeout=30, read_timeout=120)
client = boto3.client('bedrock-runtime', config=config)
response = client.converse(
modelId='amazon.nova-2-ultra-v1:0', # Самая новая версия на 18.03.2026
messages=[{
'role': 'user',
'content': [{'text': 'Проанализируй этот документ...'}]
}],
inferenceConfig={
'maxTokens': 4000,
'temperature': 0.7,
'topP': 0.9
},
# ВКЛЮЧАЕМ Extended Thinking для сложных задач
additionalModelRequestFields={
'extendedThinking': {
'enabled': True,
'thinkingBudgetTokens': 8000 # Рекомендуемо для задач на 100K+ токенов
}
}
)
# Извлекаем ответ
output = response['output']['message']['content'][0]['text']
messages вместо prompt. Это список сообщений с ролями (user/assistant). Формат унифицирован с другими моделями в Bedrock. Если у тебя уже есть история диалога в старом формате, придется конвертировать.2 Шаг второй: Настраиваем контекстное окно в 1 млн токенов
Вот здесь многие спотыкаются. Да, модель поддерживает 1,048,576 токенов. Но просто отправить ей роман «Война и мир» — плохая идея.
Проблема в трёх местах:
- Лимиты Bedrock Runtime: по умолчанию 100K токенов на запрос. Нужно открывать тикет в AWS Support для увеличения.
- Стоимость: 1M входных токенов Nova 2 Ultra стоят примерно $15. Один неаккуратный запрос — и счет подскакивает.
- Латентность: обработка максимального контекста занимает 20-30 секунд даже на ultra-инстансах.
Правильный подход — чанковать и суммировать. Вот паттерн:
# Пример работы с длинными документами
from langchain_text_splitters import RecursiveCharacterTextSplitter
# Разбиваем документ на чанки по 50K токенов с перекрытием
splitter = RecursiveCharacterTextSplitter(
chunk_size=50000,
chunk_overlap=5000,
length_function=count_tokens # Твоя функция подсчета
)
chunks = splitter.split_text(huge_document)
# Обрабатываем каждый чанк с суммированием
summaries = []
for chunk in chunks:
response = client.converse(
modelId='amazon.nova-2-lite-v1:0', # Для суммирования хватит Lite
messages=[{
'role': 'user',
'content': [{
'text': f"Суммируй этот текст: {chunk}"
}]
}],
inferenceConfig={'maxTokens': 2000}
)
summaries.append(response['output']['message']['content'][0]['text'])
# Финальное суммирование сводок
final_prompt = "Объедини эти сводки в единый отчет:\n" + "\n\n".join(summaries)
# Используем Nova 2 Ultra с Extended Thinking для финального анализа
Зачем такие сложности? Потому что отправка 1M токенов сразу — это как пытаться прочитать всю энциклопедию за один присест. Модель физически не сможет уделить внимание всем деталям.
Extended Thinking: магия или маркетинг?
Extended Thinking (ET) — фича, которая заставляет модель «думать» дольше перед ответом. Особенно полезна для математических расчётов, логических цепочек, анализа кода.
Включить её просто:
response = client.converse(
modelId='amazon.nova-2-ultra-v1:0',
messages=[{'role': 'user', 'content': [{'text': 'Реши эту сложную задачу...'}]}],
additionalModelRequestFields={
'extendedThinking': {
'enabled': True,
'thinkingBudgetTokens': 4000 # Сколько токенов модель потратит на "размышления"
}
}
)
Но есть нюанс: ET увеличивает латентность в 2-3 раза. И стоимость — ты платишь и за «размышления», и за ответ.
Ошибка новичка: Включать ET для всех запросов. На простые вопросы вроде «Как дела?» модель будет думать 5 секунд и ответит «Хорошо». Бессмысленная трата денег. Используй ET только когда видишь в промпте слова «рассчитай», «проанализируй», «объясни цепочку рассуждений».
Web Grounding: когда модели нужен интернет
Раньше для подключения Nova к интернету нужно было городить огород с Lambda, S3 и собственными парсерами. Теперь есть нативный web grounding.
Как это работает в коде:
response = client.converse(
modelId='amazon.nova-2-ultra-v1:0',
messages=[{
'role': 'user',
'content': [{
'text': 'Что случилось на Mars Today за последнюю неделю?'
}]
}],
toolConfig={
'tools': [{
'toolSpec': {
'name': 'WebSearchTool',
'description': 'Поиск в интернете',
'inputSchema': {
'json': {
'type': 'object',
'properties': {
'query': {'type': 'string'},
'numResults': {'type': 'integer', 'default': 5}
},
'required': ['query']
}
}
}
}]
},
# Модель сама решает, когда использовать поиск
inferenceConfig={'maxTokens': 2000}
)
Модель сама формирует поисковые запросы на основе твоего вопроса, получает результаты и цитирует источники. Но — внимание — за каждый поисковый запрос дополнительная плата $0.005. При активном использовании счёт может незаметно вырасти.
Подробнее о построении интеллектуальных систем с поиском читай в статье Интеллектуальный поиск по фото на AWS.
Nova 2 Lite vs Ultra: что выбрать для продакшена?
| Параметр | Nova 2 Lite | Nova 2 Ultra |
|---|---|---|
| Стоимость за 1M входных токенов | $0.80 | $8.00 |
| Контекстное окно | 128K токенов | 1,048,576 токенов |
| Extended Thinking | Нет | Есть |
| Лучше всего для | Чатботы, классификация, простой анализ | Сложный анализ, RAG, программирование, исследования |
Правило простое: начинай с Lite для 80% задач. Переходи на Ultra только когда Lite не справляется или нужен длинный контекст. Их даже можно комбинировать в мультиагентных системах.
Чек-лист миграции: от тестов к продакшену
- Бэкап промптов и конфигураций. Экспортируй все системные промпты, параметры температуры, top_p. Один скрипт на Python — и у тебя есть JSON-резервная копия.
- Создай тестовое окружение в Bedrock. Попроси у AWS увеличения квот на Nova 2 заранее. Иногда это занимает 2-3 рабочих дня.
- Перепиши 1-2 ключевых рабочих потока на Converse API. Не всю систему сразу. Выбери самый простой и самый сложный сценарий.
- Прогони A/B тесты. Запускай Nova 1 и Nova 2 параллельно на одинаковых запросах. Сравнивай качество, латентность, стоимость. Инструменты мониторинга из статьи Новые CloudWatch метрики для Bedrock помогут.
- Настрой алерты на аномальную стоимость. Extended Thinking и 1M контекст могут сжигать бюджет незаметно. Поставь алерт в CloudWatch на превышение $X в час.
- Постепенный rollout. Направляй 5% трафика на Nova 2, потом 25%, потом 100%. Имей возможность отката за 5 минут.
Где собака зарыта: пять ошибок, которые сломают твою миграцию
Ошибка 1: Игнорирование таймаутов. Converse API с Extended Thinking может работать 30+ секунд. Твой текущий таймаут в 10 секунд убьёт все запросы. Увеличивай read_timeout в конфиге boto3.
Ошибка 2: Прямой перенос промптов. Nova 2 понимает инструкции иначе. То, что работало на Nova 1 как «Напиши email вежливо», на Nova 2 может дать излишне формальный ответ. Промпты нужно тестировать и корректировать.
Ошибка 3: Отправка бинарных данных (PDF, изображений) напрямую в text-поле. Для мультимодальности нужен отдельный пайплайн с embeddings или конвертация в текст сторонними инструментами.
Ошибка 4: Неправильная обработка стриминга. Converse_stream возвращает chunks, которые нужно правильно собирать. Пропустишь stop reason — получишь бесконечный поток.
Ошибка 5: Забыть про регионы. Nova 2 Ultra доступна не во всех регионах AWS. Если твоё приложение работает в ap-south-1 (Мумбаи), придётся либо менять регион, либо использовать глобальную эндпоинт-конфигурацию с повышенной задержкой. Подробнее о проблемах глобального вывода читай здесь.
И что в итоге?
Миграция с Nova 1 на Nova 2 — это не апдейт библиотеки. Это смена архитектурного мышления. Вместо простых запросов получаешь инструмент для работы с гигантскими контекстами, агентскими функциями, веб-поиском.
Плата за это — сложность. Придётся переписывать код, пересматривать промпты, настраивать мониторинг. Но альтернатива — остаться с моделью, которая уже через полгода будет как Windows XP: работать будет, но все вокруг перейдут на следующую ОС.
Стартуй с малого. Возьми один микросервис, переведи его на Converse API, посмотри на цифры. Если понравится — масштабируй на всю систему. Если нет — хотя бы будешь знать, что попробовал.
И последнее: пока ты читал эту статью, Amazon наверняка анонсировал Nova 3. Добро пожаловать в мир AI-инфраструктуры, где миграция — это не событие, а постоянное состояние.