Раз в пару недель команды задают нам один и тот же вопрос: «Стоит ли дотюнить Claude на наших доменных данных?» В 2026 году ответ почти всегда — нет. Связка длинноконтекстного few-shot, prompt caching, structured outputs и роутинга моделей тихо закрыла тот разрыв, который fine-tuning раньше открывал, — и делает это без привязки к замороженному снимку базовой модели, который устареет через два месяца.
Этот пост объясняет, почему так, когда fine-tune всё же оправдан, и показывает рабочий пример, где кэшированный 50-shot системный промпт обыгрывает дотюненную модель на извлечении данных из инвойсов.
Ландшафт fine-tuning в 2026
Anthropic предоставляет fine-tuning для Claude Haiku и Sonnet через Amazon Bedrock — это сейчас единственный first-party путь. Механика знакома всем, кто тюнил OpenAI: загружаете JSONL с парами вход/выход, запускаете тренировочный джоб, разворачиваете кастомный эндпоинт и платите премиальную цену за токен плюс почасовой хостинг.
Подвох в том, что экономика и итерационная петля выглядят совсем не как у prompt engineering:
- Стоимость тренировки — единоразовые 4–5 знаков за серьёзный датасет.
- Хостинг — фиксированная почасовая ставка, обслуживайте вы один запрос или миллион.
- Цена за токен на дотюненном Claude ощутимо выше базовой.
- Скорость итерации — часы, а не секунды. Запятую так не A/B-тестнёшь.
- Апгрейды базовой модели не наследуются. Когда выйдет Sonnet 4.7, ваш fine-tune останется на 4.6, пока вы не перетренируете.
Для команды, которая шипит продукт, последний пункт обычно сам по себе дисквалифицирует fine-tune. Темп улучшения базовых моделей в 2025–2026 такой, что полугодовалый fine-tune часто проигрывает свежей базовой модели вообще без кастомизации.
Альтернативный стек
Вот четыре компонента, которые мы рекомендуем попробовать прежде, чем вы вообще задумаетесь о fine-tune. По нашему опыту, они закрывают ~90% случаев, когда командам кажется, что нужен fine-tune.
1. Few-shot примеры в кэшированном системном промпте
У Sonnet 4.6 контекст 200K токенов. Этого хватает на 50–200 качественных пар вход/выход из вашего домена. С prompt caching эти примеры токенизируются один раз, на следующих вызовах оплачиваются примерно по 10% от input-ставки и доступны почти бесплатно следующие пять минут.
В итоге вы получаете большую часть пользы от fine-tuning — модель действительно видела edge-кейсы, форматы и тон вашего домена — с тремя свойствами, которых fine-tune дать не может:
- Мгновенная итерация. Поправили JSON-файл, передеплоили — готово.
- Прозрачная отладка. Если модель ошиблась, можно прочитать те примеры, на которых она обуславливалась.
- Бесплатные апгрейды модели. Anthropic выкатывает более умного Sonnet — ваш промпт автоматически становится лучше.
2. Базовая модель уже очень хороша
Это часть, которую никто не хочет признавать. В 2024 fine-tuning часто давал реальный прирост на узких доменах. В 2026 Sonnet 4.6 «из коробки» действительно отлично работает на юридических, медицинских, финансовых, кодовых и саппорт-задачах — настолько, что fine-tune нередко делает модель хуже на out-of-distribution входах, лишь скромно прибавляя на in-distribution.
Прогоните честный eval, прежде чем верить, что вам нужен fine-tune. Вы часто обнаружите, что разрыв, который вы видели, — это проблема промпта.
3. Structured outputs через принудительный tool use
Если настоящая причина желания fine-tune — «нам нужно, чтобы вывод
каждый раз строго соответствовал схеме», — fine-tune не нужен. Нужно
форсить tool use. Опишите вывод как input_schema инструмента,
выставьте tool_choice на этот конкретный tool — и Claude обязан
вернуть JSON, валидирующийся по вашей схеме.
В 2023 это было одной из основных причин дотюнивать модели OpenAI. На Claude в 2026 это пятистрочное изменение в payload запроса.
4. Роутинг моделей ради цены
В большинстве production-пайплайнов запросы сильно различаются по сложности. Простые отправляйте на Haiku, эскалируйте на Sonnet при падении уверенности, Opus оставьте на действительно тяжёлые случаи. Хорошо настроенный роутер режет общие траты на 60–80% относительно «всё на Sonnet» — без какого-либо кастомного обучения.
Роутер можно реализовать как Haiku-классификатор перед Sonnet или как порог уверенности по logprobs первой модели.
5. RAG для знаний, которые меняются
Вторая популярная причина тянуться к fine-tune — «хотим, чтобы модель знала наши доки». Это retrieval, а не training. Дотюнивать модель на корпусе, который обновляется еженедельно, — операционное безумие: переобучаться по пятницам? Эмбеддите корпус, доставайте топ-чанки, вставляйте в кэшированный промпт. База знаний обновляется в момент переиндексации.
Сравнение по цене
Положим цифры. Допустим, вы обрабатываете 1M извлечений из инвойсов в месяц, в среднем 2K input и 500 output токенов.
Путь A — fine-tune Sonnet:
- Разовая тренировка: ~$8K за качественный датасет и пару итераций.
- Хостинг эндпоинта: ~$2K/мес фикс.
- Премия за токен: примерно 1.5× к базовым Sonnet ставкам.
- Месяц 1: ~$15K. Стационар: ~$10K/мес.
- Перетюнинг при апгрейде базы: ещё $8K каждые полгода.
Путь B — кэшированный 50-shot Sonnet:
- 50 примеров ≈ 30K кэшированных токенов, пишутся раз за окно кэша.
- На запрос: 30K cached input (10%-ставка) + 2K live input + 500 output.
- Итого: ~$5K/мес, без тренировки и хостинга.
- Бесплатный апгрейд на Sonnet 4.7, 4.8 и далее.
С ростом объёма разрыв увеличивается, потому что префикс кэша амортизируется по всем запросам внутри окна.
Когда fine-tune всё же оправдан
Мы не абсолютисты. Три сценария реально оправдывают дотюнинг:
- Доменный язык, с которым Claude буксует. Узкая научная нотация, низкоресурсные неанглийские языки или собственные DSL, где даже 200-shot упирается в потолок качества.
- Извлечение, критичное к латентности, на масштабе. Если нужно sub-200ms и нет бюджета на префикс кэша — небольшой дотюненный Haiku с коротким промптом выиграет по p99.
- Регуляторные требования к выводу. Некоторые комплаенс-режимы требуют, чтобы модель была обучена на одобренных данных, а не просто обусловлена ими на инференсе. Редко, но встречается.
Если ничего из этого не про вас — начните с альтернативного стека.
Код: 50-shot извлечение из инвойсов
Минимальный пример через OpenAI-совместимый эндпоинт Claudexia. Системный промпт грузит JSON-файл с 50 примерами инвойсов и кэшируется так, что последующие вызовы платят только за живой текст инвойса.
import json
from anthropic import Anthropic
client = Anthropic(
api_key="sk-cxa-...",
base_url="https://api.claudexia.tech/v1",
)
# Загружаем 50 пар вход/выход из вашего gold-датасета
with open("invoice_exemplars.json") as f:
exemplars = json.load(f)
few_shot_block = "\n\n".join(
f"<example>\n<invoice>{ex['input']}</invoice>\n"
f"<extracted>{json.dumps(ex['output'])}</extracted>\n</example>"
for ex in exemplars
)
EXTRACT_TOOL = {
"name": "record_invoice",
"description": "Сохранить структурированные данные инвойса.",
"input_schema": {
"type": "object",
"properties": {
"invoice_number": {"type": "string"},
"issue_date": {"type": "string"},
"vendor": {"type": "string"},
"total_amount": {"type": "number"},
"currency": {"type": "string"},
"line_items": {"type": "array"},
},
"required": ["invoice_number", "vendor", "total_amount"],
},
}
def extract(invoice_text: str):
return client.messages.create(
model="claude-sonnet-4.6",
max_tokens=1024,
system=[
{
"type": "text",
"text": "Ты — система извлечения данных из инвойсов. "
"Точно следуй формату и обработке edge-кейсов "
"из примеров.",
},
{
"type": "text",
"text": few_shot_block,
"cache_control": {"type": "ephemeral"},
},
],
tools=[EXTRACT_TOOL],
tool_choice={"type": "tool", "name": "record_invoice"},
messages=[{"role": "user", "content": invoice_text}],
)
Тяжёлую работу делают три вещи:
cache_controlна few-shot блоке опускает стоимость 30K-токенного набора примеров примерно до 10% от обычной input-ставки на запрос.tool_choiceфорситrecord_invoice— ответ гарантированно валидный JSON по вашей схеме. Никаких regex-парсеров и retry-петель на кривом выводе.- Сами примеры обуславливают модель на ваши форматы вендоров, валютные конвенции и edge-кейсы строк.
Eval до и после
Честная версия совета: измеряйте. Прежде чем коммититься в любой путь, соберите held-out eval из 200–500 реальных входов с gold-метками. Затем прогоните:
- Базовый прогон: Sonnet 4.6 с однопараграфным системным промптом.
- Few-shot cached: та же модель, 50-shot кэшированный промпт + forced tool.
- Fine-tune: только если 1 и 2 не дотягивают.
На наших внутренних бенчмарках по извлечению из инвойсов, классификации саппорт-тикетов и тегированию пунктов договоров конфигурация #2 совпадала или била fine-tune той же модели в 7 случаях из 10 — при меньшей цене и итерации в день.
Итог
Fine-tuning Claude в 2026 — реальный инструмент, но он больше не дефолт, когда базовая модель «почти достаточно хороша». Сначала попробуйте альтернативный стек: кэшированный few-shot, forced tool use, RAG для свежих знаний и Haiku-first роутер. Будете шипить быстрее, платить меньше и бесплатно наследовать каждое улучшение базовой модели, которое выкатывает Anthropic.
Если хочется поэкспериментировать с кэшированным few-shot по ценам,
эквивалентным Anthropic, направьте SDK на https://api.claudexia.tech/v1
— существующий код prompt caching заработает без изменений.