Kitobdan iqtiboslar Мир наизнанку. Как программировать и не писать кодmuallif Константин Хайт
десь нам на помощь снова приходит гибридизация, совмещенная с варьированием запросов. Смысл методики заключается в том, что мы можем обратиться к нейросети с несколькими сходными, но слегка видоизмененными промптами, а затем скомбинировать ответы. В силу отсутствия детерминизма ответы скорее всего будут различаться, возможно даже значительно, и их объединение, не механическое, разумеется, а содержательное, будет обладать достоверностью каждого отдельного результата и информативностью их суммы.
Отучить нейросеть врать и придумывать — одна из самых нетривиальных задач, независимо от того, пользуетесь ли вы ею, как справочником, пишете с ее помощью код, или же встраиваете в качестве движка в свою программу. Мы уже обсуждали в самом начале, что «лживость» и «апломб» заложены в саму природу больших лингвистических моделей. LLM должна выдать ответ, наиболее вероятный с точки зрения соответствия ее обучающей выборке, а оценить его релевантность с позиций реального мира не может, так как в этом мире не живет и ничего, помимо текстов, на которых обучена, про него не знает.
Я имею в виду управленцев, хороших управленцев: они профессионально рассматривают подчиненных как некоторые ресурсы, инструменты, понимают ограниченность их возможностей, свою ответственность за правильную постановку задачи, и умеют не просто ожидать результата, а добиваться его. Для них коммуникация с LLM — это достаточно привычный процесс, и они реже, чем представители большинства других профессий, склонны предъявлять бессмысленные претензии и становиться жертвами необоснованных ожиданий
По моим наблюдениям, самыми адекватными пользователями нейросетей являются менеджеры
ний, выискивать «последнюю версию, где это еще работало как надо» в многостраничном диалоге с чат-ботом — мартышкин
столкнувшись с неудовлетворительным ответом, особенно если каждый следующий хуже предыдущего, а рецепты выше не помогают, начните диалог заново. Загрузите наиболее годный из предыдущих вариантов и опишите модификации, которые необходимо сделать. В противном случае «загаженный» контекст может стать непреодолимым препятствием для дальнейшего кодирования
— Сверяйте объем кода, полученного на новой итерации с прежним размером. Если вы просите модель о добавлении функций, а количество строк при этом значимо уменьшается — это хороший признак того, что началось отбрасывание функций. Если не отловить этот синдром вовремя — значительная часть усилий отправится насмарку
— Не поленитесь разобраться с версионным контролем хотя бы на самом-самом базовом уровне. Git — лучшая защита от разочарова
программу целиком. Да, вам придется собирать код из кусочков вручную, но это все еще драматически эффективнее, чем писать его с нуля
Собственно, более сложные и общие советы мы еще успеем разобрать ниже, но я намерен позанудствовать еще немного
— Многие эксперты в кавычках и без рекомендуют максимально подробно и структурированно описывать задачу нейросети. Это хорошая дельная практика, но, следуя ей буквально, вы рискуете затратить больше усилий, чем если бы решали задачу без помощи AI. Вместо этого начните с того, что объясните, что вы хотите так, как объясняли бы это профессионалу-человеку. Если результат будет неудовлетворительным — разъясняйте те детали, которые оказались поняты неправильно, и переходите к подробному описанию мелочей только добравшись непосредственно до их реализации
— Несколько раз подряд столк
об ошибках — просто передавайте их обратно в диалог. В качестве отладчика и диагноста исключений нейросети особенно эффективны
— Кидайте ей обратно код, с которым есть проблемы и код, с которым данной проблемы не было (если таковой у вас есть). «Вот это работало правильно, а вот это работает неверно». Такие подсказки помогают электронному склеротику вспомнить, о чем шла речь две минуты назад
— Когда программа становится достаточно большой, больше полутора сотен строчек кода, запрашивайте не полный ее вариант, а список изменений по отношению к предыдущей, или лучше предъявленной вами версии. Это сэкономит контекст, уменьшит «лень» и галлюцинации
— Дробите сложные вещи на модули. Запрашивайте конкретную функцию, указав требуемые параметры и формат вывода, а не про
Балу
— Столкнувшись с галлюцинациями нейросети, первым делом четко и подробно объясните ей проблемы, которые породил созданный код. Сама она их не увидит. Игнорируйте утверждения, что «это финальная, полная и протестированная версия» — выше мы уже разобрали, что LLM не несет ответственности за свои слова и почему
— Не пытайтесь решить много проблем за один раз, это перегрузит контекст. Выражение «за двумя зайцами погонишься» — это как раз про дообучение нейросетей. Двигайтесь поступательно
