
Полная версия
Золотая лихорадка ИИ-агентов. Делегирование неопределённости
Основателю второе прочтение досталось утром, как неприятная новость о его ночи. Но оно не принадлежит одной ночи и одному человеку. Так читается любой долгий прогон, и оба прочтения всегда верны сразу. И это не состязание, в котором кто-то должен проиграть: ИИ-агент не становится хуже оттого, что те же часы говорят и о задаче, а мы не становимся умнее оттого, что это заметили.
Отделим друг от друга две вещи, которые мы привыкли смешивать: характеристику инструмента и характеристику собственной ясности. Вернее, не самой ясности — изнутри головы всё обычно казалось ясным, — а того, что из неё успело стать определённостью задачи: какие решения приняты и назначен ли критерий. Первая характеристика — о том, что ИИ-агент может: как долго держит задачу, сколько кода прочтёт, не потеряв нити, как аккуратно правит чужое. Вторая — о том, с чем мы его оставили.
Смешиваем мы их не по глупости. Это привычка, и заработана она честно: почти у всех наших инструментов время работы и правда говорит о них самих. Сборка идёт долго — значит, медленный компилятор или слабый сервер; копирование тянется — значит, медленный диск. Другой инструмент — другое время; другая работа того же размера на том же инструменте — почти то же время. С ИИ-агентом иначе. Один ИИ-агент, получив две задачи в один вечер, возвращает одну через минуты, а другую, не больше первой, через сутки, и способность у него в обоих случаях одна. Меняется задача — меняется время, а ИИ-агент остаётся прежним. К тому же ночью перед глазами только он: задача ушла вечером и больше не видна, а он на виду работает, правит, запускает тесты. Часы идут при нём, и мы записываем их ему.
Можно возразить: не умей ИИ-агент держать задачу так долго, прогон кончился бы раньше. Кончился бы — и вернул бы задачу недоделанной: неопределённость в ней осталась бы той же, её просто не прошли бы до конца. В задаче про биллинг это значило бы не меньше нерешённого, а меньше пройденного: вопросы о состояниях подписки и о границе с авторизацией остались бы на месте, только без ответов, которые дала ночь. Выносливость не создаёт этих часов, она только не даёт им оборваться. Способность работать сутками — не мощность, а длина строительной рулетки. Пока рулетка достаёт до стены, она показывает длину комнаты, а не свою. Короткая не делает комнату меньше, она обрывается, не дойдя до стены. Длинная доходит — и показывает комнату целиком.
Первое слово словаря самообмана, «Мощь ИИ», и есть язык этого смешивания. Оно складывается из двух правд и одного перехода. «Он работал сутки» — правда. «Сутки работы по силам только инструменту, который умеет держать задачу» — тоже правда. «Значит, сутки — от его мощи» — здесь и совершается подмена: часы задачи переходят на счёт инструмента и встают в один ряд с его настоящей способностью. Потому эта маска и держится так крепко: всё в ней правда, кроме того, кому отданы часы. На вопрос, чьи это сутки, «Мощь ИИ» отвечает не задумываясь: его.
Ответ на этот вопрос лежит раньше ночи: в минуте, когда текст задачи отправлен и ноутбук закрыт. Эта минута и есть вечер прогона, даже если задача ушла в полдень: время суток тут ни при чём. В эту минуту всё решённое уходит вместе с задачей, и всё нерешённое — тоже. Дальше прогон идёт без нас, и ничего своего мы к задаче уже не прибавим: каждое несделанное решение достанется ночи и заберёт свои часы. Длительность задана уже здесь. Ночь её только выговаривает — час за часом.
Представим четыре прогона одинаковой длины, идущих рядом: один под словами «задача сложная», другой над задачей, которая вечером казалась чёткой, третий над пятьюстами файлами, четвёртый над утечкой памяти, про которую в задаче записано и что известно, и чего нет. Утром на часах у всех четырёх стоит одно число, и по часам их не различить. По ИИ-агенту тоже: во всех четырёх он работал одинаково добросовестно. Способность у него одна на всех, и как раз поэтому о самих прогонах она не говорит ничего. Прогоны разные, и за каждым стоит своя неопределённость. Различает их не ИИ-агент и не число часов, а то, какая неопределённость в них была и названа ли она в минуту передачи.
Поэтому длительность — признание при любом имени, которое мы ей даём. Скажем ли мы «Мощь ИИ», «задача сложная» или честное «он ищет причину перезапусков» — сутки всё равно рассказывают одно: сколько в задаче оставалось нерешённого. Разница лишь в том, кто признаётся первым, — и только это зависит от нас. Когда неопределённость названа, мы признаёмся сами, вечером, своими словами, и прогон только подтверждает сказанное. Когда она спрятана за маской, признаётся сам прогон — утром, языком diff, и уже не нашими словами.
Почему гордость настоящим умением так легко становится надеждой, что оно заменит знание, сутки не скажут. Зато о самой задаче они не ошибаются. Длительность — это не свойство ИИ-агента. Это свойство задачи в ту минуту, когда вы её отдали.
Глава 3. Лихорадка
3.1. Калифорния, 1849
Человек сидит на корточках у горной реки и держит в руках лоток. Он зачерпывает со дна песок вместе с мелким гравием, заливает водой и начинает медленно вращать: лёгкое выплёскивается через край, тяжёлое оседает на дно. Через несколько минут в лотке остаётся горсть тёмного осадка, и человек наклоняется над ним. Если в этом песке было золото, на дне блеснут жёлтые крупинки. Если не было, он выплеснет осадок и зачерпнёт снова. Выше и ниже по течению сидят такие же люди с такими же лотками, и каждый повторяет одно и то же движение с утра до темноты.
Так выглядела Калифорния в 1849 году. Годом раньше на лесопилке в предгорьях нашли золото, и новость, которая сперва казалась слухом, дошла до Орегона, до Мексики, до Чили. Через год к рекам хлынули десятки тысяч людей: одни шли через весь континент по суше, другие плыли морем. Большинство из них никогда прежде не держало лотка в руках. Лоток и не требовал выучки: широкая неглубокая миска, вода и терпение. Позже на реках появились качалки, длинные деревянные желоба, шлюзы, в которые отводили целые русла, но в памяти лихорадка осталась именно такой: река, лоток и толпа людей, промывающих песок.
В этом движении было что-то захватывающее, и делать вид, будто его не было, нечестно. Люди бросали хозяйства и ремесло, проводили в пути месяцы, чтобы встать по колено в воду чужой реки и начать с нуля. Никто не гнал их силой. Их вела картина, которую легко понять: золото лежит в реке, реку можно промыть, промывать может каждый. В этой картине нет ни одного звена, которое требовало бы особого знания. Нужны только руки, лоток и время, а рук и времени у толпы было сколько угодно.
В ней же легко увидеть историю успеха. Толпа у воды сама выглядит доказательством: раз столько людей бросили дома и приехали сюда, значит, золото есть и его хватит на всех. Историки лихорадки рассказывают другое. Самое доступное золото вымыли в первые же сезоны, и каждый следующий год у реки приносил меньше предыдущего. Часть старателей в итоге получила скромную прибыль, если вычесть дорогу, еду и снаряжение. Большинство разбогатеть не смогло, а те, кто приехал позже, чаще уезжали ни с чем или в убытке. Золото в реках было, и добыли его много. Просто толпа и золото встречались гораздо реже, чем обещал вид самой толпы.
В этом есть жестокая логика. Первый сезон прощал незнание: золото лежало так близко, что лоток находил его и в руках новичка, если тот успел прийти рано. Именно такие сезоны и порождают слух, который разносится по свету. Но слух идёт медленнее, чем пустеет река. Толпа ещё прибывала, а самое лёгкое уже вымывали, и то, что поначалу было необязательным, стало решающим: теперь нужно было не просто мыть, а знать, где мыть. Толпа приезжала за условиями первого сезона и заставала условия второго.
Кого же отличала удача? Не лоток: лотки у всех были почти одинаковые, и вода в них вращалась одинаково. Первыми на реках оказались те, кто жил неподалёку, и те, для кого добыча металла была ремеслом ещё дома, — горняки из мексиканской Соноры и из Чили. Чилийцы приезжали со своими лотками, работали артелями и, в отличие от основной массы приезжих, часто были опытными горняками. Многие лучшие участки к приходу этой массы уже были заняты, а новичков добывать золото учили как раз те, кто умел это раньше. Их преимущество лежало не в руках и не в инструменте. Опытный горняк смотрит на реку иначе: он видит, где течение замедляется, где на излучине оседает тяжёлое, где берег похож на тот, у которого золото уже находили. Новичок видит воду и песок. Умение, которое отличало удачливых, было умением знать, где искать.
Важно, чего это умение не делает. Оно не ускоряет промывку и не делает лоток лучше. Оно избавляет от тысячи лотков, промытых там, где промывать было нечего. Представим двух людей на одной реке, в сотне шагов друг от друга. У них одинаковые лотки, одинаковые руки, одинаковое упорство. Один моет в заводи за большим камнем, где вода веками замедлялась и роняла тяжёлое. Другой моет на быстрине, потому что там было свободно и близко к лагерю. Со стороны их не различить: оба с рассвета согнуты над водой, оба сделают за день одинаковое число промывок. Различит их только вечер, да и то не всегда. Лоток добросовестно промывает и песок с золотом, и песок без него, и по самой работе разницы не видно: те же движения, та же ломота в спине, тот же тёмный осадок на дне. А пустой вечер легко объяснить невезением и утром выйти к реке снова.
Что оставалось делать человеку, который не знал, где искать? Только одно: мыть больше. Больше лотков в день, больше дней у воды, больше мест вдоль реки. Нам легко смотреть на эту толпу свысока, зная из учебников то, чего не знал человек, стоявший по колено в воде. Изнутри всё выглядело иначе. Это не жадность. Это единственная величина, которую новичок держал в своих руках: знания у него не было, а время и силы были. Он не мог купить знание места, но мог встать раньше и лечь позже. Если нельзя понять, где золото, остаётся надеяться, что достаточно большое количество песка само его покажет. Когда таких людей десятки тысяч, их общая надежда становится видимой, у неё появляется пейзаж: берега, усеянные людьми, которые не знают, где искать, и поэтому ищут везде.
Эту надежду и называют лихорадкой. Лихорадка — это массовая надежда, что количество попыток заменит знание жилы. Не жар одного человека, а общее состояние толпы, где каждый видит вокруг себя сотни таких же лотков и принимает их число за довод. Лихорадка заразна, она охватывает сразу многих, и изнутри её трудно отличить от здравого смысла: так ведь делают все. Каждый новый человек на берегу укрепляет веру остальных, хотя о реке он знает не больше других. Лихорадка не выдумывает золота: оно действительно есть в реке, и именно поэтому надежда так убедительна. У лихорадки один признак, по которому её можно узнать в любую эпоху: уверенность, что если промыть достаточно песка, знать, где мыть, уже не понадобится.
Из этой картины достаточно взять два вопроса. Первый: знал ли старатель, где искать. Второй: была ли у лотка сетка. Первый вопрос — о человеке, который стоит у реки, второй — о том, что он держит в руках. Смешивать их нельзя: самый совершенный лоток не выбирает реку, а знание места само по себе ничего не промывает. Показательно и то, чего среди этих вопросов нет: сколько людей стояло у воды, сколько песка прошло через лотки, сколько часов длился день у реки. Именно эти числа лихорадка считает главными, потому что их видно издалека и их легко сложить. И именно они ничего не говорят о том, будет ли на дне золото. В 1849 году первый вопрос решал почти всё, а второй почти не звучал: лоток был простой миской, и всю остальную работу делали вода, тяжесть металла и глаз самого старателя, склонившегося над осадком.
Мы, оставляющие ИИ-агентов работать на ночь, тоже стоим у реки. Лоток стал другим: его больше не держат в руках, и работает он, пока мы спим. Река тоже другая, в ней нет воды и гравия, только код и задачи. Но вопросы к нашей ночи остались теми же, что у воды в калифорнийских предгорьях. Названия рек, имена, число людей на берегу меняются от эпохи к эпохе и почти ничего не объясняют. Объясняют два вопроса.
3.2. Весна 2023: лихорадка ИИ-агентов
Весной 2023 года, с разницей в несколько дней, в открытом доступе появились две программы. Одну, AutoGPT, выложил один разработчик, основатель игровой компании. Другую, BabyAGI, собрал венчурный инвестор. Устройство обеих умещается в одну строку: цель, план, действие, наблюдение. Человек пишет цель словами. Программа просит языковую модель разбить эту цель на задачи, берёт первую и выполняет её: ищет в интернете, записывает файл, запускает код. Результат возвращается в модель, та смотрит, что получилось, и составляет следующий план. BabyAGI вела себе список дел: выполняла задачу, по её итогам дописывала в список новые и заново сортировала его. Один такой проход, от плана до наблюдения, — итерация. Итерации шли одна за другой, пока их что-нибудь не останавливало.
ИИ-агентами здесь названы именно эти системы 2023 года, хотя код они писали не обязательно. Нередко они собирали сведения, составляли заметки и отчёты, а код был лишь одним из действий, которые им разрешалось выполнять. ИИ-агентами их делает не предмет работы, а её форма: задача дана словами, дальше много шагов подряд без участия человека.
Главное в этой строке не шаги, а место, где стоит человек. Цепочка от плана к наблюдению замыкается сама на себя: то, что модель выдала, возвращается к ней же, и она сама оценивает, куда двигаться дальше. Человек написал цель в самом начале и больше в этой цепочке не появляется. Он стоит вне контура. Ни в одной точке между планом и наблюдением нет места, где его суждение входило бы в работу. Программа не могла ни о чём его спросить: спрашивать было некого. Если на третьей итерации выяснялось, что цель можно понять двумя способами, выбор делала модель, и этот выбор тут же становился основанием для четвёртой итерации, пятой, десятой. Это не было недосмотром. В этом и состояла вся притягательность замысла: машина, которой достаточно сказать, чего ты хочешь, а дальше она справится сама. Смотреть на экран, где программа сама себе пишет следующий шаг, было захватывающе, и восхищение тех первых недель было честным.
Отсюда и ночи. Многие из нас той весной впервые оставили ИИ-агента работать без себя. Вечером человек вписывал цель, широкую, как желание, — что-нибудь вроде «собрать всё о рынке и составить план запуска продукта», — запускал программу в непрерывном режиме и уходил спать. ИИ-агент 2023 года трудился, пока никто не смотрел, и именно этого от него хотели. Прелесть была в том, что утром можно проснуться к готовому.
Утро выглядело иначе. Человек открывал экран, и сначала всё было обнадёживающе: журнал длинный, в рабочей папке прибавились файлы. Первые строки журнала и правда были похожи на работу: разумный план, первые запросы, первые заметки. Чем ниже, тем меньше в них было движения. Потом начиналось зацикливание. Тот же запрос к поисковой системе, тот же вывод, тот же вывод из вывода, и снова тот же запрос, десятки раз подряд. На это в обсуждениях на странице AutoGPT жаловались уже весной 2023 года: программа застревала и раз за разом повторяла один и тот же поиск. Файлы в папке при ближайшем взгляде оказывались черновиками одного и того же, начатыми заново под чуть разными именами. Рядом рос счёт: каждая итерация была отдельным платным обращением к модели, и за ночь кредиты сгорали на повторы. А финиша не было. Цель не достигнута, отчёта нет, или есть что-то, отдалённо на него похожее, чем нельзя воспользоваться. Если к утру программа и стояла, то не потому, что дошла до цели, а потому, что кончились деньги, которые ей с вечера разрешили потратить.
Самое поразительное в том, что всё это было сказано заранее. В описании самого AutoGPT весной 2023 года авторы предупреждали, что работа на модели может обойтись дорого из-за расхода токенов, советовали заранее ставить лимит расходов, а непрерывный режим прямо не рекомендовали: в нём программа может работать вечно. Слова «работать вечно» точнее любого пересказа тех ночей. Люди читали предупреждение и всё равно запускали: хотелось увидеть своими глазами, и в этом нет ничего постыдного.
Утро 2023 года выглядело так: зацикливание, сожжённые кредиты и отсутствие финиша. Провал был грубым и прямым: его было видно с первого экрана, по одинаковым строкам журнала и по счёту за ночь. Разбирать его неделями не требовалось, хватало минуты, чтобы понять, что ничего не сделано. Он не притворялся работой.
Соблазнительно списать ту весну на наивность: люди поверили шуму вокруг новинки. Но честнее увидеть в ней другое. Те, кто запускал AutoGPT и BabyAGI, по большей части понимали, что программы сырые. Их вёл не обман, а вопрос, который стоило задать: что, если модели уже достаточно одной цели, а остальное она достроит сама? Это был эксперимент в чистом виде, такой, какой в инженерии удаётся поставить редко. Из него убрали всё, что обычно смешивается с результатом и мешает его прочесть: человека в контуре, внешнюю проверку, сколько-нибудь определённую задачу. Машине отдали всё, включая цель и критерий готовности. Цель ей дали фразой. О каком продукте идёт речь, для кого план, насколько он должен быть подробным, сколько сведений о рынке считать достаточным — всё это оставалось внутри фразы нерешённым, и решать приходилось той же модели. Когда работа готова, тоже решала она сама. Если у этого эксперимента должно быть имя, то вот оно: чистый эксперимент по делегированию неопределённости.
Зададим ему два вопроса из 1849 года. Старателем здесь был человек, который вечером вписал цель и ушёл спать. Знал ли он, где искать? Нет. Он не выбирал места: вместе с целью он отдал машине и вопрос о том, где копать, а заодно и что считать золотом. Лоток должен был сам выбрать реку, сам выбрать место на ней и сам решить, что там искать. Была ли у лотка сетка? Тоже нет. Ничто вне машины не отделяло результат, который можно принять, от песка. Каждую итерацию оценивала та же модель, что её выполнила, по тем же представлениям о цели, которые она сама себе составила. Лоток промывал и сам же решал, что блестит. Два вопроса, два «нет».
Ценность этого эксперимента в том, что ответ на него получился ясным. Когда из опыта убрано всё лишнее, результат не на что списать: ни на плохие тесты, ни на чужую ошибку в постановке, ни на коллегу, который вмешался не вовремя. Всё, что случилось той ночью, случилось между целью и машиной. Эксперимент показал, что делает лоток, когда кроме лотка нет ничего. Лоток промывает. Усердно, оплачивая каждый проход, по той же схеме снова и снова. Список дел BabyAGI пополнялся сам из себя, и никто не держал в руках его последнюю строку. Весна 2023 года задала машине вопрос, может ли она обойтись без человека на обоих концах работы, и получила ответ за несколько недель. Ответ был написан в журналах тех ночей.
А рядом с экспериментом звучало слово. В те же месяцы пресса называла бум вокруг языковых моделей «gold rush»: так писали о деньгах, которые потоком шли в новые компании, о спешке, о страхе опоздать. Позже, когда в центре внимания оказались ИИ-агенты, выражение перешло и на них. Сравнение с золотой лихорадкой не выдумано задним числом: индустрия и те, кто о ней писал, произнесли его сами, с первых месяцев бума. Чаще его произносили с воодушевлением, как обещание. Но и те, кто предостерегал, говорили о деньгах и о спешке, а не о том, кто из пришедших уедет ни с чем. Метафора пришла раньше осмысления.
Что слышали в этом слове тогда? Золото: размер добычи, которая достанется первым. Спешку: надо успеть, пока участки не разобраны. В английском выражении слышен бег, в русском — жар, и оба оттенка хорошо ложились на ту весну. Но из всей истории, которую несёт слово, услышали только начало, где золото лежит в реке и бежать к нему нужно немедленно. Остального не услышали: что к рекам приходят десятки тысяч, а золото достаётся немногим; что отличает этих немногих не лоток; что толпа держится на надежде, будто количество промытого песка рано или поздно заменит знание жилы.
А ведь всё это происходило в те же самые недели, почти в тех же лентах новостей. Заголовки говорили «gold rush», а ИИ-агенты весны 2023 года тем временем ночами промывали песок там, где жилы никто не знал, и без сетки. Эти две вещи почти никто не сложил вместе. Индустрия назвала сюжет, но не прочла его. Она взяла из лихорадки её блеск и не заметила её механику. Прочесть этот сюжет значило бы спросить не о том, сколько в реке золота и как быстро к нему добраться, а о том, кто из пришедших знает, где его искать, и чем он отделит золото от песка. Слово оказалось точнее, чем думали те, кто его произносил.
3.3. Роли вместо решений
Урок весны прочитали быстро и по-своему. Если одиночный ИИ-агент теряется, рассудили многие, то потому, что он один: ему приходится быть сразу всеми — тем, кто задумывает, тем, кто делает, и тем, кто проверяет. На это у инженерии давно есть ответ, и ответ проверенный: разделение труда. Во второй половине 2023 года появились системы, где одну и ту же модель раздавали по ролям, как по штатному расписанию. Одна из них описывала себя как виртуальную компанию по разработке программ, другая — как сборочный конвейер, где каждая роль получает от предыдущей готовый документ и передаёт следующей свой. За ними последовали другие, и весь следующий год системы для программирования охотно собирали из ролей. Менеджер, архитектор, кодер, тестер.
ИИ-агентом в такой системе была каждая роль. Под каждой стоит та же языковая модель, только с другим промптом и другим названием, и каждая работает так же, как система весны: получает задачу словами и делает свою часть без участия человека. Названия у ролей взяты из человеческих профессий, но людей за ними нет. Есть модель, которой сказали, кем ей быть.
Смотреть на работу такой системы было убедительно. В журнале шёл разговор, похожий на совещание: менеджер излагал требования, архитектор отвечал документом, кодер переспрашивал, тестер возвращал замечания, и кто-то подводил итог. Если держаться картины реки, лоток теперь был не один: их поставили цепочкой и каждому дали должность. Перенести разделение труда на машину было естественным ходом мысли.
Возьмём одну роль — архитектора. Текст её промпта от системы к системе менялся, но смысл обычно сводился к одному: ты опытный архитектор программного обеспечения; по требованиям составь описание системы — модули и их обязанности, интерфейсы между ними, структуры данных; пиши так, чтобы по документу мог работать программист. На вход приходило требование человека, часто в одну-две фразы. Допустим, сделать сервис для учёта заказов небольшого магазина.
Ответ приходил быстро и выглядел безупречно. Документ с разделами: обзор, модули, интерфейсы, данные, выбор технологий. Модулей четыре: заказы, склад, пользователи, уведомления. Данные хранятся в реляционной базе. Модули обмениваются запросами через программный интерфейс. Каждое предложение утвердительное, ни одной оговорки, ни одного вопроса к заказчику. Документ звучал так, как звучат документы опытных архитекторов, и неудивительно: модель прочла их великое множество.
Теперь посмотрим, чего в нём нет. Нет вариантов, между которыми выбирали. Почему модулей четыре, а не два; почему склад отделён от заказов; что делать, если заказ оплачен, а товара на складе уже нет. Каждая строка документа — ответ, и ни за одной строкой не стоит выбор. Слово «решение» здесь расходится на два своих смысла. Решение как ответ задачи в документе есть: вот модули, вот данные, вот связи. Решения как акта выбора нет: никто не взвесил, чем одно устройство лучше другого для этого магазина, и никто не отказался от остальных. А архитектура — это и есть результат решений об устройстве, то есть именно таких выборов. Роль архитектора в промпте не принимает архитектурного решения. Она даёт исполнителю имя, а имя ничего не выбирает.
У людей порядок обратный. Архитектором человека называют потому, что он уже принимал такие решения и знает, чем за них расплачиваются через год. Название идёт следом за выборами. В промпте название пришло первым, и от него ждали, что выборы последуют сами. Последовал жанр: модель, которой сказали «архитектор», пишет текст, похожий на архитектурный документ. Жанр воспроизводим. Выбора в жанре нет.
Проверить это можно простым опытом, и многие из нас его невольно ставили. Дать системе ту же фразу про магазин ещё раз. Архитектор снова ответит быстро и снова безупречно, но документ будет другим: модулей окажется три или пять, склад сольётся с заказами, база данных сменится, а уверенность тона останется прежней. Решение в смысле выбора так себя не ведёт. Если выбор сделан, за ним стоят причины, и те же причины назавтра приведут к тому же устройству. Здесь причин не было, и каждый запуск доставал из жанра новый правдоподобный вариант. Два документа нельзя даже сравнить по существу: ни в одном не сказано, от чего он отказался и почему.









