Claude можно вызывать через OpenAI-совместимый Chat Completions или через Anthropic Messages. Для сложных thinking- и tool-сценариев Messages сохраняет больше нативной семантики.
Обязательный max_tokens#
В Messages передавайте max_tokens явно. Модель может остановиться раньше, но это поле задаёт абсолютный предел генерации.
При thinking оставляйте в этом бюджете место и для рассуждения, и для итогового текста.
Adaptive и manual thinking#
Новые Claude-модели могут использовать adaptive thinking: модель сама решает, сколько рассуждать, а effort задаёт мягкую глубину.
У других версий встречается ручной budget_tokens. Он должен быть меньше max_tokens.
Не копируйте manual thinking в модель, которая ожидает adaptive thinking.
Sampling#
Поддержка temperature, top_p и top_k зависит от версии. У новых моделей часть полей может быть недоступна. Даже temperature: 0 не делает ответ полностью детерминированным.
Thinking blocks в диалоге#
Если приложение возвращает предыдущий assistant turn в следующий запрос:
сохраняйте thinking и redacted thinking blocks;
не редактируйте их содержимое;
не меняйте порядок;
сохраняйте signature;
связывайте tool result с исходным tool use.
Преобразованный Chat-ответ не всегда содержит достаточно данных, чтобы восстановить эти blocks. Для длинных нативных циклов используйте Messages.
Structured output и tools#
Function tools переносимы лучше встроенных инструментов. Строгий JSON output зависит от конкретной модели и маршрута; проверяйте страницу модели и всегда валидируйте ответ.