Перейти к основному содержанию

Короткий ответ

max_tokens ограничивает, сколько tokens модель может сгенерировать за один ответ. В разных API и моделях отличаются названия поля, обязательность параметра и поведение по умолчанию. Чтобы получать стабильный вывод, задавайте явный лимит для длинных ответов, генерации кода и документации. Для Claude / Anthropic-compatible API обычно нужно передавать max_tokens явно.

Базовые понятия

ПонятиеЗначение
Input tokensВаши сообщения, контекст, содержимое файлов, результаты tools и другой ввод
Output tokensВидимый ответ, который генерирует модель
Reasoning tokensСкрытые tokens для внутреннего reasoning у некоторых reasoning-моделей
Context windowОбщий лимит для ввода, вывода и части внутренних tokens
Output limitМаксимальный видимый вывод за один ответ
Если output limit слишком мал, ответ может оборваться. Если лимит очень большой, модель не обязана использовать его целиком, но длинные задачи могут стоить дороже.

Разные имена параметров

ПараметрЧастый сценарий
max_tokensClaude / Anthropic Messages API и часть Chat Completions-настроек
max_completion_tokensНекоторые OpenAI reasoning-модели через Chat Completions
max_output_tokensЧастое поле лимита вывода в OpenAI Responses API
Если вы используете Codex CLI или другой инструмент на Responses API, ориентируйтесь на поле, которое сейчас поддерживает инструмент или provider. Не задавайте одно и то же имя параметра для всех моделей.

Что будет, если не задать лимит

Поведение зависит от provider и API:
СценарийВозможный результат
Claude / Anthropic-compatible APIМожет потребоваться явное значение max_tokens
OpenAI-compatible Chat CompletionsМожет использоваться поведение модели по умолчанию
OpenAI Responses APIМожет использоваться max_output_tokens или дефолт инструмента
Другие моделиМогут иметь собственный лимит вывода по умолчанию
Один и тот же код после смены модели может давать ответы разной длины. Для production-вызовов лучше задавать явный лимит вывода.

Рекомендуемые диапазоны

ЗадачаДиапазон
Обычные вопросы1024 - 4096
Объяснение кода / небольшие правки4096 - 8192
Длинный текст / сложные coding-задачи8192 и выше, с учетом лимита модели
Пакетные задачиМеньший лимит, чтобы отдельный запрос не сгенерировал слишком длинный ответ
Фактический максимум проверяйте в model plaza и документации upstream-модели. Максимальный вывод может меняться между версиями.

Что делать, если ответ обрывается

Если в ответе есть finish_reason: "length", модель обычно достигла лимита вывода. Проверяйте в таком порядке:
  1. Увеличьте поле лимита вывода, которое поддерживает текущий API.
  2. Проверьте, что использовали правильное имя параметра.
  3. Сузьте prompt, чтобы убрать лишний вывод.
  4. Выберите модель с большим output window.
  5. Разбейте длинную задачу на несколько шагов.

Частые ошибки

  • Считать, что большее значение max_tokens всегда заставит модель писать длиннее.
  • Повторять запрос после обрыва и не проверять finish_reason.
  • Использовать старое имя поля с reasoning-моделью.
  • Не учитывать hidden reasoning tokens при оценке контекста и стоимости.
  • Игнорировать собственный максимальный лимит вывода у модели.

О LLMEasy

LLMEasy записывает usage на уровне API Key и model request. В dashboard можно смотреть расход tokens по моделям и задачам. Но поле лимита вывода всё равно определяется API-форматом и моделью. При настройке проверяйте модель, Base URL, API-формат и имя параметра вместе.

Связанные материалы