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

Параметр temperature в Claude Opus 4.7: удалите поле, а не подбирайте число

A
11 мин чтенияClaude API

Claude Opus 4.7 больше не принимает старые sampling controls как прежний способ управления. Удалите `temperature`, найдите слой, который добавляет поле, и используйте prompt или `effort` для нужного типа контроля.

Параметр temperature в Claude Opus 4.7: удалите поле, а не подбирайте число

Если Claude Opus 4.7 возвращает 400 потому, что в запросе все еще есть temperature, не ищите более безопасное число. Безопасное исправление проще: удалите поле из фактического request path.

Та же логика относится к top_p и top_k. Ваша задача не в том, чтобы угадать новый sampling режим, а в том, чтобы найти слой, который продолжает добавлять старые поля: SDK helper, Bedrock adapter, gateway, IDE plugin, eval harness, preset или retry template.

Рабочий порядок такой: удалить старые sampling поля, проверить final outbound payload, заменить старую задачу управления prompt, schema, tests или effort, затем повторить тот же маршрут. Fallback имеет смысл только тогда, когда текущий stack сегодня не может перестать отправлять эти поля.

Быстрая матрица исправления

Сначала определите владельца поля. Ошибка выглядит одинаково, но чинится в разных местах.

Где появляется полеВероятный владелецПервое действиеКак проверить
В коде явно есть temperature, top_p или top_kПрямой API или SDK callУдалить поля полностьюЛогировать названия полей в final payload и повторить тот же prompt
В коде поля нет, но API его видитSDK default, helper, gateway, proxy, eval harnessИсправить builder или последний transformerУбедиться, что payload на выходе чистый
Ошибка идет через BedrockBedrock adapter или schema mappingУдалить sampling поля из Bedrock payloadПовторить тот же model ID и workload
Ошибка идет из IDE или agent toolPlugin, model wrapper, legacy presetНайти preset, который ставит generation defaultsПовторить ту же задачу после удаления preset
Сообщение больше похоже на top_p deprecated в Claude CodeСпециальная ветка Claude CodeПроверить Claude Code version, route и presetИспользовать Claude Code Opus 4.7 top_p Deprecated

Не меняйте одновременно provider, prompt, route и model family. Иначе successful retry не докажет, что исходный маршрут действительно исправлен.

Что изменилось в Opus 4.7

По текущим материалам Anthropic для Opus 4.7 non-default значения temperature, top_p и top_k приводят к 400. Практическая migration advice: не передавать эти поля, а управлять поведением через prompt.

Это важнее, чем кажется. Многие воспринимают temperature parameter как вопрос настройки качества: поставить 0, поставить 0.2, вернуть старый default. Для Opus 4.7 это неверная рамка. Поле становится частью несовместимой формы запроса.

Старый контроль надо перевести в новую задачу:

Что вы хотели от temperatureЧто использовать теперьГраница
Строгий форматSchema, examples, forbidden output, validation feedbackPrompt повышает управляемость, но не дает абсолютной детерминированности
Более глубокое рассуждениеeffort, если маршрут поддерживаетЭто reasoning/token control, не randomness control
Короче ответmax_tokens, порядок приоритетов и stop conditionsСлишком узкий бюджет может обрезать ответ
Несколько вариантовПопросить candidates и критерии выбораНе имитируйте variety через removed knobs

temperature: 0 не является новым безопасным режимом. Даже раньше это не было универсальной гарантией одинакового ответа.

Исправьте прямой API или SDK call

До и после очистки payload

Если поле видно в коде, исправление должно быть скучным.

python
message = client.messages.create( model="claude-opus-4-7", max_tokens=1200, temperature=0.2, top_p=0.9, messages=[{"role": "user", "content": "Refactor this function."}], )

Должно стать:

python
message = client.messages.create( model="claude-opus-4-7", max_tokens=1200, messages=[{"role": "user", "content": "Refactor this function."}], )

В TypeScript принцип тот же:

ts
const response = await anthropic.messages.create({ model: "claude-opus-4-7", max_tokens: 1200, messages: [{ role: "user", content: "Summarize the incident." }], });

После удаления видимых полей проверьте последний request body перед отправкой. Частая ошибка: команда меняет один call site, а общий helper снова добавляет default temperature. Логируйте не секреты, а только field names, model ID и route.

Для строгого JSON лучше переносить контроль в задачу:

text
Return one JSON object with keys "root_cause", "fix", and "verification". Do not include prose outside the JSON. If evidence is insufficient, set "root_cause" to "unknown".

Это совместимо с Opus 4.7 лучше, чем попытка сохранить старый sampling interface.

Найдите скрытый слой инъекции

Скрытый слой инъекции temperature

Самый частый production-сценарий: приложение не задает temperature, но final payload все равно содержит поле. Тогда смотреть нужно не на первый SDK call, а на цепочку после него.

Проверьте:

  • общий SDK wrapper с generation defaults;
  • OpenAI-compatible gateway, который копирует temperature в Anthropic body;
  • Bedrock adapter, который объединяет account defaults и per-request fields;
  • IDE plugin или agent preset со старой модельной конфигурацией;
  • eval harness, который ставит temperature для сравнимости прогонов;
  • переменные окружения вроде MODEL_TEMPERATURE;
  • retry middleware, который на втором запросе берет stale template.

