Переход на GPT-6.1 Terra: исправляем ошибки 400 из-за temperature, переносим инструменты в Responses и настраиваем Codex

AIHubMix13 мин чтения
Переход на GPT-6.1 Terra: исправляем ошибки 400 из-за temperature, переносим инструменты в Responses и настраиваем Codex

Переход на GPT-6.1 Terra сводится к одной строке: задайте модель gpt-6.1-terra. Дальше всё зависит от того, через какой API-маршрут проходит запрос. В Responses API Terra работает по правилам OpenAI: параметр reasoning effort работает, а temperature и top_p приводят к ответу HTTP 400. В маршруте Chat Completions от AIHubMix тот же параметр temperature принимается без ошибок, а в проверках AIHubMix от 27 октября 2026 года reasoning_effort не оказывал измеримого влияния на короткие запросы.

Короткий ответ для большинства команд: переведите трафик Terra на Responses API, удалите параметры сэмплирования и используйте для каждой рабочей нагрузки только один маршрут. Ниже — ошибки, с которыми вы столкнётесь, проблемы, которые не вызывают ошибок, правила тарификации, на которых часто спотыкаются, разрешения агента, а также настройка Codex и Claude Code. Terra доступна на странице модели GPT-6.1 Terra в AIHubMix по официальным ценам OpenAI: $1 за миллион входных токенов, $0.05 за токены чтения из кеша, $1.25 за запись в кеш на 30 минут и $5 за выходные токены. На странице AIHubMix указаны те же тарифы на входные и выходные токены и чтение из кеша, но тариф записи в кеш не указан.

Правила взяты из руководства OpenAI по миграции на GPT-6 и страницы модели Terra. Тексты ошибок и поведение шлюза основаны на проверках AIHubMix от 27 октября 2026 года, в которых для основного ID gpt-6.1-terra использовались короткие запросы. В руководстве AIHubMix по моделям сказано, что большинство ошибок 400 передаются от вышестоящего провайдера; в таких ответах в сообщении также присутствует идентификатор трассировки tid.

Какой маршрут вы используете?

Во время этих проверок AIHubMix предоставлял Terra по трём протоколам. Работают они по-разному:

Маршрут Управление уровнем reasoning temperature Вызов инструментов
Responses Работает Ошибка 400, если уровень effort не равен none Документировано OpenAI
Chat Completions Видимого эффекта нет Принимается Не документировано
Anthropic Messages Видимого эффекта нет Не проверялось Возвращается tool_use

«Видимого эффекта нет» и «Принимается» — результаты измерений AIHubMix от 27 октября на коротких запросах. В Chat Completions вызовы инструментов возвращались, но OpenAI документирует вызов инструментов для Terra только в Responses.

Если вы только начинаете, используйте Responses. Если существующая интеграция с Chat Completions работает, ознакомьтесь с незаметными сбоями, прежде чем ей доверять.

Явные ошибки

Они возвращают HTTP 400 и останавливают выполнение запроса.

«Неподдерживаемый параметр: 'temperature' не поддерживается этой моделью.»

Что вы увидите. Вызов Responses API с заданным temperature и уровнем effort по умолчанию (medium) возвращает:

Unsupported parameter: 'temperature' is not supported with this model.

При отправке top_p возвращается та же ошибка, но вместо temperature в ней указан top_p. По умолчанию effort равен medium, поэтому ошибка возникнет, даже если запрос вообще не задаёт этот параметр.

Причина. В руководстве OpenAI по миграции сказано, что при уровне reasoning, отличном от none, необходимо удалить temperature, top_p и top_logprobs. В Responses также удалите message.output_text.logprobs из include.

Как воспроизвести. Этот вызов curl через Responses API AIHubMix отправляет то же тело запроса, что и AIHubMix 27 октября:

curl https://aihubmix.com/v1/responses \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-terra",
    "input": "Reply with the single word: ready.",
    "temperature": 0.2
  }'

В ответ вернулся HTTP 400:

{"error":{"message":"Unsupported parameter: 'temperature' is not supported with this model. (tid: …)","type":"Aihubmix_api_error"},"type":"error"}

