Раз в пару недель нам задают один и тот же вопрос: «Стоит ли дотюнить Claude на наших доменных данных?» В 2026 году почти всегда ответ нет. Длинный контекст с примерами, prompt caching, structured outputs и роутинг моделей закрыли разрыв, который раньше открывал fine-tuning. При этом они не привязывают вас к замороженному снимку базовой модели, а тот устареет через пару месяцев.
Дальше разберём, почему так, в каких случаях дообучение всё же оправдано, и посмотрим на рабочий пример: кэшированный системный промпт с 50 примерами обыгрывает дотюненную модель на извлечении данных из инвойсов.
Что такое fine-tuning Claude в 2026
Anthropic даёт дообучение для Claude Haiku и Sonnet через Amazon Bedrock, и сейчас это единственный first-party путь. Механика знакома каждому, кто тюнил модели OpenAI: загружаете JSONL с размеченными примерами, запускаете тренировку, разворачиваете кастомный эндпоинт и платите повышенную цену за токен плюс почасовой хостинг.
Проблема в экономике и в цикле итераций. С работой над промптом они не имеют ничего общего:
- Тренировка. Каждый запуск на нетривиальном датасете это единоразовые траты в 4-5 знаков.
- Хостинг. Ставка фиксированная и почасовая, обслуживаете вы один запрос или миллион.
- Токены. На дотюненном Claude цена за токен заметно выше базовой.
- Итерации. Одна попытка занимает часы, а не секунды. Запятую в датасете так не A/B-тестнёшь.
- Апгрейды. Новая базовая модель к вашему fine-tune не приезжает. Когда после Sonnet 4.6 выйдет следующий, ваша версия останется на 4.6, пока вы не перетренируете её заново.
Для команды, которая выпускает продукт, последний пункт обычно решает дело. Базовые модели в 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-кейсы, форматы и тон вашего домена. И три свойства, которых у дообучения нет:
- Мгновенная итерация. Правите JSON-файл, деплоите, готово.
- Прозрачная отладка. Модель ошиблась? Откройте примеры, на которых она обуславливалась, и прочитайте.
- Апгрейды даром. Anthropic выпускает более умный Sonnet, и ваш промпт сам становится лучше.
2. Базовая модель уже очень хороша
Эту часть никто не любит признавать. В 2024 fine-tuning на узких доменах часто давал реальный прирост. В 2026 Sonnet 4.6 из коробки отлично справляется с юридическими, медицинскими, финансовыми, кодовыми и саппорт-задачами. Дообучение нередко делает модель хуже на out-of-distribution входах, а на in-distribution прибавляет совсем немного.
Прежде чем решать, что fine-tune нужен, прогоните честный eval. Скорее всего, разрыв, который вы видели, окажется проблемой промпта.
3. Structured outputs через принудительный tool use
Допустим, на самом деле вам нужно другое: чтобы вывод каждый раз строго
соответствовал схеме. Для этого fine-tune не нужен, достаточно
форсить tool use. Опишите вывод как input_schema инструмента, выставьте
tool_choice на этот инструмент, и Claude обязан вернуть JSON,
который валидируется по вашей схеме.
В 2023 это было одной из главных причин дотюнивать модели OpenAI. На Claude в 2026 это пять строк в payload запроса.
4. Роутинг моделей ради цены
В большинстве production-пайплайнов запросы сильно различаются по сложности. Лёгкие отправляйте на gpt-5.6-luna, при падении уверенности переключайтесь на Sonnet, а Opus берегите для действительно тяжёлых случаев. Хорошо настроенный роутер сокращает общие траты на 60-80% против схемы «всё на Sonnet», и кастомное обучение для этого не требуется.
Роутер можно собрать как классификатор на gpt-5.6-luna перед Sonnet или как порог уверенности по logprobs первой модели.
В каталоге codexkey Haiku тоже есть: claude-haiku-5.5 и
claude-haiku-4.5, цены на странице моделей. Они
работают в канале Premium, в канале Cheap Haiku нет.
5. RAG для знаний, которые меняются
Вторая частая причина потянуться к fine-tune: «хотим, чтобы модель знала наши доки». Это задача поиска, а не обучения. Дообучать модель на корпусе, который обновляется каждую неделю, значит переобучаться по пятницам. Лучше построить эмбеддинги корпуса, доставать топ-чанки и подставлять их в кэшированный промпт. База знаний обновится в момент переиндексации.
Сравнение по цене
Теперь цифры. Допустим, вы обрабатываете 1M извлечений из инвойсов в месяц, в среднем 2K input и 500 output токенов.
Путь A: fine-tune Sonnet
- Разовая тренировка: ~$8K за качественный датасет и пару итераций.
- Хостинг эндпоинта: ~$2K/мес фиксированно.
- Надбавка за токен: примерно 1.5× к базовым ставкам Sonnet.
- Первый месяц: ~$15K. В установившемся режиме: ~$10K/мес.
- Переобучение после апгрейда базовой модели: ещё $8K каждые полгода.
Путь B: кэшированный 50-shot Sonnet
- 50 примеров ≈ 30K кэшированных токенов, пишутся один раз за окно кэша.
- На запрос: 30K cached input (ставка 10%) + 2K live input + 500 output.
- Итого ~$5K/мес, без тренировки и хостинга.
- Апгрейд на Sonnet 4.6, 4.8 и дальше бесплатный.
С ростом объёма разрыв увеличивается: префикс кэша делится на все запросы внутри окна.
Когда fine-tune всё же оправдан
Мы не фанатики. Три сценария дообучение действительно оправдывают:
- Доменный язык, с которым Claude буксует. Узкая научная нотация, малоресурсные неанглийские языки или собственные DSL, где даже 200-shot упирается в потолок качества.
- Извлечение с жёсткой латентностью на масштабе. Нужно sub-200ms, а бюджета на префикс кэша нет: небольшой дотюненный Haiku с коротким промптом выиграет по p99.
- Регуляторные требования к выводу. Некоторые комплаенс-режимы требуют, чтобы модель была обучена на утверждённых данных. Подсказать их на инференсе недостаточно. Случай редкий, но реальный.
Если ничего из этого не про вас, начинайте с альтернативного стека.
Код: 50-shot извлечение из инвойсов
Минимальный пример через OpenAI-совместимый эндпоинт codexkey. Системный промпт грузит JSON-файл с 50 примерами инвойсов и кэшируется, так что последующие вызовы платят только за живой текст инвойса.
import json
from anthropic import Anthropic
client = Anthropic(
api_key="sk-cxa-...",
base_url="https://api.codexkey.ru/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-5",
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на блоке с примерами снижает стоимость 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-tune
Fine-tuning Claude в 2026 остаётся рабочим инструментом, но в роли ответа по умолчанию, когда базовая модель «почти достаточно хороша», он больше не выступает. Начните с альтернативного стека: кэшированный few-shot, forced tool use, RAG для свежих знаний и роутер, который первым ставит gpt-5.6-luna. Выпускать будете быстрее, платить меньше, а каждое улучшение базовой модели от Anthropic получите бесплатно.
Чтобы попробовать кэшированный few-shot по ценам, эквивалентным
Anthropic, направьте SDK на https://api.codexkey.ru/v1:
существующий код prompt caching заработает без изменений.