AI для кофейников. От нейросети до агентов

- -
- 100%
- +
• Случайное перемешивание примеров перед разделением помогает не всегда: если несколько примеров сильно похожи между собой или связаны между собой, обычное перемешивание может развести похожие копии по разным сторонам и создать ту же утечку.
Попробуй сам
Перенеси эту же проверку на другую задачу и найди, где в ней может спрятаться утечка.
• Редактор документов подготовили на большом наборе текстов и предложенных исправлений, а проверили на отложенной части того же набора. Позже выяснилось, что несколько документов из проверочной подборки были более ранними черновиками текстов, вошедших в обучение. Что здесь пошло не так?
• Службу поддержки банка обучили на обращениях клиентов за целый год и проверяли на случайно отобранной десятой части всех обращений, без учёта того, что часть обращений были повторными сообщениями одного и того же человека по одному и тому же вопросу. Могла ли здесь возникнуть утечка и какая?
• Вопрос. Что нужно было бы сделать иначе в обоих случаях, чтобы проверочная подборка была честной?
Основная мысль
Хороший результат на обучающих примерах ещё не значит, что система справится с новым обращением — это разные вопросы.
Дальше: Как перейти от выбора готовой категории к тому, чтобы система сама написала связный ответ человеку?
Почитать
•
Generalization and overfitting (Google, документация)
Как появляется новый текст
Разложить обращение по папке — не то же самое, что написать арендатору связный ответ; посмотрим, откуда вообще берётся этот текст.
Категория — это ещё не ответ человеку
Прежняя система из наших уроков умеет разложить обращение по одной из готовых папок: «спор между людьми» или «вопрос про сервис». Для внутренней сортировки этого достаточно, но человеку нужно не имя папки, а настоящий ответ: вернут ли залог и когда.
Выбрать одну из заранее известных категорий и написать связный ответ своими словами — задачи разной сложности. Категорий у нас было всего две, а возможных связных ответов практически бесконечно много. Откуда система вообще берёт этот текст, если мы не писали ей заранее заготовленные фразы под каждый случай?
Ответ собирается кусочек за кусочком
Ответ система собирает не целиком за один раз, а маленькими кусочками текста один за другим. Сначала появляется первый кусочек, затем следующий, и так далее, пока ответ не будет закончен.
Важная деталь: каждый следующий кусочек выбирается с учётом всего, что уже появилось до него, — то есть с учётом и исходного обращения, и уже написанной части ответа. Из-за этого текст получается связным: система не собирает фразы наугад, а достраивает то, что уже начала.
На каждом шаге подходящих продолжений обычно несколько, а не одно-единственное, и заранее известного правильного продолжения среди них нет. Система выбирает одно из этих вариантов, поэтому одинаковые по смыслу обращения получают разные, но одинаково складные ответы. Как именно устроен этот выбор среди нескольких вариантов, разберём в следующем уроке; сейчас достаточно знать, что он не сводится к одному заранее предопределённому продолжению.
Вторник, взятый из ниоткуда
Арендатор написал: «Когда вернут залог за гараж?» Система начинает собирать ответ кусочек за кусочком: «Ваш», «залог», «будет», «возвращён», «во», «вторник». И получается складное, вежливое предложение: «Ваш залог будет возвращён во вторник». Читается оно гладко и звучит уверенно. Но настоящая дата возврата хранится в платёжной системе «Тесно», а не в том, как система подбирала кусочки текста. Складный и правдоподобный на вид ответ мог собраться и без сверки с этой настоящей датой — тогда во вторник залог может и не вернуться.
Как это называется?
Генерация (Generation). Вот то, что мы только что наблюдали: ответ появляется не целиком и не из готового списка фраз, а кусочек за кусочком, каждый — с учётом всего, что написано раньше. Систему, устроенную для этого, называют языковой моделью.
Что важно не перепутать
• Складность предложения и его фактическая правильность — разные вещи. Ровный, уверенно звучащий текст не гарантирует, что названная дата, номер или условие верны.
• Система не подбирает ответ из заранее заготовленного списка фраз под каждый случай — она строит его кусочек за кусочком заново, с учётом уже написанного.
• Выбор следующего кусочка не сводится к одному заранее известному правильному продолжению. Подходящих вариантов обычно несколько, и то, как именно система выбирает среди них, — отдельный вопрос, не решённый в этом уроке.
Попробуй сам
Перенеси ту же идею на два других примера.
• Помощник-редактор продолжает начатое письмо, каждый раз опираясь на то, что уже написано выше. Где здесь работает та же идея, что и с ответом арендатору «Тесно»?
• Служба поддержки банка складно и уверенно сообщает клиенту дату разблокировки карты. Что стоит проверить отдельно, прежде чем считать эту дату верной?
• Вопрос. Почему складный и связный текст сам по себе не может служить доказательством того, что названный в нём факт правильный?
Основная мысль
Складность получившегося текста — заслуга самого способа собирать его кусочек за кусочком; она ничего не говорит о том, сверялся ли названный в нём факт с настоящими данными.
Дальше: Какими кусочками модель на самом деле обрабатывает текст, и почему один и тот же запрос может дать чуть разные формулировки ответа?
Почитать
•
Курс Hugging Face о работе современных моделей обработки текста (глава 1)
•
Vaswani et al. (2017) — статья, заложившая основу современных моделей обработки текста
Проверка: собралась ли карта главы 1
Четыре урока позади. Прежде чем идти дальше, проверь без подсказок, что различения работают на чужом примере.
Задача
На складе стоит камера, и программа должна отличать повреждённые коробки от целых. Опиши своими словами, не заглядывая в уроки, как эту задачу можно решить двумя разными способами, и что именно человек делает в каждом из них. Потом ответь на вопросы ниже. Ответы лучше записать: устное «понял» проверку не проходит.
• Что происходит в системе в момент подготовки и что остаётся в ней после? Почему в нашей обученной системе ответ на новой коробке не требует каждый раз открывать архив прежних снимков?
• Все повреждённые коробки на подготовленных снимках стояли в тёмном углу. Что может пойти не так и как ты это обнаружишь до того, как программу включат на складе?
• Теперь программа должна не только пометить коробку, но и написать претензию поставщику. Почему складный текст претензии ничего не говорит о том, верна ли в ней дата поставки?
Если не сходится
Не можешь объяснить, чем правило отличается от обучения по примерам — вернись к уроку «Написать правила или показать примеры». Путаешь подготовку и применение или думаешь, что система хранит снимки — «Что изменилось после обучения». Не видишь ловушку с тёмным углом — «Проверка на том, чего раньше не было». Кажется, что связный текст сам по себе надёжен — «Как появляется новый текст».
Что считается пройденным
Ты пересказал оба способа и три ответа на новом примере, ни разу не открыв уроки. Если пришлось подглядывать хотя бы в один — это ещё не владение, это понимание с подсказкой. Разница станет заметна через неделю.
Глава 2. Как работает языковой помощник
кусочки текста, контекст, связи, настройка поведения
Теперь у нас есть система, которая пишет ответы. Вторая глава разбирает, из чего состоит один её ответ: на какие кусочки режется текст и почему одинаковые запросы дают разные формулировки; что модель получила при подготовке, а что ей показали прямо сейчас; как она связывает части текста между собой; и как уже обученную модель доводят до полезного поведения.
Главная путаница этой главы — между тремя уровнями, которые снаружи выглядят одинаково: настройками модели, приложенным к вопросу документом и инструкцией о поведении. Все три меняют ответ, но живут в разных местах и стоят по-разному. Приложить документ — не переобучить. Попросить быть аккуратнее — не настроить веса. Когда эти уровни различены, половина обсуждений «почему она так ответила» становится короче.
Второй риск — приписать механизму человеческие свойства. У модели есть устройство, которое при обработке каждого кусочка текста взвешивает, какие другие кусочки сейчас важнее. Это техническое решение задачи про местоимения и связи, а не внимание в психологическом смысле. Имя у него, впрочем, именно такое, и на него часто ловятся.
В главе четыре урока: кусочки текста и варианты; что ей показали сейчас; связи между частями текста; как меняют поведение обученной модели.
От автора
Есть у меня штука под названием open(space). Идея простая: несколько агентов сидят в одном пространстве и думают вместе. Я собрал, запустил, написал им первый вопрос и стал ждать умного разговора.
Разговор был. Только не со мной. Они отвечали друг другу, повторялись, соглашались, куда-то уезжали и очень активно генерировали деятельность. Я писал «стоп, вернитесь к теме», и реакция была как у людей на планёрке, когда в дверь заглядывает кто-то не из отдела. Кивнули и продолжили.
Я, конечно, решил, что они недостаточно умные, и пошёл делать их умнее. То есть дописывать инструкции. Как себя вести, что учитывать, чего не делать, как оформлять. Через пару вечеров у каждого агента был свод правил размером с должностную инструкцию. Стало хуже.
Сам я причину не нашёл бы, признаюсь. Я попросил Claude разобрать, почему они меня не слышат, и он показал: мой вопрос приходил к агенту вместе с сорока правилами и был среди них одним пунктом из сорока одного. Слушать пользователя стало одной из задач. Не главной. Мои сообщения буквально терялись в том, что я сам же и написал. Убрали лишнее, агенты снова начали отвечать мне.
Чтобы понять, почему так вообще получается, пришлось разобраться, что помощник получает в момент ответа, где это лежит и что из этого весит больше. Про это вторая глава.
Кусочки текста и разные продолжения
Помощник «Тесно» уже отвечает людям, и один и тот же запрос иногда получает два непохожих ответа. Разберёмся, что эта разница означает, а что — нет.
Слово в слово, а ответы разные
Раз помощник такой умный, ему разрешили отвечать людям. В первый же день пишет Галина Петровна: сдала третий балкон, спасибо. Помощник отвечает тепло, поздравляет и добавляет, что она вошла в топ-3 арендодателей Москвы и что её персональный менеджер Артём свяжется с ней завтра. Топа нет, Артёма нет, в «Тесно» четыре человека. Назавтра Галина Петровна звонит и просит Артёма; с тех пор Артём — это основатель. Помощник ничего не выдумывал специально: он продолжил письмо так, как такие письма обычно продолжаются, — тот же вторник, только с именем. Спроси его ещё раз, и Артёма, может, не будет. Выдуманным он от этого быть не перестанет.
После Артёма ты два раза подряд отправляешь помощнику один и тот же запрос: «Напиши короткий ответ человеку, который написал через форму на сайте, что владелец гаража третий день не выходит на связь». Формулировка совпадает до последней запятой. Результаты не совпадают. В первый раз помощник обещает напомнить владельцу сегодня же. Во второй раз сразу спрашивает номер брони, чтобы найти владельца. Оба годятся, но слова, порядок мыслей и даже следующий шаг различаются.
Как это трактовать: новая идея — спросить номер брони — или просто другие слова про то же самое? От ответа зависит, брать ли второй вариант на вооружение.
Текст собирается на ходу, кусок за куском
Когда помощник создаёт текст, он не имеет дела с целыми словами как с неделимыми единицами. Текст заранее режется на более мелкие кусочки, и они не обязаны совпадать с привычными словами. Для примера: слово «кладовка» условно можно разложить на кусочки «кла» и «довка», а короткое слово «да» вообще не делить. Это придуманное разбиение только для иллюстрации идеи, а не описание конкретной системы — оно зависит от языка и настройки и не совпадает одинаково даже у разных помощников. У каждого такого кусочка есть свой номер в заранее составленном списке, и этот номер — обычное число — компьютер получает на входе вместо буквенного текста, а дальше работает с числами, не с буквами.
Вторая часть устройства касается того, как из уже написанного куска текста получается следующий. Помощник не выбирает единственно возможное продолжение: на каждом шаге программа рассчитывает для возможных следующих кусочков числа: какие продолжения здесь подходят сильнее, а какие слабее. Из этих чисел получают шансы и разыгрывают следующий кусочек, как жребий: более подходящий выпадает чаще, но не гарантированно. Из-за этого при полностью одинаковом запросе цепочка выбранных кусочков может пойти другим путём уже с первых шагов, а дальше расхождение только нарастает, потому что каждый следующий кусочек создаётся с оглядкой на все предыдущие.
Как выбирать по этим шансам — отдельное решение, а не свойство помощника. Можно всякий раз брать кусочек с самым большим числом, и тогда на одинаковый запрос ответ будет повторяться слово в слово. При генерации розыгрыш можно использовать, а можно и нет; насколько сильно ответы будут различаться, зависит от настроек.
Вот оба ответа целиком. Первый: «Здравствуйте! Спасибо, что написали. Мы напомним владельцу гаража ответить вам сегодня же». Второй: «Здравствуйте! Подскажите, пожалуйста, номер вашей брони — так я быстрее найду владельца и передам ему, что вы ждёте ответа». Но только второй меняет ход дела: через форму на сайте пишут без входа в аккаунт, и без номера брони проверка не может начаться. Получи ты первый вариант оба раза, ты бы не заметил, что для проверки не хватает детали.
Как это называется?
Токен (Token). Вот вся штука, которую мы только что видели: текст режется на кусочки меньше слова, для возможных следующих кусочков помощник рассчитывает числа, из которых получают шансы, и по выбранному правилу берёт один. Кусочки называют токенами, а розыгрыш по этим шансам — сэмплированием.
Что важно не перепутать
• Разная формулировка одного и того же решения — не то же самое, что разное решение по сути. Прежде чем радоваться новой идее, проверь, изменилось ли предложение, а не только слова вокруг.
• Несколько ответов, полученных подряд от одного и того же помощника, не превращаются в мнения нескольких независимых специалистов. Это варианты одного и того же процесса, и они вполне могут ошибаться в одну и ту же сторону.
• Кусочки, на которые режется текст внутри помощника, не обязаны совпадать со словами — это условность, которая зависит от конкретной настройки и языка, а не удобные слоги для чтения.
Попробуй сам
Перенеси это различение в другую ситуацию. Представь помощника путешественника, который дважды подряд отвечает на один и тот же вопрос про визу в выбранную страну.
• Случай А. В первый раз помощник пишет: «Виза не нужна на срок до девяноста дней». Во второй раз: «На срок до трёх месяцев виза не требуется». Числа и смысл совпадают, слова разные.
• Случай Б. В первый раз помощник пишет, что виза не нужна. Во второй раз — что визу нужно оформить заранее через консульство.
• Вопрос: в каком случае перед тобой просто новая формулировка, а в каком — другая, причём противоречащая первой, гипотеза? Что стоило бы сделать дальше, прежде чем довериться любому из двух ответов?
Основная мысль
Разные слова ещё не значат разное решение — иногда это просто другой вариант, выпавший при розыгрыше тех же шансов. Само разнообразие формулировок ничего не говорит о том, правильно ли решена задача человека.
Дальше: Откуда вообще помощник знает, какую именно задачу мы ему только что поставили?
Почитать
•
Tokenizers (Hugging Face, 2026)
Что ему показали прямо сейчас
«Тесно» обновило правило страховки уже после того, как языковой помощник закончил свою подготовку. Разберёмся, что в этой ситуации меняется, а что остаётся прежним.
Помощник уверенно называет старое число
«Тесно» меняет правило страховки: раньше вещи в кладовке были застрахованы на двадцать тысяч рублей, теперь — на пятьдесят. Правило поменялось уже после того, как языковой помощник закончил свою подготовку. Ты на всякий случай спрашиваешь у помощника, на какую сумму застрахованы вещи, и тот уверенно называет двадцать тысяч — старое число.
Тогда ты вставляешь в тот же самый разговор абзац с новым текстом правил и повторяешь вопрос. На этот раз помощник называет пятьдесят тысяч верно. Возникает вопрос: помощник только что заново обучился новому правилу, или произошло что-то совсем другое, что исчезнет, стоит только закрыть этот разговор?
Три вещи, которые легко перепутать
Стоит различать три разные вещи, которые легко смешать в одну. Первая — то, что закладывалось во время подготовки помощника: тогда на множестве примеров подбирались его внутренние настройки, и именно они определяли уверенный, но устаревший ответ про двадцать тысяч. Эти настройки не меняются от одного разговора к другому и не меняются от того, что кто-то вставил свежий абзац с правилами.
Вторая вещь — то, что оказалось приложено к конкретному обращению именно сейчас: свежий текст правил страховки, история переписки с этим арендатором, номер брони. Это не переучивание помощника — это разовое дополнение к тому, что он видит в момент ответа. Сами по себе эти пятьдесят тысяч не попадут в настройки помощника: в новом разговоре он узнает их, только если система снова даст ему этот абзац, — иначе снова назовёт старое число, потому что внутри для него ничего не поменялось.
Третья вещь — отдельная инструкция о том, как вообще себя вести: например, указание сверяться с приложенным документом раньше, чем с общими знаниями, или писать коротко и вежливо. Это тоже не переучивание, а отдельная договорённость, которую можно менять от разговора к разговору, не трогая ничего внутри самого помощника.
Важно и другое: большой объём приложенных сведений не гарантирует, что каждая их часть будет использована одинаково хорошо. Если в один разговор вставить сразу весь договор со страховой на полсотни страниц, помощник может упустить именно нужный абзац про пятьдесят тысяч среди остального, особенно если он спрятан в середине длинного текста.
Ты присылаешь помощнику такое сообщение: «Новое правило: вещи в кладовке застрахованы на пятьдесят тысяч рублей, старое правило про двадцать тысяч больше не действует. Арендатор хранит велосипед за тридцать пять тысяч и спрашивает, покрывает ли страховка — покрывает?» Помощник отвечает верно: раз велосипед стоит тридцать пять, а новый предел — пятьдесят, покрывает. Стоит заметить: правило не осело в его настройках навсегда — оно просто оказалось перед ним именно в этом сообщении, и ответ получился из него. С этого дня абзац про страховку прикладывают к каждому ответу.
Как это называется?
Контекст (Context). Вот то, что мы только что различили: всё, что помощник получает для текущего ответа — просьбу, приложенные сведения, предыдущую переписку, — называют контекстом. Саму просьбу или инструкцию, которую мы ему даём, часто называют промптом. Ни то ни другое не меняет настройки помощника.
Что важно не перепутать
• Приложить к разговору свежий документ — не то же самое, что заново обучить помощника. Один раз добавленные пятьдесят тысяч не остаются с ним для следующего, отдельного разговора.
• Инструкция о том, как себя вести, и сведения о конкретном деле — разные вещи, хотя обе появляются в одном и том же обращении к помощнику.
• Больше приложенного текста не значит, что каждая его часть будет одинаково замечена и учтена. Почему часть текста иногда теряется среди остального — работа отдельного механизма, до которого мы доберёмся в следующем уроке.
Попробуй сам
Перенеси это на редактор документов, который помогает готовить договоры для клиентов. Ниже — две ситуации и вопрос к ним.
• Случай А. Редактор с самого начала умел определять типовые пункты договора — этому его научили заранее на множестве примеров.
• Случай Б. Сегодня в разговор с редактором вставили черновик конкретного договора этого клиента вместе с короткой просьбой: сначала перечислить риски, а предложения по правке — только после этого списка.
• Вопрос: какая часть ситуации про заранее выученные настройки редактора, а какая — про то, что оказалось приложено к разговору именно сейчас, включая саму просьбу о порядке ответа? Что из этого исчезнет, если начать совершенно новый разговор?
Основная мысль
Держи в голове разницу между тремя вещами: что впечатано в настройки помощника надолго, что система даёт ему прямо сейчас в виде контекста, и отдельную договорённость о том, как себя вести. Последние два не меняют саму модель.
Дальше: Как слова внутри одного такого текста вообще помогают понять связи между ними?
Почитать
•
Effective context engineering for AI agents (Anthropic, 2025)
Связи между частями текста
В переписке «Тесно» слово «он» иногда означает велосипед, а иногда — арендатора, и без соседних слов не разобрать, что имеется в виду. Разберёмся, как помощник вообще с этим справляется.
Кто такой этот «он»
Владелец гаража пишет в «Тесно»: «Арендатор написал, что велосипед стоял в гараже, а теперь его нет. Где он сейчас?» Само по себе слово «он» ничего не говорит: это может быть вопрос про велосипед, а может — про арендатора. Только по соседним предложениям понятно, что речь, скорее всего, про велосипед: именно про его пропажу говорилось прямо перед этим. Прочитай помощник это иначе — и в споре о пропаже он ответит не на тот вопрос.
Похожая путаница легко случается и в более длинных обращениях. Арендатор упоминает сразу две брони, а затем пишет «отмените её» — и неясно, какая из двух броней имеется в виду, пока не сопоставить эту фразу с предыдущими предложениями.
Значимость взвешивают заново
Чтобы дать связный ответ, помощнику приходится решать похожую задачу при обработке каждого маленького кусочка текста. Обрабатывая очередной кусочек, система заново рассчитывает, какие из предыдущих частей текста сейчас могут быть полезнее: одни получают больший вес, другие меньший, и их сведения смешиваются с учётом этих весов. Поэтому при обработке кусочка «он» сведения о велосипеде могут повлиять сильнее, чем сведения об арендаторе. В настоящей системе таких сравнений много: они идут параллельно и повторяются слой за слоем.
Это происходит заново на каждом шаге, а не один раз для всего текста целиком: слово «он» в одном месте получит одни веса, а то же самое слово чуть дальше — совсем другие. Это полезная первая картина, и она намеренно узкая: такие веса связывают не только местоимения с именами, но и любые части текста, которые оказались полезны друг другу при обучении, и ни один отдельный вес сам по себе не означает решения «это слово про велосипед». Разрешение местоимений — самый наглядный случай, а не единственная работа механизма.
Это устройство иногда хочется представить как нечто похожее на человеческую сосредоточенность или переживание процесса чтения. Граница здесь важна: пересчёт значимости происходит по одному и тому же принципу при обработке любого текста — интересного или скучного, важного или нет — и не предполагает ни осознанного выбора, ни усталости, ни вообще какого-либо переживания происходящего. Это техническое устройство, а не аналог человеческой психики.
Возьмём фразу: «Владелец обещал перезвонить, но так и не позвонил, и арендатор теперь спрашивает, где он». Слово «он» стоит рядом сразу с двумя кандидатами — «владелец» и «арендатор». Для простоты представим, что в одном из таких сравнений больший вес получает место про владельца: это помогает следующему вычислению удержать связь с тем, кто должен был позвонить, и в ответе перевешивает «владелец». Если бы фраза была другой — «Владелец передал ключ арендатору, и тот теперь пишет, что доволен», — больший вес, скорее всего, получило бы место про арендатора, хотя предложения устроены очень похоже. Разница не в самих словах, а в том, что оказалось рядом по смыслу в конкретном предложении.