Исправление. Удалите temperature и top_p из всех путей вызова, в том числе из вспомогательных запросов — например, к суммаризаторам и классификаторам, о которых вы могли забыть. Если вам нужно управлять сэмплированием, задайте effort none: Terra его поддерживает, и в проверках AIHubMix запрос с effort none и "temperature": 0.2 вернул код 200. В сообщении на форуме разработчиков OpenAI описано то же правило; автор также отмечает, что для GPT-6.1 Sol оно не сработало, поскольку у этой модели нет уровня none.

{
  "model": "gpt-6.1-terra",
  "input": "Reply with the single word: ready.",
  "reasoning": {"effort": "none"},
  "temperature": 0.2
}

«Неподдерживаемый параметр: 'logprobs' не поддерживается этой моделью.»

Что вы увидите. Вызов Chat Completions с logprobs: true и reasoning_effort: "high" вернул:

Unsupported parameter: 'logprobs' is not supported with this model.

Причина. Действует то же правило OpenAI. Для Chat Completions в руководстве также указано, что logprobs нужно удалить, если уровень effort не равен none.

Исправление. Удалите logprobs и top_logprobs. Если от них зависит оценка уверенности в вашем конвейере, до перехода предусмотрите замену. AIHubMix не проверял logprobs при effort none в Chat Completions.

«Неподдерживаемое значение: 'minimal' не поддерживается…»

Что вы увидите. Код, написанный для более старых моделей OpenAI и отправляющий effort minimal, получит:

Unsupported value: 'minimal' is not supported with the 'gpt-6.1-terra' model. Supported values are: 'none', 'low', 'medium', 'high', 'xhigh', and 'max'.

Причина. В Terra доступны уровни effort none, low, medium, high, xhigh и max. Уровня minimal нет.

Исправление. В руководстве OpenAI рекомендуется начать с low и сравнить результаты на репрезентативных задачах. Если прежний параметр использовался, чтобы отключить reasoning, ближе всего к нему будет none.

Незаметные сбои

Они возвращают HTTP 200, поэтому в логах ничего не указывает на проблему. Она проявится позже: ответы не будут соответствовать заданным параметрам, кеш не будет попадать в запросах, или агент остановится и задаст вопросы.

Chat Completions принимает temperature, но, похоже, игнорирует effort

В маршруте Chat Completions от AIHubMix запрос с temperature: 0.2 вернул код 200 и без заданного effort, и с effort none, и с effort high. Запрос с top_p: 0.5 тоже вернул код 200. Из-за этого набор тестов, запущенный в Chat Completions, не выявит ошибку 400, которая возникнет с тем же кодом после перехода на Responses.

С уровнем effort проблема серьёзнее. В проверках AIHubMix от 27 октября параметр reasoning_effort в Chat Completions не оказал измеримого влияния:

Запрос Маршрут Effort none Effort max
Список простых чисел, дающих простую сумму Chat Completions 181 и 258 293 и 234
Список простых чисел, дающих простую сумму Responses 0 1,078
Задача про биты и мяч Chat Completions 24 25

Числа показывают количество токенов reasoning на запрос. В Chat Completions для запроса про простые числа запускали по два раза с каждым значением.

На короткий запрос про биты и мяч значения none, low, high, max и отсутствие effort дали от 24 до 27 токенов reasoning. Если вместо этого передать объект reasoning: {effort: "none"}, для запроса про простые числа получается 327 токенов. В Responses тот же запрос про простые числа дал 0 токенов reasoning и 72 выходных токена при none, а при max — 1,078 токенов reasoning и 1,153 выходных токена.

По оценке AIHubMix, в текущей реализации маршрут Chat Completions запускает Terra с фиксированным уровнем effort, поэтому заданное значение до модели не доходит. Это вывод по нескольким коротким запросам, проверенным только в AIHubMix, а не общее правило для Chat Completions. На более длинных или сложных запросах результаты могут быть другими. Если effort влияет на стоимость или качество, задавайте его в Responses, где он явно работает.

Вызовы инструментов в Chat Completions работают, но не документированы

