
Полная версия:
ИИ без мифов
Задала чек-лист ревью из двенадцати пунктов — по одному на каждый прошлый инцидент.
Итог. Миграция заняла 31 час вместо 120 — 26 % от исходной оценки. Стоимость токенов выросла с $0.86 до $2.94, в 3,4 раза: режим рассуждений включали только для четырёх задач из одиннадцати, но каждая из них требовала второй попытки и 6–9 тысяч токенов размышления. В деньгах это три сотых процента от сэкономленных 89 часов: по ставке $70 в час экономия около $6 230, за вычетом шести часов на тесты и карточку — около $5 800. (собирательный кейс)
Отдельно стоит объяснить, откуда взялись 26 %. Айла считала не «ощущение скорости», а человеко-часы: подготовка тестов и карточки — 6 часов, одиннадцать задач с ревью — 22 часа, два возврата к человеку — 3 часа. Итого 31 час против оценки 120. Ревью каждого патча занимало 35–40 минут и не сокращалось: 120 строк патча читаются быстрее, чем 900 строк файла, но проверить их надо целиком, а не по диагонали. Экономия пришлась на переписывание, а не на проверку, и это типичное распределение: подготовка и ревью остаются человеческими, машинным становится только набор текста.
Ограничение честное. Две из четырёх «умных» задач вернулись к человеку. В спецификации провайдера было противоречие между разделом про идемпотентность (свойство операции при повторе не менять результат) и примером запроса; модель выбрала наиболее вероятное прочтение — и оно оказалось неверным. Нашёл это человек на ревью, за девяносто секунд, потому что в чек-листе был пункт «сверить идемпотентность с примером». Ещё одно: новые тесты проверяли поведение, но не производительность; регрессию по задержке поймали на нагрузочном стенде, уже после мержа.
Разбор кейса. Почему это сработало — механика, а не мораль.
1. «Перепиши файл» — это просьба открыть новое. «Предложи патч к функции, вот тесты» — просьба переупаковать известное. Второе модель делает на порядок надёжнее.
2. Тесты, написанные до запроса, превратили критерий приёмки в машину. 17 упавших тестов — не мнение ревьюера, а факт.
3. Запрет менять сигнатуры и зависимости убрал самый дорогой класс ошибок: те, что не видны в списке изменений и всплывают в другом сервисе через неделю.
4. Режим рассуждений включили не «для качества вообще», а для четырёх задач с проверяемым итогом. Остальные семь шли быстрым режимом, и это сэкономило не деньги, а минуты ожидания.
5. Шесть часов подготовки против 89 сэкономленных — соотношение, которое повторяется почти в каждом проекте, где подготовку не пропустили.
Библиотекарь, который не ходит к полкам
Представьте библиотеку с очень толковым и очень странным библиотекарем. Он прочитал всё: миллионы статей, книг, форумов, инструкций. Но работает не как библиотека. На вопрос «где лежит книга про X» он не идёт к полке. Он начинает говорить — фразу за фразой, — восстанавливая, как обычно звучит ответ на такой вопрос.
Формально модель — это функция. На вход подаётся последовательность токенов (кусков текста длиной примерно в 3–5 символов), на выходе получается распределение вероятностей для следующего токена. Один токен выбирается, приписывается к входу, и всё повторяется. Прогон обученной модели в момент запроса называется инференсом (в отличие от обучения, которое было раньше и один раз). Внутри — миллиарды чисел, весов, настроенных обучением; лежат они в тензорах, многомерных числовых массивах.
Слово «предсказание» здесь не метафора. Модель училась на частотах: как часто за последовательностью из N подряд идущих токенов — N-граммой — шёл тот или иной следующий токен. Из этих частот выросли обобщения, но механизм остался тем же. Поэтому у факта и у вымысла в модели один и тот же путь: «какое продолжение вероятнее», а не «что верно».
Отсюда расходится главная развилка, на которой ломается интуиция. База знаний отвечает на вопрос «что там лежит» и умеет сказать «такой записи нет». Функция предсказания отвечает на вопрос «что вероятнее дальше» и не имеет режима «не отвечать»: отсутствие записи для неё неотличимо от редкой записи. Когда модель придумывает эндпоинт /v2/refund, она не галлюцинирует в бытовом смысле — она продолжает правдоподобно.
Это же объясняет, почему поиск по документам (RAG, retrieval-augmented generation — поиск, дополняющий генерацию) работает и почему он не «лечит» модель, а подставляет ей текст. Модель остаётся функцией предсказания: меняется только вход. Отсюда и разница между этой главой и главой 6: они описывают два конца одной трубы.
Три следствия, которые видно в любой переписке
Следствие первое: модель даёт среднее по своей памяти, а не крайнее по правде. Попросите охарактеризовать рынок электронной коммерции — получите гладкое, вежливое, всеобъёмлющее описание, точное ровно в общих чертах. Приложите сорок интервью с клиентами и таблицу продаж — получите такое же гладкое описание, но про ваш случай. Разница между «средним» и «вашим» почти всегда определяется тем, что вы дали на входе.
Следствие второе: уверенность не связана с правильностью. Модель обучена писать так, как пишут люди: уверенно. Редкий факт и широко известный оформляются одним и тем же тоном, потому что вероятность продолжения в обоих случаях может быть высокой. Интонация не несёт информации о надёжности. Вес ответственности определяете вы, а не тон ответа.
Проверить это можно на любом справочном вопросе. Спросите модель про статью закона, номер которой вы точно знаете: ответ будет таким же уверенным, как про статью, которую вы не проверяли. Иногда номер верный, иногда — правдоподобный соседний. Отличить один случай от другого по тексту нельзя; отличает только сверка.
Следствие третье: переупаковка даётся легко, открывание — трудно. Пересказать, сменить тон, сжать, разложить по рубрикам, привести десять вариантов, преобразовать формат — это работа с уже поданным текстом, и здесь модель сильна. Сосчитать длинную сумму, вспомнить событие после обучения, восстановить редкую деталь, за которую никто не отвечал в обучающих текстах, — здесь она выдаёт правдоподобное вместо верного.
Что просите
Насколько надёжно
Чем проверять
Пересказ, смена тона, сжатие, перевод
Высоко: вход есть, выход ограничен
Сверить с исходником выборочно, 5 фрагментов
Извлечение полей в формат
Высоко при явной схеме
Схема, подсчёт строк, выборочная сверка
Классификация по вашим правилам
Средне: правила надо дать
Матрица ошибок на 50 размеченных примерах
Числа, проценты, итоги по колонке
Низко
Пересчёт формулой или кодом
Редкие факты, даты, номера, имена
Низко
Первоисточник, не модель
События после обучения
Нулевая без вашего контекста
Дата документа и внешний источник
Отсюда практическое правило: модель — это дешёвая обработка на очень большой памяти. Проверка всегда на вашей стороне и состоит из трёх вопросов.
1. На каких данных я проверяю ответ? Если ответа не с чем сверить, вы не проверяете, а соглашаетесь.
2. Какой источник я могу открыть? Не «модель сказала», а документ, база, первоисточник.
3. По какому критерию я приму или отклоню? Формат, число, отсутствие выдуманных полей.
Если вы новичок: почему модель не «знает», а «предсказывает»
- Она не хранит факты как картотека. Она хранит закономерности текста: что за чем обычно идёт.
- Поэтому на вопрос о вашей компании она ответит «как обычно бывает в таких компаниях», если вы не приложили свои документы.
- Поэтому же она не различает «я уверен» и «я угадываю»: у неё нет отдельного сигнала «этого я не знаю».
- Поэтому редкое и частое звучат одинаково. Проверять надо не по тону, а по источнику.
- Практический вывод: чем более редкое и конкретное знание вам нужно, тем больше текста вы обязаны положить на вход. И тем меньше остаётся на «она сама знает».
Два режима: ответить сразу или подумать
До сих пор речь шла о модели, которая отвечает сразу: получила запрос — и выдаёт токен за токеном до конца. Так работает быстрый режим в любом чате, и у него есть цена: на длинной цепочке ошибка накапливается, потому что каждая следующая фраза строится из предыдущей, а не из проверки.
С 2024–2025 годов в практику вошёл второй режим — модели рассуждений. Прежде чем выдать ответ, модель генерирует длинную внутреннюю цепочку шагов, черновик, который вы обычно не видите. На черновик тратится дополнительное вычисление, поэтому режим и называют вычислениями во время ответа (test-time compute): качество растёт не от новой версии модели, а от количества «подумать» в момент запроса.
Что это меняет на практике.
• Многошаговые задачи становятся надёжнее. Логика, планирование, отладка, разбор противоречий в документе — там, где быстрый режим срезает угол, черновик проходит шаги явно.
• Ответ становится медленнее и дороже. Иногда в разы: токены размышления тарифицируются как выходные, даже если вы их не видите.
• Появляется новый тип ошибки — «уверенно, подробно и неверно». Красивая цепочка вокруг неверной посылки выглядит убедительнее короткого ответа. Рассуждение не заменяет проверку фактов.
• Простые задачи решаются хуже. На «перепиши абзац» и «разложи список по алфавиту» выигрыша нет, а лишняя интерпретация появляется.
Тип задачи
Режим
Как формулировать запрос
Пересказ, перевод, смена тона, извлечение полей
быстрый
примеры «вход → выход», жёсткий формат
Классификация по готовым правилам
быстрый
список категорий, правило для спорных случаев
Расчёт, логика, планирование, поиск противоречий
рассуждение
данные, ограничения, критерий приёмки, просьба перечислить допущения
Анализ кода, проектирование решения
рассуждение
контекст системы, что нельзя менять, как проверять
Многошаговый разбор документа
рассуждение
сначала факты и цитаты, потом выводы
Правка 20 строк кода с тестами
быстрый
патч, тесты, запрет менять сигнатуры
Отсюда правило: не просите «думать по шагам». Современная модель рассуждений делает это сама, а старая формула мешает — вы навязываете чужой формат и тратите контекст. Дайте то, чего у неё нет: цель и критерий приёмки, ограничения и данные, требование перечислить допущения, формат только для результата.
Обратное тоже верно: для стиля, формата и извлечения данных примеры работают сильнее рассуждений. Три образца «как надо» дадут больше, чем просьба подумать внимательно.
Проверять режимы на своих задачах лучше не вкусом, а тремя числами. Возьмите десять задач из прошлого месяца с известным правильным ответом, прогоните обе версии и запишите: сколько прошли проверку, сколько секунд до результата, сколько стоил прогон. Дальше решение принимается арифметикой, а не спором о том, чей ответ «глубже». В кейсе с миграцией такой прогон занял сорок минут и показал, что на семи задачах из одиннадцати разница в проверках была нулевой — то есть рассуждение там оплачивало только время ожидания.
Дерево решений: когда платить за размышление
Порог включения — не про «сложность вообще», а про четыре проверяемых условия. Если задача разбивается на три и более зависимых шага — читайте дальше. Если нет, включайте быстрый режим: рассуждение на одношаговой задаче только добавляет минуту ожидания.
Если шагов три и больше, спросите, можно ли проверить итог машиной — тестами, схемой, сверкой с таблицей. Если да, рассуждение обычно оправдано: у черновика появляется обратная связь, и он реже срезает угол. Если проверить можно только на глаз, рассуждение помогает слабее: оно даёт более длинный и более убедительный текст, а не более верный.
Дальше сравните две цены. Если ошибка стоит дороже пятнадцати минут ревью — включайте. Если ошибка исправляется за минуту, а ожидание длится две, выключите: вы платите временем за страховку, которая не нужна.
И последнее условие: если задача — переупаковка уже поданного текста, режим не нужен независимо от объёма. Длинный документ, который надо сжать, — это работа с формой, а не поиск решения. Здесь побеждает быстрый режим с хорошими примерами.
Сомневаетесь — прогоните обе версии на трёх примерах и сравните не тон, а число пройденных проверок и секунды до результата. Три запуска стоят дешевле недели привычки.
Из чего складывается стоимость ответа
В счёте за модель три слагаемых, и люди обычно думают только о втором. Входные токены — всё, что вы отправили: инструкция, документы, история диалога, примеры. Выходные токены — то, что модель написала. Токены размышления — черновик режима рассуждений; вы его не видите, но платите по цене выхода.
Формула проста:
стоимость = вход * цена_входа + (выход + размышление) * цена_выхода
Возьмём условные цены порядка величин на момент написания: $3 за миллион входных токенов, $15 за миллион выходных. Документ на 60 000 токенов, вопрос на 200 токенов, ответ на 500.
Вход: 60 200 × 3 / 1 000 000 = $0.18. Выход: 500 × 15 / 1 000 000 = $0.0075.
Документ дороже ответа в двадцать четыре раза. Это первое, что стоит усвоить: в задачах с длинным контекстом платят за то, что вы приложили, а не за то, что модель написала.
Кэширование префикса меняет арифметику. Если начало запроса не меняется — один и тот же документ, одна и та же инструкция, — провайдер сохраняет вычисленное состояние и берёт за повторную часть 10–25 % цены входа. Двенадцать вопросов к одному документу без кэша: 12 × $0.18 = $2.16. С кэшем: $0.18 за первый, затем 11 × ($0.018 + $0.0075) = $0.28. Итого $0.46, в 4,7 раза дешевле — при том же документе и тех же ответах.
Задержка (latency) — время от запроса до последнего токена. Она складывается из обработки входа и генерации выхода: 60 000 токенов входа — это обычно 1,5–3 секунды до первого токена, а 500 токенов ответа при 70 токенах в секунду — ещё семь секунд. Токены размышления добавляются туда же: шесть тысяч токенов черновика — это плюс полторы минуты ожидания. Для интерактивной правки это много, для ночного пакета — нормально.
Что влияет на цену
Как это выглядит в жизни
Как снизить
Объём контекста
Документ на 60 000 токенов в каждом запросе
Приложить выдержку, а не весь архив
Повторная отправка того же
История диалога растёт с каждой репликой
Пересказывать историю своими словами, а не тащить целиком
Длина ответа
«Напиши подробно» на десять страниц
Ограничить объём и формат
Токены размышления
Режим включён «на всякий случай»
Порог из четырёх условий
Кэш префикса
Порядок блоков в запросе меняется
Постоянное начало, переменное — в конце
Повторы и ретраи
Три попытки на каждую задачу
Критерий приёмки вместо перебора
Класс модели
Пограничная модель на переименовании полей
Разные модели на разные задачи
Практический вывод для бюджета: считайте не цену одного запроса, а цену цикла «запрос — ревью — правка». В кейсе с миграцией один цикл на сложной задаче стоил около $0.60 вместе со второй попыткой, и это было в сто с лишним раз дешевле часа инженера. Дорого там, где контекст большой, а работа мелкая: типичный пример — «сколько строк в этом договоре упоминают штраф» при договоре на 80 000 токенов и ответе в одно слово.
Есть и вторая цена у длинного контекста, не денежная. Чем больше вход, тем слабее внимание к его середине: инструкция, лежащая в середине стотысячного документа, теряет вес. Поэтому длинный контекст — не бесплатное расширение памяти, а компромисс: вы платите за токены, за задержку и за то, что часть документа модель прочитает хуже. Дешёвый способ обойти это — не тащить весь архив, а сначала извлечь релевантные страницы поиском и приложить их.
Ещё одно следствие для планирования: пакетная обработка. Если ответ не нужен сию минуту и провайдер даёт пакетную скидку, двести запросов ночью обойдутся дешевле двадцати интерактивных днём. Разница не в модели, а в том, что вы не платите за ожидание и можете брать более дешёвый класс модели там, где качество проверяется автоматически.
Под капотом: токенизация, эмбеддинги, внимание, сэмплирование
Архитектура современных больших языковых моделей почти универсальна — трансформер. Упрощённо: миллиарды весов, разложенных по слоям, и каждый слой по-своему оценивает, какие фрагменты контекста важны для продолжения.
1. Токенизация. Текст режется на токены, чаще 3–5 символов. Одна и та же фраза на разных языках даёт разное число токенов: русский текст дороже английского и по цене, и по скорости. До нейросетей язык моделировали проще — считали частоты последовательностей из N слов, н-грамм (n-gram); именно оттуда пришла сама формула «предсказать следующее слово по предыдущим», которую сегодня считает трансформер.
2. Эмбеддинги. Каждый токен превращается в вектор чисел, где близость кодирует смысловую близость. Поэтому работает поиск по смыслу: «как повысить продажи» лежит рядом с «как увеличить выручку». Внутри модели эти векторы живут не поодиночке, а в многомерных массивах — тензорах, и вся арифметика сети — это операции над ними.
3. Внимание (attention). На каждом шаге модель присваивает вес каждому элементу контекста — больший или меньший. Практическое следствие: модель не «держит» весь документ, она выбирает, что считать ключевым. Поэтому порядок данных влияет: важное лучше держать в начале и в конце, а не в середине простыни.
4. Сэмплирование. На выходе — распределение вероятностей всех возможных токенов. Температура определяет, как выбирается кандидат: ближе к нулю — стабильнее и воспроизводимее, выше — разнообразнее. Для извлечения полей температура около нуля, для «придумай десять названий» — высокая.
5. Нет состояния между запросами. Каждый запрос начинается с нуля. «Помнишь, что мы говорили вчера» — нет, если этот диалог не подан в текущий контекст. Никакой личности и отношений технически не существует.
6. Режим рассуждений — те же токены, потраченные на черновик. Цепочка генерируется так же, как обычный текст, и тарифицируется как выход. Зато надёжность на многошаговых задачах растёт предсказуемо — пока задача не упрётся в неверную посылку или отсутствующий факт.
Под капотом: бюджет размышления и где он перестаёт помогать
Черновик — обычная генерация, только длинная. Модель не «думает дольше» в человеческом смысле: она выдаёт больше токенов, каждый из которых может быть неверным. Отсюда два ограничения.
Первое: помощь убывает. На задачах с проверяемым итогом (тесты, схема, арифметика кодом) рост бюджета даёт предсказуемое улучшение, а потом упирается в потолок. На задачах без проверки лишние шаги часто добавляют уверенности, а не правильности: модель перебирает правдоподобные варианты и выбирает самый гладкий.
Второе: черновик оплачивается как выход и занимает время. Шесть тысяч токенов размышления — это примерно полторы минуты и $0.09 при цене $15 за миллион. Если таких запросов двести в день, разница между «включено всегда» и «включено по порогу» — это часы ожидания и заметная строка в счёте.
Отсюда же происходит дистилляция: компактную модель обучают на выходах большой, включая удачные цепочки рассуждений. Получается дешёвый исполнитель для узкого класса задач, где большая модель уже нашла рабочий ход. Дистиллят не «умнее» учителя, он повторяет его поведение на похожих входах — и на непохожих деградирует быстрее.
Открытая, пограничная, дистиллированная
Три класса моделей различаются не «качеством», а тем, что вы покупаете вместе с токеном.
Открытая модель — с опубликованными весами: её можно запустить на своём железе, дообучить, завернуть в закрытый контур. Цена за токен ниже, но вы платите инфраструктурой, инженером и ответственностью за обновления. Разумна там, где данные не должны покидать контур или запросов очень много и они однотипные.
Пограничная модель — самая крупная, доступная через API. Дороже, медленнее, лучше на редких и запутанных задачах. Её берут не «на всё», а на то, где ошибка дороже токенов: разбор противоречий, планирование, сложный код. Именно на таких редких случаях — их называют гранями (edge-case) — модель и проверяют перед покупкой: десять нормальных запросов ничего не покажут, а один странный покажет всё.
Дистиллированная — компактная, обученная на выходах большой. Даёт близкое качество на узком классе задач при цене в разы ниже и задержке в разы меньше. Хороша для массовой рутины: извлечение полей, классификация, переписывание по шаблону. Плоха там, где нужен новый ход, которого не было в обучающих примерах.
До / После: «перепиши файл целиком»
До. «Перепиши весь файл целиком, код устарел, сделай чисто и современно. Добавь обработку ошибок».
Что происходит: модель открывает новое там, где нужно переупаковать старое. Она выбрасывает то, чего не понимает, потому что в обучающих текстах «чистый современный код» выглядит без этих обработчиков. Она переименовывает функции, потому что «так чище». Она дописывает эндпоинт, потому что «так обычно бывает у провайдеров». Проверить нечего: критерия нет, тестов в запросе нет, границ нет.
После. «Ты — инженер, который переносит внутренний сервис на новую версию HTTP-клиента. Задача: изменить функцию handle_callback так, чтобы она работала с клиентом версии 2, не меняя поведения».
«Контекст: файл billing_router.py (1 400 строк, прилагаю), 38 тестов (прилагаю), внутренний клиент pay_client (прилагаю). Публичные сигнатуры handle_callback, parse_response, refund менять нельзя: их вызывают два других сервиса. Внутренний клиент нельзя заменять на сторонний: в нём ретраи с экспоненциальной паузой».
«Ограничения: не менять схему ошибок; не добавлять новых эндпоинтов; не удалять обработчики таймаута, частичного ответа и повторного списания; размер патча — не больше 120 строк».
«Формат ответа: патч в виде diff (список изменённых строк), затем список рисков из 3–5 пунктов, затем строка проверки: сколько тестов из 38 проходят, какие падают и почему. Если поведение нельзя сохранить — не придумывай обход, напиши „требуется решение человека“ и укажи, какое именно».
«Критерий приёмки: 38/38 тестов проходят, публичные сигнатуры не изменены, патч не длиннее 120 строк».
Что изменилось, по пунктам.
1. Появился вход в виде файлов и тестов. Модель больше не решает, что считать «устаревшим», — она видит границы работы.
2. Появился запрет на переупаковку в «новое». Три обработчика и внутренний клиент перечислены явно, и их исчезновение стало бы нарушением, а не творчеством.
3. Появился формат патча вместо файла. Патч читается за минуты и не прячет удалённые строки в общем объёме.
4. Появилась проверка на выходе: 38/38 и список рисков. Ревью сводится к сверке трёх чисел, а не к чтению 900 строк.
5. Появился выход для тупика: «требуется решение человека». Это самое дешёвое изменение в запросе и самое недооценённое — оно отделяет незнание модели от вашей задачи.
Чего в новом запросе нет: ни одного прилагательного о качестве, ни просьбы постараться, ни объяснений, зачем это нужно. Всё оставшееся — проверяемые условия. Поэтому такой запрос переиспользуется через месяц без изменений.
Красные флаги: язык, который выдаёт незнание
- «Нейросеть знает факты о вашей компании» — она знает тексты, которые вы ей дали. Без них будет среднее по интернету.
- «Модель запомнит на будущее» — в стандартном чате памяти между диалогами нет; вчерашний контекст надо подавать заново.
- «Она скажет то, чего вы не знали» — скажет, и проверить это будет нечем. Новизна ответа не признак знания.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».