Цель проверки: final payload содержит model, max_tokens, messages, но не содержит temperature, top_p, top_k.

Bedrock и provider routes

AWS Bedrock model card для Claude Opus 4.7 также говорит, что temperature, top_p и top_k больше не поддерживаются. Поэтому ошибка через Bedrock не доказывает, что проблема в Anthropic public API. Часто виноват adapter.

СлойЧто смотретьИсправление
App requestСтарые поля в объекте запросаУдалить до adapter
Adapter mappingКопируются ли OpenAI-style fieldsДобавить Opus 4.7 drop branch
Project defaultsConsole preset или configСделать defaults model-aware
RetryСтарый body на повтореРетрай из очищенного payload

UI label "Opus 4.7" не достаточно. Проверяйте model ID, provider route и fields. Если нужен выбор между Opus 4.6 и 4.7, смотрите Claude Opus 4.7 vs Claude Opus 4.6.

Чем заменить temperature

Replacement controls and verification

Нет одного нового поля, которое повторяет temperature. Есть разные control jobs.

ЗадачаНовый способОграничение
ФорматSchema, examples, validationНе абсолютная детерминированность
Thorough reasoningeffortНе управляет randomness
Cost/lengthmax_tokens, task budgetМожет обрезать
VarietyНесколько candidates и criteriaНе sampling knob
Production stabilitySame prompt, same route, testsStability через проверки

effort полезен для reasoning depth и token spend. Не называйте его renamed temperature. Если wrapper также сохраняет старые thinking controls, чистите это отдельно, чтобы не смешать две причины failure.

Для production migration полезно описать замену не как "мы убрали temperature", а как набор control jobs. Укажите, какая часть поведения теперь задается prompt contract, какая проверяется validator, какая ограничивается token budget, а какая остается недетерминированной по природе модели. Это снижает риск, что через неделю кто-то вернет старое поле ради "стабильности" и снова сломает Opus 4.7.

Хороший change note для команды должен быть конкретным: "для model IDs Opus 4.7 не отправляем temperature, top_p, top_k; для строгого JSON используем schema и validation; для reasoning budget используем effort только на маршрутах, где он поддержан; final payload проверяем перед retry". Такая формулировка годится и для code review, и для gateway rule, и для eval harness. Она не обещает абсолютную одинаковость ответов, но делает request contract проверяемым.

Проверка и fallback

Проверка должна быть same-path:

  1. Тот же model, route, prompt и task.
  2. Удалены temperature, top_p, top_k.
  3. Final outbound payload чистый.
  4. Один retry на том же маршруте.
  5. Regression guard, чтобы defaults не вернулись.

Fallback допустим, если текущий stack нельзя быстро починить: временная старая модель, gateway strip layer или pin версии инструмента. Но это bridge. Долгосрочное исправление — привести request shape к контракту Opus 4.7.

Перед fallback задайте три вопроса. Видели ли вы final outbound payload после всех adapters? Зафиксировали ли вы один failed request и один cleaned retry с тем же prompt? Понимаете ли вы, какой слой снова добавляет field? Если ответы отрицательные, fallback слишком ранний: он спрячет дефект в wrapper или gateway, но не исправит контракт. Если ответы положительные, временный fallback можно пометить сроком действия и завести отдельную задачу на removal rule.

Отдельно проверьте observability. Не логируйте полный prompt, user data или API key. Достаточно безопасного события: model ID, provider route, список top-level field names, статус retry и request_id. Этого хватает, чтобы доказать отсутствие старых sampling fields и связать 400 с конкретным layer owner.

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

Удален ли temperature полностью?

Официальная граница говорит о non-default значениях. Но инженерно безопаснее не отправлять поле вообще, потому что defaults в SDK и gateway могут трактоваться по-разному.

Можно ли использовать temperature: 0?

Не как migration fix. Низкая temperature никогда не была строгой гарантией одинакового ответа, а в Opus 4.7 поле не должно оставаться в payload.

effort заменяет temperature?

Нет. effort управляет reasoning depth и token spend. Формат и стиль задавайте prompt, examples и validation.

Почему Bedrock тоже падает?

Потому что Bedrock route также не поддерживает эти sampling поля. Проверьте adapter и final provider payload.

Это то же самое, что Claude Code top_p deprecated?

Граница общая, но troubleshooting отличается. Для Claude Code смотрите dedicated branch: Claude Code Opus 4.7 top_p Deprecated.

Рабочее правило

Если Opus 4.7 падает из-за temperature, не подбирайте число. Удалите поле, найдите слой инъекции, замените старую control task на prompt или effort, затем проверьте тот же маршрут.

Поделиться:

laozhang.ai

Один API, все модели ИИ

AI Изображения

Gemini 3 Pro Image

$0.05/изобр.
-80%
AI Видео

Sora 2 · Veo 3.1

$0.15/видео
Async API
AI Чат

GPT · Claude · Gemini

200+ моделей
Офиц. цена
Обслужено 100K+ разработчиков
|@laozhang_cn|$0.1 бонус