В руководстве OpenAI сказано, что GPT-6.1 Terra поддерживает Chat Completions, но для вызова инструментов требуется Responses. В AIHubMix запрос Chat Completions с инструментом-функцией действительно вернул finish_reason: tool_calls. Не полагайтесь на это: такое поведение не документировано и может измениться без предупреждения. В Responses инструмент-функция вернул элемент function_call, web_search — вызовы поиска и сообщение, а инструмент-функция с async: true также вернул код 200. Переведите вызовы инструментов на Responses.

Настройки thinking в Claude Code не работают в маршруте Messages

AIHubMix также отвечает на запросы к Terra через Anthropic Messages API — протокол, который использует Claude Code. Текст, tool_use и изображения в Base64 вернули код 200. Управление reasoning не перенеслось: при включённом thinking и бюджете в 4,000 токенов вернулось 24 токена thinking, при output_config.effort: "high" — 26, а запрос без обоих параметров дал 25. В ответе нет блоков thinking — только блоки текста или tool_use.

В Responses и Chat Completions отдельные кеши

AIHubMix отправил через Responses стабильный префикс developer примерно на 9,600 токенов. При первом вызове в кеш записалось 9,623 токена, а при втором и третьем 9,623 токена были прочитаны из кеша. Вызов Chat Completions с тем же префиксом сразу после этого не попал в кеш и записал заново все 9,623 токена. Во втором запуске с другим префиксом повторилась та же картина: вызов Responses записал в кеш 9,020 токенов, вызов Chat Completions с тем же префиксом записал 9,020 токенов без попадания в кеш, а повторный вызов Chat Completions прочитал из кеша 9,007 токенов из записи, созданной маршрутом Chat.

Поэтому рабочая нагрузка, переключающаяся между маршрутами, дважды платит за каждую запись в кеш. Выберите для каждой рабочей нагрузки один маршрут.

Настройки кеша для старых моделей

Если вы переходите с GPT-5.5 или более ранней модели, в руководстве OpenAI рекомендуется заменить prompt_cache_retention на prompt_cache_options.ttl. Значение по умолчанию — "30m". В Responses доступно время хранения "12h", и AIHubMix его принял: в объекте usage количество записанных токенов отображалось в cache_write_tokens_details.ttl_12h_tokens. В явном режиме без точки разбиения ничего не записалось — это соответствует документации OpenAI.

Изменение effort в ходе разговора

Изменение reasoning.effort на уровне запроса меняет префикс запроса, из-за чего кеш перестаёт работать. Для этого OpenAI добавила элемент входных данных configuration_update. Он повышает или понижает effort с текущего момента разговора, не меняя исходный префикс. Запрос с таким элементом вернул код 200 через AIHubMix. В руководстве OpenAI его рекомендуют для стандартных запросов с одним агентом.

Модель спрашивает, прежде чем действовать

В рекомендациях OpenAI по промптам для GPT-6 сказано, что модели этого семейства чаще останавливаются и задают пользователю вопрос, если дополнительные входные данные могут изменить результат, и острее реагируют на инструкции в навыках и файлах, таких как AGENTS.md. Эти рекомендации написаны для GPT-6 Astra, поэтому их стоит проверить на Terra, а не принимать на веру. Если агент, который без вмешательства работал на GPT-5.6 Terra, теперь приостанавливается в ожидании разрешения, в руководстве предлагается явно указать в промпте, что уже разрешено запросом пользователя. Также рекомендуется проверить все файлы навыков и инструкций, доступные модели.

По умолчанию effort равен medium, а max обходится значительно дороже

По умолчанию для Terra задан уровень усилий medium. Artificial Analysis оценил объём вывода примерно в 6,000 токенов на задачу при среднем уровне и около 35,000 при максимальном (из них 25,000 — на рассуждения); стоимость составила $0.10 и $0.40 за задачу соответственно. Если вы повышаете уровень усилий, чтобы устранить проблему с качеством, сначала проверьте, как это повлияет на счёт. Пользователи Codex с тарифами ChatGPT сообщали на Reddit, что при высоком уровне усилий Terra быстро расходует лимиты тарифа: в одном случае за 20 минут ушло 40% пятасового лимита. Это отдельные отзывы, но все они указывают на одно и то же.

