Цена мысли. Об экономике агентного ИИ

- -
- 100%
- +
Задачи по ту сторону порога описать нетрудно: это и есть те задачи, ради которых заводят поручение. Изменение, проходящее через несколько модулей, где правка в одном месте требует согласованной правки в трёх других, а какое именно место четвёртое — выясняется только по дороге. Незнакомая база, где половина правил нигде не записана и выводится из того, как сделано вокруг, — и выводить их надо на ходу, не теряя по пути ни одного. Поломка, которая не воспроизводится по команде: её нельзя поймать, можно только построить догадку, поставить наблюдение, дождаться, отбросить догадку и построить следующую — и так столько раз, сколько потребуется, ни разу не забыв, что уже отброшено. Миграция по всему проекту, где трудность не в отдельном шаге, а в том, чтобы одинаковое сделать одинаково везде.
Короткие дела я не поручаю. Их я делаю сам — потому что объяснить машине короткое дело дольше, чем сделать его. Поручаю я именно длинное: то, что не помещается в один присест, то, от чего хочется уйти и вернуться к готовому. Выходит, что вся территория, на которой я выбирал модель, и вся территория, на которой я собирался ею пользоваться, не пересекаются.
Есть, впрочем, деталь, которая мешает увидеть порог даже тому, кто о нём знает. За порогом вероятность дойти не равна нулю; она мала, но не пуста. Значит, случаются удачные прогоны: слабая машина берётся за длинное дело и доводит его до конца, и человек, наблюдавший такой прогон, получает доказательство того, что всё работает. Доказательство это настоящее — работа действительно сделана. По одному прогону, однако, различить «может» и «иногда получается» невозможно, а различие между ними для поручения решающее: я отдаю работу машине затем, чтобы не смотреть, а «иногда получается» означает, что смотреть придётся каждый раз. Порог виден не в одном прогоне, а в череде одинаковых, и потому его обычно не видят: череду одинаковых длинных прогонов никто не устраивает.
Одно поручение я давал дважды, с разницей в несколько дней и двум разным машинам. Нужно было провести через незнакомый проект изменение, затрагивающее несколько модулей: разнести по-новому то, что раньше лежало в одном месте, и не сломать по дороге ничего из того, что на это опиралось. Первая машина работала долго и нудно, дважды возвращалась к сделанному, один раз призналась, что не уверена в одном месте, и назвала его. К концу изменение было проведено целиком, и я нашёл в нём одну ошибку — в том самом месте, о котором была оговорка. Вторая работала быстрее и ровнее, вернулась всего однажды, отчиталась раньше и написала в отчёте фразу, которую я запомнил дословно: остальные модули в изменениях не нуждаются. Модули нуждались. В них лежало то же самое, разнесённое иначе, и увидеть это можно было, лишь удерживая рядом оба способа, которыми в этом проекте делали одно и то же.
Обе машины сказали «готово». Одна сказала это о работе, сделанной целиком, с названным сомнением в одном месте; другая — о трети работы, названной целым. Разница между ними — не в аккуратности, не в знании языка и не в качестве отдельной правки: правки у второй были лучше. Разница в том, до какого места каждая из них дошла, оставаясь при том, что ей поручили.
Отсюда и главный вывод. Судить о машине по задачам до порога — значит судить не о том, ради чего её берут. Сравнение, проведённое на коротком, измеряет реальное свойство, но не то, за которое платят; оно отвечает на вопрос, который я не задавал. И цена, поставленная рядом с таким сравнением, создаёт отношение, выглядящее убедительно и не значащее ничего: числитель взят из одной работы, знаменатель относится к другой.
Заметно и то, что делается с самим вопросом. «Зачем платить больше, если обе умеют писать код» — вопрос осмысленный и трудный, пока речь идёт о коротком: там обе действительно умеют, и разница между ними стоит ровно столько, сколько стоит аккуратность. За порогом вопрос теряет ту форму, в которой его задавали. Речь идёт не о том, насколько одна лучше другой, а о том, доходит она или нет; не о качестве результата, а о его наличии. Сравнивать по-прежнему можно, но сравнение из шкалы превращается в различение: с этой стороны черты — работа, которую приняли, с той — работа, которую объявили сделанной. Между ними нет процентов.
Мера должна лежать по ту сторону порога. Это неудобно: задачи за порогом долгие, их трудно повторить, результат у них не сводится к отметке «верно — неверно», и оценивать их приходится так, как оценивают чужую работу, а не так, как проверяют ответ. Неудобство не отменяет правила. Меряют на том грузе, который собираются поднимать.
Остаётся вопрос. Если способность пройти длинную цепь не следует ни из скорости, ни из качества отдельной правки — тех самых свойств, по которым обычно и выбирают, — то из чего она следует и почему у одних машин её больше, чем у других.
2.5. Отступление: качество — не размер
Возьмём две машины, у которых совпадает всё, что принято сравнивать. Одна величина — то, что называют размером, и что в разговорах служит главной мерой серьёзности. Одно устройство внутри: те же принципы, то же семейство, та же школа. Почти одно время появления, так что ни одна не могла воспользоваться тем, чего не знала другая. На коротких делах они и ведут себя одинаково: отвечают похоже, ошибаются в похожих местах, и, поставленные рядом, выглядят как две копии одной вещи. Случай этот не выдуман: обе машины были открытыми и вышли с разницей в несколько месяцев. На длинной цепи одна доходит, а другая — в разы реже.
Объяснить это величиной нельзя: величина у них общая. Устройством — тоже: оно общее. Остаётся то, что делали с машиной после того, как она была сделана, — и это оказывается решающим. Языку её научили примерно одинаково; разошлись они в другом обучении, которое идёт следом и на которое смотрят меньше, потому что оно не выражается ни одним числом. Одну приучали доводить дело до конца: возвращаться к поручению, сверяться с ним, замечать, что сделанное разошлось с задуманным, признавать, что упёрлась. Другую не то чтобы отучали — этим занимались меньше, потому что оценивали её по коротким ответам, а в коротком ответе ничего из перечисленного не требуется.
Видно это и по тому, чему каждую из них было выгодно научиться. Если машину оценивают по одному ответу, лучшее, что она может в себе вырастить, — умение делать ответ хорошим с виду: полным, стройным, уверенным. Умение остановиться и сказать «здесь я не уверена» при такой оценке ничего не приносит, а иногда и мешает: уверенный ответ нравится больше. Если же её гоняют по длинным делам, где результат либо принят, либо нет, выгодным становится противоположное: проверять себя, возвращаться, называть сомнительные места, не объявлять готовым недоделанное. Выходит не разница в способностях, а разница в том, что каждой из них было выгодно, и эта выгода в них застывает.
Разница получается похожей на ту, что бывает между двумя выпускниками одной школы. Учились в одном классе, у тех же преподавателей, с одинаковыми отметками; знают они, если проверять по отдельности, примерно одно и то же. Но один доводит работу до конца, а другой бросает её на середине — не от неспособности, а оттого, что середина скучна, а мысль ушла в сторону. Проверка знаний покажет их равными. Любая настоящая работа покажет разными. И если спросить, откуда берётся это отличие, ответ будет не про способности, а про то, что одному это где-то поставили, а другому нет.
В ремесле это ставят руками. Мастер заставляет ученика переделывать не потому, что сделано плохо, а потому, что брошено на середине; не потому, что ошибся, а потому, что не проверил; не потому, что не знал, а потому, что не сказал, что не знает. Ни одно из этих требований не добавляет знания. Все они добавляют того, что потом называют надёжностью и принимают за черту характера. Ученик, которого так вели, и ученик, которого не вели, через несколько лет отличаются не тем, что знают, а тем, чем кончаются их работы.
Удержание нити — свойство такого же рода. Оно не выводится из величины, не выводится из владения языком и не выводится из качества отдельного ответа. Оно состоит из вещей, которые на коротком деле незаметны и потому кажутся необязательными: помнить условие в его исходном виде, а не в том, в какой оно переформулировалось по дороге; замечать расхождение между тем, что сделано, и тем, что поручено; не считать законченным то, что закончено частично; уметь сказать, что не вышло. Всё это — не следствие ума, а привычки, и привычка либо выращена, либо нет.
Незаметно оно по понятной причине: в коротком деле удерживать нечего. Условие стоит перед глазами, от начала до конца проходит немного времени, и забыть его за этот срок невозможно даже при желании. Всё, что требуется, — ответить хорошо один раз, и машина, у которой ничего, кроме этого умения, не выращено, выглядит здесь безупречно. Свойство, которого нет, не оставляет в коротком деле следа — как не оставляет следа отсутствие выносливости у того, кого попросили пройти по комнате. Проверить выносливость можно только расстоянием, и никакого другого способа для неё не придумано.
Оттого я и называю это отдельным свойством: оно может присутствовать или отсутствовать независимо от остальных. Машина бывает изобретательной и несобранной. Бывает знающей и неспособной довести. Бывает и обратное, хотя реже: скромная в разговоре и упрямая в работе. Портреты эти узнаваемы, если работал с несколькими машинами подряд. Одна придумывает изящные решения, каких я бы не нашёл, и на середине дороги начинает решать не ту задачу, что была поставлена, а соседнюю, которая показалась ей интереснее. Другая пишет скучно, предсказуемо, без единой находки, но к концу приносит ровно то, о чём договаривались, и честно перечисляет два места, где сомневается. По разговору первая производит куда лучшее впечатление. По результату длинной работы вторая надёжнее, и разрыв между этими двумя оценками тем шире, чем длиннее работа.
Мы привыкли представлять качество машин одной шкалой, на которой все они выстроены от слабой к сильной, и одной ручкой, которой двигают по этой шкале. Там, где речь о цепи, шкала расслаивается, и позиция на одной её полосе мало говорит о позиции на другой.
Тут напрашивается мысль, что недостающее можно добавить снаружи: если машина не проверяет себя, велите ей проверять. Я пробовал, и это работает хуже, чем хочется. Попросить можно, и машина согласится — согласится охотно и подробно, перечислив, что именно будет делать. Но исполнение просьбы само есть звено цепи: чтобы проверить себя на сороковом шаге, надо на сороковом шаге помнить, что обещала на первом. Та, у которой это выращено, помнила бы и без просьбы. Та, у которой не выращено, забудет и просьбу — обычно в том же месте, где забыла бы условие. Внешнее указание не заменяет свойства; оно ложится на него сверху и держится ровно настолько, насколько хватает того, что под ним.
Это подрывает главную интуицию, с которой выбирают дешёвое. Интуиция говорит: меньшая модель — это та же модель, уменьшенная, и потому от неё стоит ждать того же, но хуже; немного менее точно, немного менее красиво, в основном то же самое. Сравнение честное, если бы меньшая была уменьшенной. Она не уменьшенная. Она другая вещь, сделанная другими руками и воспитанная под другую работу — чаще всего под короткую, потому что именно короткой от неё и ждут. То, чего в ней нет, отсутствует не пропорционально; оно отсутствует целиком, как отсутствует навык, которому не учили.
И честности ради надо сказать обратное. Величина сама по себе тоже ничего не обещает. Большая машина, которую воспитывали на коротком, будет ломаться на длинном ровно так же, и её размер ей не поможет; я такое видел и не хочу оставлять впечатление, будто плачу за величину. Способность пройти цепь видна только на цепи.
Вывод отсюда получается менее приятный, чем «берите ту, что больше». Из отдельности свойства следует, что величина, цена и репутация — все три косвенные приметы, и каждая из них иногда обманывает. Следует и то, что выбирать приходится по признаку, который нельзя прочитать в описании: дошла или не дошла, и сколько раз из скольких. Это требует работы, которой раньше не требовалось, и я понимаю тех, кто предпочитает не начинать её вовсе. Но отказ от этой работы не отменяет свойства. Он лишь означает, что о нём узнают не заранее, а по результату, и не на пробной задаче, а на настоящей.
Размер при этом не пустая характеристика, он говорит о другом. Он говорит не о том, как машина работает, а о том, чего она требует, чтобы работать вообще. Мерой ума он не является ни в каком смысле.
Если удержание нити — отдельное свойство, а не следствие величины, то и разница между машинами на длинной цепи не обязана быть маленькой оттого, что мала разница в их размере, цене или поведении на коротком. Ничто не мешает ей быть кратной. Она такой и бывает.
Цепь, о которой шла речь, всё это время была моей выдумкой: я задавал её длину сам, чтобы показать, как ведёт себя произведение. Настоящая цепь длину себе задаёт не по моему замыслу. Она вырастает по дороге — на каждом возвращении, на каждом перечитывании, на каждой попытке, начатой заново, — и к концу работы оказывается заметно длиннее той, которую я описывал, отдавая поручение. Разница между задуманной длиной и пройденной и есть настоящий предмет спора о дешёвом и дорогом.
Потому что эта разница не бесплатна. Каждое лишнее звено выковано из чего-то: из вычисления, из минут ожидания, из чьего-то вечера, потраченного на разбор того, что получилось вместо обещанного. Кто-то оплатил каждое из них, не выставляя счёта и чаще всего не зная, что платит. Разница, которую я собирался мерить процентами, на этой длине процентами не меряется вовсе; она меряется тем, чья работа была сделана дважды, и тем, кто в итоге смотрел вместо меня. Пока я говорил о вероятности, лишние звенья были только поводом для разрыва. Они не только повод. Они ещё и счёт, и приходит он позже, чем отчёт об успехе, и выписан не на то имя, на которое я смотрел, когда выбирал, сколько платить за токен.
Глава 3. Невидимая цена
У поручения в прайсе один плательщик. Там написано, во что обходится тысяча знаков на входе и тысяча на выходе, и это честная цифра: её можно умножить на число обращений, сложить с такими же и получить сумму, которую в конце месяца снимут со счёта. Я много раз проделывал это умножение и смотрел на результат с удовлетворением человека, который знает цену своей работы. Число было верным. Оно было ценой одной четверти.
За одну закрытую задачу платят четверо, и только первый платит деньгами. Остальные трое платят временем, вниманием и сосредоточенностью — и платят не в тот момент, когда работа сделана, а позже, иногда намного позже, когда связь между платежом и покупкой уже не восстанавливается. Кто-то читает результат и убеждается, что его можно принимать. Кто-то доводит то, что принято наполовину. А кто-то через месяц садится разбираться, почему сломалось то, что месяц работало исправно, и тратит день, не подозревая, что оплачивает работу, заказанную в прошлом квартале и признанную завершённой.
Эта вторая плата не выглядит платой. У неё нет получателя, нет строки, нет валюты; она растворена в обычных рабочих днях обычных людей, и каждый день по отдельности выглядит как день, потраченный на текущие дела. Задача, которую машина не закрыла и вернула ни с чем, оплачена и будет оплачена ещё раз, когда её отдадут заново. Задача, которую машина закрыла неправильно, но объявила закрытой, оплачена трижды: за работу, за её обнаружение и за исправление того, что успело на ней вырасти. Ни одна из этих сумм не попадает в отчёт о стоимости машины.
Счёт, который приходит потом, никем не подписан.
3.1. Структура стоимости результата
Начнём с одной задачи, доведённой до конца. Пусть это будет что-то заурядное: дефект в модуле, который никто из работающих сейчас не писал, тесты падают, надо разобраться и сделать так, чтобы перестали. Задачу отдали машине. Через некоторое время машина сообщила, что готово: нашла причину, внесла правку, прогнала проверки, приложила объяснение. Изменение ушло в работу, дефект больше не воспроизводится. Задача закрыта, и теперь можно спросить, во что она обошлась.
Первым платит машина, и это тот платёж, который я умею считать. Обращения, шаги, знаки на входе и на выходе, минуты вычисления — всё сосчитано, выставлено и записано. Этот плательщик удобен тем, что он безличен и аккуратен: он не забывает выставить счёт, не округляет в свою пользу, не приходит через месяц. Он сообщает о себе в тот же день.
Вторым платит тот, кто читал результат. Он открыл изменение, посмотрел, что тронуто, прочитал объяснение, сверил его с тем, что видит в коде, подумал, не задето ли что-то рядом, и решил, что можно принимать. Это было его внимание — не рассеянное, а то самое, сосредоточенное, которого у человека за день набирается немного и которое тратится быстрее, чем восстанавливается. Потраченное нигде не зафиксировано. В календаре у него стояло другое.
Третьим платит тот, кто доводил. Правка была верной по существу, но оформлена не по принятому здесь порядку; объяснение оказалось точнее кода, и пришлось дописать то, чего в коде не было; проверка прошла, но прошла на одном наборе данных, и кто-то добавил второй. Это ещё время, и тоже ничьё. Работа была сделана не заново, а вокруг: подобрать, подправить, привести к общему виду. Она почти никогда не называется работой и почти всегда занимает время.
Четвёртым платит тот, кто через месяц обнаруживает, что доведено было не всё. Он не искал этой задачи, не помнит о ней и не связывает своё утро с чужим давним поручением. Он видит, что ночная выгрузка второй день приходит короче обычного, идёт назад по истории изменений, находит правку, читает объяснение, не понимает его, читает код, понимает, поднимает голову и спрашивает, кто это делал. Ему отвечают, что это была машина, и что изменение прошло проверку. К этому моменту он потратил утро и потратит ещё, потому что на неверной правке успели вырасти другие, верные.
Четверо. Один сообщил о себе цифрой, трое — нет.
И это была одна задача, заурядная, закончившаяся благополучно. Не катастрофа, не громкий отказ, не история, которую пересказывают на совещании. Такие задачи идут потоком: их десятки в неделю у одной команды и сотни в квартал, и каждая раскладывается на тех же четверых. Второй и третий плательщик вносят свою долю мелкими купюрами, по нескольку минут за раз, и мелочь эта не собирается ни в какую кучу, потому что собирать её некому и негде. Четвёртый платит редко и крупно, но его платёж уже никак не связан с покупкой: он приходит в другой месяц и к другому человеку. Стоимость результата устроена так, что её невозможно увидеть целиком, стоя в любой одной точке.
Дальше можно было бы сказать, что первый платёж мал по сравнению с остальными, и на этом закончить. Но интереснее не величина, а видимость. Прайс освещает ровно одного плательщика из четырёх, и освещает его так ярко, что остальные оказываются в темноте не потому, что малы, а потому, что свет направлен мимо них. Тот, кто читал результат, не выставляет счёта самому себе. Тот, кто доводил, считает это частью своей работы, и в каком-то смысле прав. Тот, кто разбирался через месяц, вообще не знает, что участвует в этой сделке.
Так вышло не по чьему-то умыслу. Цена за знаки — единственная величина в этой истории, которую можно измерить с точностью до сотой доли и предъявить, не прибегая ни к чьей оценке на глаз. Всё остальное измеримо плохо, спорно и неприятно для измерения: у человека нет счётчика, который включался бы в момент, когда он начинает читать чужой код, и выключался, когда перестаёт об этом думать. Естественно, что учёт лепится к тому, что учитывается. Неестественно другое — считать, что сосчитанное и есть целое.
Есть ещё одно обстоятельство, из-за которого темнота так устойчива. Видимый счёт приходит туда, где принимают решение: его видит тот, кто выбирает машину, подписывает договор и отвечает за расходы. Невидимый счёт приходит совсем в другое место — к тем, кто читает, доводит и через месяц разбирается, и эти люди в выборе не участвовали. Между двумя счетами нет общего стола, на который их можно было бы положить рядом. Один приходит в отчёте, другой — в усталости к четвергу, и человек, у которого есть оба, встречается редко; чаще у каждого есть ровно один, и каждый по-своему прав, говоря, что расходы под контролем.
Я долго так считал. Когда меня спрашивали, во что обходится работа машины, я называл сумму из отчёта, и она была правдой; когда меня спрашивали, дешевле ли одна машина другой, я делил одну сумму на другую и называл отношение, и оно тоже было правдой. Обе правды складывались в ложное целое, потому что обе относились к одному плательщику из четырёх, а решение принималось за всех четверых.
Здесь нужно назвать различие. Есть счёт, который приходит сразу, в понятной валюте, с указанием суммы и отправителя, — назову его видимым. И есть счёт, который приходит потом, в чужом времени, без суммы и без подписи, — невидимый. Оба оплачиваются. Разница между ними не в том, насколько они тяжелы, а в том, что первый можно положить рядом с другим таким же и сравнить, а второй не с чем положить рядом: он приходит в другой валюте, в другой месяц и другому человеку.
Экономисты различали видимое и невидимое задолго до машин, которым можно что-то поручить. На этом различии стоит вся классическая мысль о ложной экономии: сбережённое всегда на виду, а утраченное всегда где-то ещё, и счёт сводится неверно не из-за ошибки в сложении, а из-за того, что часть слагаемых не попала в столбец. Я называю это родство не для того, чтобы опереться на авторитет, а чтобы обозначить: речь идёт не о новом свойстве машин, а о старом свойстве человеческого учёта, которое машины подсветили с непривычной силой.
Стоит договориться и о том, что означает эта неподписанность. Подписанный счёт можно оспорить: у него есть отправитель, сумма и основание, и если сумма неверна, есть с кем говорить. Неподписанный счёт оспорить нельзя, его можно только оплатить, и оплачивается он в тот момент, когда никто не считает себя платящим. Человек, потративший утро на чужую правку, не скажет, что купил эту правку; он скажет, что разбирался с дефектом. Работа, которая была бы отменена, если бы кто-то увидел её цену заранее, спокойно делается, потому что цена нигде не названа. Невидимый счёт не становится меньше оттого, что его не заметили; он становится только неоспоримым.
Подсветили потому, что раньше разрыв между двумя счетами был меньше. Когда работу делает человек, оба счёта выставляются в одной валюте: его час стоит столько-то, час того, кто за ним проверяет, — столько-то, и даже если второй час никто не считает, он хотя бы соизмерим с первым. Машина вводит в расчёт величину другого порядка и другой природы. Её труд стоит доли копейки и измеряется в знаках; труд, который она порождает у людей, стоит дорого и измеряется в сосредоточенности. Соблазн состоит не в том, чтобы забыть про второе, а в том, чтобы вычесть первое из первого и решить, что сэкономил.
Я не думаю, что от этого соблазна спасает бдительность. Он держится не на невнимательности, а на честной привычке считать в той единице, которая поддаётся счёту, и всякий раз, когда я ловил себя на нём, мне казалось, что я рассуждаю строго. Строгость и была проблемой: я аккуратно складывал то, что складывалось, и не задавал вопроса, полон ли столбец. Единица досталась мне из времён, когда я задавал машине вопросы и получал ответ за секунду; в вопросе она работала, потому что вопрос и стоил ровно того, что было в счёте. В поручении та же единица измеряет малую долю происходящего и продолжает выглядеть строгой.
Можно было бы возразить, что невидимый счёт есть всегда и потому его допустимо вынести за скобки: кто бы ни делал работу, её всё равно кто-то читает и кто-то доводит. Возражение сильное, и я сам им долго пользовался. Оно верно ровно в одном случае — если второй счёт одинаков у любого исполнителя. Тогда он и вправду константа: прибавляется к обеим чашам, ничего не меняет, и выбирать можно по первому счёту. Но одинаковым он не бывает. Сколько минут уйдёт на чтение, сколько правок понадобится вокруг, найдётся ли через месяц второе место, где нужна была та же правка, — всё это зависит от того, кто делал работу, и зависит сильнее, чем цена за знак. Вынося невидимый счёт за скобки, я выношу туда единственную величину, на которую мой выбор влияет по-настоящему.



