Ви викликаєте Claude API — інтерфейс Anthropic для програмної відправки промптів і отримання відповідей — і прості задачі працюють чудово. Екстракція, підсумовування, класифікація: Claude робить це бездоганно. Потім ви кидаєте йому щось складне. Перевірити pull request на 2 000 рядків. Спланувати міграцію бази даних. Здебажити race condition. Відповідь приходить швидко, впевнено і ледь помітно неправильно. Як студент, який прочитав підручник по діагоналі й імпровізує на екзамені.

Проблема не в моделі. Проблема в тому, що ви не дали їй чернетку.

Чому "просто прочитай доки" не працює

У Claude є фіча під назвою extended thinking — здатність покроково міркувати всередині перед тим, як відповісти. Як показати розв'язок у задачі з математики, тільки розв'язок залишається прихованим. Anthropic представили це 24 лютого 2025 року разом із Claude 3.7 Sonnet, і відтоді воно кардинально еволюціонувало.

Документація ґрунтовна. Але це 4 000 слів таблиць параметрів, приміток про deprecation і гайдів з міграції, розкиданих по трьох різних сторінках. Більшість розробників робить одне з трьох: повністю ігнорує thinking, копіпастить конфіг зі старого блог-посту під попередню модель, або вмикає його без контролю витрат і отримує сюрприз-рахунок на $50.

16 квітня 2026 року Anthropic випустили Claude Opus 4.7 і зламали всі три підходи. Ручний параметр budget_tokens, який раніше контролював вартість thinking? Тепер повертає 400 помилку. Новий токенізатор роздуває кількість токенів до 35%. А thinking за замовчуванням невидимий — але все одно тарифікується по повній ціні $25 за мільйон токенів.

Ось як налаштувати це правильно, станом на 27 квітня 2026 року.

Крок 1: Увімкніть Adaptive Thinking

На Opus 4.7 ви використовуєте adaptive thinking — модель сама вирішує, скільки думати, залежно від складності задачі. Ніяких ручних бюджетів токенів. Ви контролюєте інтенсивність параметром effort (простий лейбл типу "low", "high" або "max") замість того, щоб вгадувати число.

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=16000,
    thinking={"type": "adaptive"},
    output_config={"effort": "high"},
    messages=[{
        "role": "user",
        "content": "Review this SQL migration for correctness and edge cases: ..."
    }],
)

Три додані рядки: thinking, output_config і збільшений max_tokens — стеля того, скільки токенів (шматочків слів, які обробляє AI, приблизно 3/4 англійського слова) може містити відповідь. Thinking-токени враховуються в цю стелю, тому ставте мінімум 16 000. Anthropic рекомендує 32 000+ для складних задач. Якщо одне лише мислення перевищить ваш max — запит впаде. Без часткової відповіді, просто помилка.

/faion — це інструмент Nero для генерації робочого коду зі специфікації — вставте блок нижче й отримайте production-ready стартову точку.

/faion
Generate a Python function `call_with_thinking(prompt: str, effort: str = "high") -> str` that calls Claude Opus 4.7 with adaptive thinking using the anthropic Python SDK. Accept an effort parameter ("low", "medium", "high", "xhigh", "max"). Set max_tokens to 16000. Return the text response. Include error handling for API errors and a docstring explaining the effort levels.

Крок 2: Оберіть правильний рівень Effort

Не кожен промпт заслуговує на дисертацію. Ось шпаргалка, базована на рекомендаціях Anthropic і продакшн-даних з тестування Resolve AI:

Effort Що робить Коли використовувати
low Пропускає thinking для тривіальних задач Класифікація, екстракція, високонавантажені пайплайни
medium Помірне міркування, може пропустити Баланс ціна/якість, більшість агентних воркфлоів
high Майже завжди думає глибоко Code review, аналіз, планування
xhigh Розширене дослідження (лише Opus 4.7) Багатофайловий кодинг, довгі агентні ланцюжки
max Без обмежень на мислення Фронтирні задачі, дослідження, безлімітні бюджети

Ключове відкриття Resolve AI: Sonnet 4.6 на medium за якістю приблизно дорівнює Opus 4.6, але коштує в рази дешевше. Не тягніться за найбільшою моделлю — тягніться за правильним рівнем effort на дешевшій. Найрозумніша оптимізація — часто не платити за Opus взагалі.

Крок 3: Стримте Thinking для UX в реальному часі

Без стримінгу запит із важким thinking означає, що користувач пʼялиться на мертвий екран 30+ секунд. Зі стримінгом він бачить, як розгортаються міркування моделі в реальному часі — видимий прогрес замість екзистенційних сумнівів, чи не впав додаток.

with client.messages.stream(
    model="claude-opus-4-7",
    max_tokens=16000,
    thinking={"type": "adaptive", "display": "summarized"},
    messages=[{"role": "user", "content": "Analyze this codebase architecture..."}],
) as stream:
    for event in stream:
        if event.type == "content_block_delta":
            if event.delta.type == "thinking_delta":
                print(f"[thinking] {event.delta.thinking}", end="", flush=True)
            elif event.delta.type == "text_delta":
                print(event.delta.text, end="", flush=True)