Подводные камни тарификации

Тарифы Terra за входные и выходные токены, а также чтение кэша на AIHubMix такие же, как на OpenAI. Ниже — условия, из-за которых счёт может оказаться выше, чем предполагает прайс-лист.

Позиция Цена за 1M токенов Применяется при
Входные токены $1 До 272K входных токенов
Токены из кэша $0.05 Чтение кэша
Запись в кэш, 30 min $1.25 Срок хранения по умолчанию
Запись в кэш, 12 h $2.50 ttl задан как 12h
Выходные токены $5 До 272K входных токенов
Входные токены, длинный запрос $2 Более 272K входных токенов
Выходные токены, длинный запрос $7.50 Более 272K входных токенов

Тариф за запись на 12 часов взят у OpenAI. В прайс-листе AIHubMix для Terra указаны только тарифы на входные и выходные токены и чтение кэша: тариф за запись в кэш, тариф для длинного контекста и надбавка за 12-часовое хранение не указаны. Поэтому считайте приведённые выше тарифы за запись и за запросы свыше 272K опубликованными тарифами OpenAI, а не подтверждёнными тарифами AIHubMix.

Порог в 272K применяется ко всему запросу. На странице модели Terra указано контекстное окно объёмом 1,050,000 токенов, но после превышения входными данными порога в 272,000 токенов весь запрос тарифицируется по двойной ставке за входные токены и кэш и по ставке, увеличенной в 1.5 раза, за выходные токены. Запрос с 270,000 входных и 20,000 выходных токенов стоит $0.27 + $0.10 = $0.37. Запрос с 300,000 входных и 20,000 выходных токенов стоит $0.60 + $0.15 = $0.75. Примерно на 11% больше входных токенов обходится примерно вдвое дороже (в обоих примерах кэширование не используется).

Токены рассуждений тарифицируются как выходные. Токены рассуждений учитываются как выходные токены по ставке $5 за миллион, хотя вы их не видите. В проверке AIHubMix выше один и тот же промпт дал 72 выходных токена при none и 1,153 при max. Записывайте значение reasoning_tokens из объекта usage, а не оценивайте стоимость по длине ответа.

За запись в кэш взимается плата. Согласно правилам кэширования промптов OpenAI для GPT-5.6 и новее, запись стоит 1.25x от тарифа на входные токены при сроке хранения 30 минут и 2.5x при хранении в течение 12 часов. Чтение кэша на Terra стоит 0.05x. Минимальный префикс для кэширования — 1,024 токена. Если префикс меняется с каждым ходом или трафик распределён между двумя маршрутами, за запись придётся платить снова и снова.

Поиск в интернете оплачивается за каждый вызов. На страницах моделей OpenAI AIHubMix тарифицирует web_search по $0.01 за запрос сверх оплаты за токены; на странице Terra стоимость инструмента пока не указана отдельно, поэтому закладывайте её в бюджет. В одной проверке на один вопрос пришлось два вызова поиска.

Скидки на Batch и Flex действуют у OpenAI. OpenAI предоставляет скидку 50% при использовании Batch и Flex, а Fast mode стоит в 2x дороже. При запросе GET /v1/batches AIHubMix вернул 404 («The requested API endpoint does not exist.»), поэтому воспользоваться там маршрутом Batch нельзя. При service_tier со значением flex или priority вернулся код 200, но в прайс-листе AIHubMix для Terra указаны только стандартные тарифы, поэтому не рассчитывайте на скидку. Если отправляете запросы с одним из этих значений, проверяйте журнал использования.

Агенты с реальными правами доступа

OpenAI позиционирует Terra как модель для визуальных рассуждений и работы с компьютером, а встроенный инструмент управления компьютером работает через AIHubMix: запрос Responses с {"type": "computer"} и снимком экрана вернул computer_call, первым действием в котором был снимок экрана. Прежде чем предоставить агенту права на запись, ознакомьтесь с результатами оценки агентов в системной карте GPT-6.1 Terra от OpenAI. Это собственные оценки OpenAI, преимущественно в симуляциях с низкими ставками:

Оценка Terra GPT-6.1 Sol
Обошла явно указанное ограничение 29.6% Ниже
Несанкционированное действие после сообщений от агента-собеседника 13.75% 1.25%
Признаки осведомлённости об оценивании 9.88% 4.35%

Частоту обхода ограничений для Terra измеряли при максимальном уровне усилий; в системной карте GPT-6.1 Sol занимает место ниже неё. Показатель для взаимодействия с агентом-собеседником составляет 11 из 80 примеров.

Уровень защиты Terra от косвенной инъекции промпта составил 98.8% против 96.2% у GPT-5.6 Terra. Это хороший результат, но всё же не 100%. Для миграции важны два вывода: Terra чаще, чем Sol, выполняет инструкции, поступающие от другого агента, и иногда находит способ обойти ограничение, заданное в инструкциях. Поэтому:

  • Настройте для инструментов запрет по умолчанию и предоставляйте только те права, которые нужны для выполнения задачи.
  • Требуйте подтверждения для записи, покупок, передачи данных и любых действий, которые сложно отменить.
  • Считайте сообщения от других агентов недоверенными входными данными — как содержимое экрана и результаты работы инструментов. Они не могут предоставлять разрешения.
  • Запускайте инструмент управления компьютером в изолированном браузере или виртуальной машине с белым списком, задавайте ограничения на количество шагов и расходы и проверяйте фактический результат, а не итоговое сообщение модели. Таковы рекомендации OpenAI по работе с компьютером.

Инструменты для программирования: Codex и Claude Code

Codex подключается через API Responses — маршрут, на котором настройка уровня усилий Terra работает через AIHubMix. Общую настройку описывает руководство AIHubMix по конфигурации Codex в config.toml. Для Terra файл ~/.codex/config.toml будет выглядеть так:

model = "gpt-6.1-terra"
model_provider = "aihubmix"
model_context_window = 1050000
model_reasoning_effort = "medium"

[model_providers.aihubmix]
name = "AIHubMix"
base_url = "https://aihubmix.com/v1"
env_key = "AIHUBMIX_API_KEY"
wire_api = "responses"
  • Оставьте wire_api со значением responses. Именно этот маршрут учитывает уровень усилий; для работы с инструментами его также указывает в документации OpenAI.
  • Укажите размер контекстного окна. Задайте для model_context_window значение 1,050,000 токенов — размер окна Terra.
  • Начните со среднего уровня. Это уровень усилий Terra по умолчанию. Учитывая сообщения о расходовании лимитов выше, повышайте уровень для сложных задач, а не для всех сразу.
  • Перезапустите Codex после изменений. После изменения config.toml перезапустите Codex.

Claude Code

Claude Code работает с Terra через маршрут Messages в AIHubMix. Настройте его по руководству по параметрам Claude Code в settings.json, указав модель gpt-6.1-terra. В проверках AIHubMix работали вызовы инструментов и обработка изображений. Однако настройки thinking и уровня усилий в Claude Code не влияли на рассуждения Terra, а блоки thinking не возвращались. Из Claude Code нельзя настроить, насколько усердно думает Terra, поэтому для Terra лучше подходит Codex.

Проверка работоспособности за 10-15 минут

Выполните её один раз для каждого инструмента в небольшом репозитории с набором тестов:

  1. Начните новый сеанс с моделью gpt-6.1-terra. Не продолжайте сеанс, начатый на другой модели.
  2. Попросите: «Добавь модульный тест для одной функции в этом репозитории, запусти тесты и исправь всё, что не пройдёт».
  3. Успешный результат выглядит так: модель читает файлы и запускает тесты — значит, вызовы инструментов работают. Увидев результаты, она продолжает работу — значит, вывод инструментов передаётся обратно. В конце тесты проходят, и в сеансе нигде не возникает ошибки 400.
  4. В журнале использования AIHubMix проверьте, что указана модель gpt-6.1-terra, а в более поздних запросах видны токены из кэша для неизменного префикса. Если их нет, значит, что-то в префиксе меняется с каждым ходом.
  5. В Codex повторите задачу с уровнями low и medium и сравните количество выходных токенов за ход. Для задачи, требующей некоторого обдумывания, при уровне medium их должно быть больше. Если числа одинаковы на всех уровнях, проверьте, что запросы идут через Responses.
  6. Запишите время выполнения хода и количество выходных токенов. Это будет ваша отправная точка при выборе уровня усилий.

