Миграция с Nova 1 на Nova 2 в AWS Bedrock: Converse API, 1M токенов, Extended Thinking | AiManual
AiManual Logo Ai / Manual.
18 Мар 2026 Гайд

Миграция с Amazon Nova 1 на Nova 2 в Bedrock: инструкция по API, контекст 1M токенов и активация Extended Thinking

Полное руководство по миграции с Amazon Nova 1 на Nova 2 в Bedrock на 18.03.2026. Контекст 1 млн токенов, Converse API, Extended Thinking, web grounding, пример

Новая версия — старые проблемы. Зачем переходить с 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 не справляется или нужен длинный контекст. Их даже можно комбинировать в мультиагентных системах.

Чек-лист миграции: от тестов к продакшену

  1. Бэкап промптов и конфигураций. Экспортируй все системные промпты, параметры температуры, top_p. Один скрипт на Python — и у тебя есть JSON-резервная копия.
  2. Создай тестовое окружение в Bedrock. Попроси у AWS увеличения квот на Nova 2 заранее. Иногда это занимает 2-3 рабочих дня.
  3. Перепиши 1-2 ключевых рабочих потока на Converse API. Не всю систему сразу. Выбери самый простой и самый сложный сценарий.
  4. Прогони A/B тесты. Запускай Nova 1 и Nova 2 параллельно на одинаковых запросах. Сравнивай качество, латентность, стоимость. Инструменты мониторинга из статьи Новые CloudWatch метрики для Bedrock помогут.
  5. Настрой алерты на аномальную стоимость. Extended Thinking и 1M контекст могут сжигать бюджет незаметно. Поставь алерт в CloudWatch на превышение $X в час.
  6. Постепенный 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-инфраструктуры, где миграция — это не событие, а постоянное состояние.

Подписаться на канал