Зверніть увагу на "display": "summarized". На Opus 4.7 за замовчуванням стоїть "omitted" — модель думає, ви платите за токени, але текст мислення приходить порожнім. Ви мусите встановити display явно, якщо хочете бачити, про що модель міркувала. Дебажити невидиме мислення — це рівно стільки ж кайфу, скільки звучить.

/faion
Generate a Python function `stream_thinking_response(prompt: str, effort: str = "high")` that calls Claude Opus 4.7 with adaptive thinking and streaming enabled via the anthropic Python SDK. Set display to "summarized". Print thinking deltas prefixed with "[thinking]" and text deltas without prefix. Set max_tokens to 32000. Handle stream cleanup properly with a context manager.

Крок 4: Працюйте з Tool Use без розриву ланцюжка

Якщо ваша інтеграція використовує tools — функції, які модель може викликати, як-от запит до бази даних або зовнішнього API — вам потрібно зберігати thinking-блоки при продовженні розмови. Видаліть їх — і Claude втрачає контекст міркування посеред потоку.

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=16000,
    thinking={"type": "adaptive"},
    tools=[your_tool],
    messages=[
        {"role": "user", "content": "What's the production error rate?"},
        {"role": "assistant", "content": [
            thinking_block,   # ЗБЕРЕЖІТЬ ЦЕ — видалення вбиває контекст
            tool_use_block
        ]},
        {"role": "user", "content": [tool_result]},
    ],
)

Одне обмеження, яке вкусить агентні архітектури: з увімкненим thinking tool_choice — який контролює, чи мусить Claude використати конкретний інструмент — підтримує лише "auto" або "none". Примусовий вибір конкретного інструмента повертає помилку.

Крок 5: Моніторте, за що реально платите

Кожна відповідь містить об'єкт usage. Після увімкнення thinking це стає найважливішим рядком у вашому коді:

cost_per_mtok = 25  # Ціна output Opus 4.7
output_cost = (response.usage.output_tokens / 1_000_000) * cost_per_mtok
print(f"Output tokens: {response.usage.output_tokens} (${output_cost:.4f})")

Кількість output-токенів включає ВСІ thinking-токени — навіть невидимі з display: "omitted". Якщо ваша видима відповідь — 500 токенів, але output_tokens каже 8 000, ви щойно заплатили за 7 500 токенів міркувань, які ніхто не бачив. Згідно зі сторінкою цін Anthropic, thinking-токени тарифікуються за повною ціною output: $25/MTok для Opus, $15/MTok для Sonnet.

/faion
Generate a Python helper function `log_thinking_cost(response, model: str = "claude-opus-4-7")` that takes an Anthropic Messages API response object and prints a cost breakdown: input tokens, output tokens (including thinking), cache read tokens, and total estimated cost in USD. Use a dict of per-model pricing (Opus 4.7: $15 input / $25 output, Sonnet 4.6: $3 input / $15 output). Warn if output_tokens exceeds 5000 with a note about possible high thinking usage.

Підводні камені, які вас вкусять

Податок токенізатора. Новий токенізатор Opus 4.7 генерує до 35% більше токенів для того самого тексту порівняно з Opus 4.6. Ваші витрати зростають без жодних змін у коді, коли ви оновлюєте модель. Процес мислення, який коштував $0.25 на Opus 4.6, може обійтися в $0.34 на 4.7 — ті самі міркування, більший рахунок. Моніторте usage до і після переходу.

Thinking-токени не кешуються. Prompt caching — фіча Anthropic, що дає знижку на повторювані вхідні токени — не поширюється на thinking-контент. В агентних циклах із багатьма tool calls Claude перечитує thinking-блоки з попередніх кроків як input. Це створює наростаючі витрати, яких ви не побачите, якщо не відстежуєте cache_read_input_tokens окремо.

Пастка легасі. Все ще на Claude Sonnet 4.6 або Opus 4.6? budget_tokens працює. Оновіться до Opus 4.7 — і він повертає 400 помилку без runtime-попередження. Просто жорсткий фейл. Тестуйте перед деплоєм.

Стеля max_tokens. Thinking-токени і токени відповіді ділять один ліміт max_tokens. Поставите max_tokens: 4000, модель подумає на 3 800 токенів — отримаєте відповідь на 200. Завжди ставте більше, ніж здається потрібним.

Що робити далі

У вас дві передачі. Для рутинних 80% — екстракція, форматування, проста Q&A — використовуйте effort: "low" або вимикайте thinking повністю. Для складних 20% — code review, планування архітектури, комплексний аналіз — використовуйте "high" або "xhigh" зі стримінгом і моніторингом витрат. Зробіть 100 викликів, подивіться на числа в usage, потім підкрутіть.

Рік тому кожен виклик Claude API працював на одній глибині — швидко, поверхнево, одна передача. Тепер ви контролюєте регулятор. Модель, яка думає 30 секунд над складним багом — це та сама модель, яка повністю пропускає thinking на задачі класифікації. Той самий ендпоінт, той самий код, три рядки конфігу різниці. Крутіть.