Контрольный список для миграции

  • Укажите модель gpt-6.1-terra.
  • Перенесите вызовы инструментов и всё, что зависит от уровня усилий, на API Responses.
  • Удалите temperature, top_p, top_logprobs и logprobs из всех путей вызова или задайте effort значение none.
  • Замените уровень усилий minimal на low.
  • Оставьте каждую нагрузку на одном маршруте, чтобы кэш не записывался дважды.
  • Замените prompt_cache_retention на prompt_cache_options.ttl.
  • Используйте configuration_update, чтобы менять уровень усилий в ходе разговора.
  • По возможности не превышайте 272K входных токенов в запросе.
  • Записывайте количество токенов рассуждений, токенов из кэша и токенов, записанных в кэш.
  • Закладывайте в бюджет $0.01 за каждый вызов поиска в интернете и не рассчитывайте на Batch через AIHubMix.
  • Проверьте файлы AGENTS.md и навыков и чётко укажите, что агенту разрешено делать.
  • Требуйте подтверждения для записи и считайте сообщения от агентов-собеседников недоверенными.
  • Выполните проверку работоспособности в каждом инструменте для программирования.

Часто задаваемые вопросы

Почему GPT-6.1 Terra возвращает ошибку «Unsupported parameter: 'temperature'»?
Потому что уровень усилий для рассуждений не равен none. Согласно правилу OpenAI для семейства GPT-6, параметры temperature, top_p и top_logprobs нужно удалять, если уровень усилий отличается от none; для Terra по умолчанию задан medium. Удалите эти параметры или задайте усилиям значение none, если вам нужно управлять сэмплированием.

Почему тот же код работает с Chat Completions?
В проверках 27 October 2026 маршрут Chat Completions в AIHubMix принял temperature 0.2 и top_p 0.5 и вернул код 200. Значит, тесты через Chat Completions не выявят ошибку 400, которую возвращает API Responses.

Работает ли reasoning_effort с Chat Completions через AIHubMix?
В проверках AIHubMix от 27 October 2026 этот параметр не дал измеримой разницы на нескольких небольших промптах: при none и max количество токенов рассуждений было примерно одинаковым. Это не универсальное правило, но если для вас важен уровень усилий, задавайте его через API Responses, где он работает явно.

Обязательно ли переносить вызовы инструментов на API Responses?
Да. Согласно документации OpenAI, для вызова инструментов в Terra требуется Responses. Запрос Chat Completions с функциональным инструментом через AIHubMix действительно вернул вызовы инструментов, но такое поведение не документировано, и полагаться на него не стоит.

Чем заменить уровень усилий minimal?
Terra поддерживает уровни none, low, medium, high, xhigh и max. OpenAI советует начать с low и сравнить результаты на типичных задачах.

Доступен ли Batch для Terra в AIHubMix?
Нет. Запрос GET /v1/batches в AIHubMix возвращает 404, поэтому воспользоваться маршрутом Batch нельзя; скидки 50% для Batch и Flex действуют у OpenAI. В прайс-листе AIHubMix для Terra указаны стандартные тарифы на входные и выходные токены, а также чтение кэша — те же, что в прайс-листе OpenAI.

Что выбрать для Terra — Codex или Claude Code?
Codex. Он использует API Responses, через который настройка уровня усилий Terra работает в AIHubMix. Claude Code работает через маршрут Messages, но в проверках AIHubMix его настройки thinking и уровня усилий не влияли на Terra.

Читайте дальше: серия статей о GPT-6.1 Terra

Источники

Один шлюз ко многим провайдерам ИИ. Создан для продакшена.

Перейти на AIHubMix