Как работает нейросеть хабр

0
14

Работа в Яндексе

Радио

Возьмем, к примеру, нейросети для генерации изображений. Казалось бы, просто: напишешь «красивый котик на закате» – и получишь соответствующую картинку. Но если вам нужен конкретный образ, который вы представляете, возникают сложности. Как описать его так, чтобы получить именно то, что вы хотите?

Как я говорил раньше, если мусор на входе, мусор будет на выходе. И если человек просто приходит в нейросеть и пишет: «Создай мне TikTok», а нейросеть что-то делает, но не получается, и человек говорит: «Ахаха, ты не умеешь писать код» — это очень высокомерная позиция, мне кажется. Нужно потратить время, разобраться.

В моих тестах я заметил, что модели лучше справляются с более простыми, изолированными задачами, но начинают испытывать трудности, когда требуется создать систему с большим количеством взаимосвязанных компонентов. Например, AI не может просто взять и запустить код на вашем компьютере — для этого нужна дополнительная инфраструктура и настройка.

Поэтому, хотя идея «сайта в один клик» звучит привлекательно, реализация такой системы требует решения множества технических и организационных вопросов. Это не невозможно, но и не так просто, как может показаться на первый взгляд. Ключевой вызов заключается не столько в написании кода, сколько в создании целостной, интегрированной системы, способной работать в реальных условиях.

Вы хотите сказать, что человек не программист не способен создать какую-то программу самостоятельно? Но ведь в LLM заложена возможность возвращения ошибки. Нейросеть согласна постоянно дорабатывать код до работоспособного состояния. Не обязательно быть программистом, чтобы понять, работает программа или нет.

Вопрос о том, может ли человек без навыков программирования создать программу самостоятельно с помощью LLM, довольно сложный. С одной стороны, современные языковые модели имеют встроенные механизмы обработки ошибок и способны итеративно улучшать код. Теоретически, даже непрограммист может определить, работает программа или нет.

Ключевой вопрос здесь — эффективность использования времени. Стоит ли менеджеру тратить целый день на общение с нейросетью вместо выполнения своих прямых обязанностей? Если ценность созданного продукта превышает потенциальную ценность других задач менеджера (например, общения с клиентами или оптимизации процессов), то такой подход может иметь смысл. Однако часто эффективнее поручить работу с нейросетью джуниор-разработчику, у которого уже есть базовые знания в программировании. Это позволит получить результат быстрее и качественнее.

Мне нравится быть причастной к крутым запускам, вращаться в кругу творческих, невероятно умных людей. Нравится видеть, как продукты, с которыми ты соприкасался, меняют жизнь людей к лучшему. Отовсюду слышишь, что Практикум — это знак качества, а потом советуешь своему племяннику новый запуск лицея в онлайн-формате. Вроде только недавно считали бюджет колонки Алисы — а теперь в линейке появились новые модели со множеством возможностей. И так до бесконечности!­

Я склоняюсь к тому, что такой сценарий возможен, но с некоторыми оговорками. Важно понимать, что для AI нет принципиальной разницы между написанием сложного алгоритма, используемого на собеседованиях, или простого кода для сохранения данных в базу. Однако существуют ограничения, которые нужно учитывать. Это качество входных данных и обучающей выборки AI, ограничения контекстного окна, с которым работает нейросеть, а также сложность интеграции различных компонентов системы.

— Салют, давай выучимстих!

По большому счету, такие попытки были сделаны с различными языками, вроде Rust. Язык Rust славится своими сообщениями об ошибках — там все подробно описано: что произошло, где, куда посмотреть. Теоретически, мне кажется, это не нейросеть должна сделать такой язык для себя. Это должны сделать люди, у которых задача будет сказать: «Окей, сообщения об ошибках этого языка программирования должны быть написаны на простом английском языке, без строчек кода, без чего-либо». Но строчки кода опять-таки нужны людям, чтобы можно было понять, куда надо пойти посмотреть, что сделать. И эту связку надо как-то будет все равно сохранить.

В свете развития AI-технологий, как вы оцениваете будущее профессии программиста? Многие компании инвестируют в платформы, где клиент может заказать сайт «в один клик», и AI якобы сделает всю работу. Считаете ли вы это реалистичным сценарием или больше маркетинговым ходом?

Сложный вопрос. Некоторые люди говорят, что просто будем писать больше программ. С другой стороны, как показывает ситуация в экономике США и Европы после ковидного сдувания пузыря, когда уволили десятки тысяч программистов, как будто бы оказалось, что не нужно столько программ. Кончились бесплатные венчурные деньги, и их перестали осваивать в различных мобильных приложениях, условно. Почему создание нейросети вдруг должно увеличить количество программистов, если даже без нейросети программистов десятки тысяч сократили? Это вопрос, на который нужно сперва ответить. У меня ответа на него, наверное, нет.

ЧИТАТЬ ТАКЖЕ:  Когда искусственный интеллект поработит человечество

Дмитрий Рожков, менеджер команды Kubernetes-сервисов и создатель популярного YouTube-канала Senior Software Vlogger, поделился своим опытом тестирования AI-ассистентов для программирования. Он рассказал о том, способны ли нейросети заменить программистов, какие подводные камни ждут при работе с AI-помощниками и почему мы до сих пор не видим бума новых приложений, созданных с помощью искусственного интеллекта.

Допустим, у нас есть техническая документация, толстая книга по разработке банковской системы. Эту документацию кто-то должен прочитать всю. Но даже если он ее всю прочитает, он ее всю не запомнит. Соответственно, этот человек будет делать конспект. Конспект по факту — это суммаризация текста. Эта проблема решена. То есть каждая отдельная маленькая проблема может быть решена нейросетью. Но связать вместе — проблема. Разработчики ИИ как раз сейчас и работают над ее решением. Они пытаются заполнить эти промежутки чем-то, каким-то «эфиром», который нейросеть тоже сможет использовать.

Что касается детализации промпта, я склоняюсь к тому, что он должен быть на человеческом языке и не слишком подробным. Иначе написание промпта для простой задачи может занять столько же времени, сколько и написание самого кода. Я видел примеры, где люди используют промпты на 200 строк, детально описывающие структуру базы данных и ORM на TypeScript. Но это уже похоже на то, что вы написали половину кода сами, а потом говорите, что это сделала нейросеть.

Так как агенты начинали писать на Python, у меня были интересные переписки с ними. Например: «Эй, а разве можно в TypeScript запустить файл с расширением .py?» «Нет, это расширение для Python». Я говорю: «Да, но я-то попросил написать на TypeScript». Тогда они извинялись и переписывали все на TypeScript, но тоже с определенной степенью отсутствия качества.

Как вы оцениваете новые подходы к генерации кода AI, в частности, системы вроде O1 превью? Насколько, по-вашему, такие инновации могут повысить качество программирования с помощью AI-ассистентов? Какие подходы сейчас наиболее распространены в этой области?

Салют, лайк!

Важно понимать, что все эти языковые модели (LLM), работающие с промптами, на самом деле оперируют одним большим промптом, а не серией отдельных сообщений, как может показаться в чате. Каждый новый запрос или уточнение просто добавляется к существующему промпту. Из-за этого, чем дольше мы общаемся с нейросетью в процессе написания программы, тем больше она может терять контекст того, что было в начале разговора. Это создает определенные проблемы, которые необходимо учитывать при разработке AI-ассистентов для программирования.

Возвращаясь к вопросу о песочницах и интеграции сред выполнения, важно отметить, что компании, работающие над AI для программирования, стремятся создать комплексные системы. Эти системы позволяют нейросетевым агентам взаимодействовать с различными компонентами разработки. Речь идет о платформах для запуска кода и обработки ошибок, доступе к интернету для поисковых запросов и сбора информации из документации и других источников. Кроме того, нужны векторные базы данных для эффективного поиска и извлечения релевантной информации, например, RAG поиск, а также инструменты для создания и управления картой репозитория кода.

Получается, что если ответ «нет, не похоже, это не хокку», то мы запускаем цикл еще раз и, допустим, пробуем этот цикл 10 раз. Если через 10 раз хокку не сгенерировалось, мы падаем с ошибкой или идем на следующий шаг. Этот момент генерации, верификации и, возможно, повтора действительно драматически улучшает качество выхода.

Полную версию интервью, организованного нашей компанией Artezio, можно посмотреть на канале Ai4Dev на Youtube. А еще у нас появился Telegram-канал для разработчиков, которые используют ИИ. В нем можно обмениваться мнениями и реальными кейсами.

Работать в Яндексе — это делать такие продукты и решения, которые затрагивают миллионы людей по всему миру. Для меня Яндекс — это больше чем работа, это большая часть моей повседневной жизни. Коллеги уже давно стали друзьями, с которыми мы видимся не только в офисе, но и за его пределами.

Штука в том, что это действительно повышает качество выхода. Я смотрел интервью с Максимом Страховым на «Подлодке», по-моему, где он очень подробно рассказывает, как работает LLM. В частности, он рассказывает об одном из своих кейсов, где он просил нейросеть сгенерировать хокку, японский стишок. А вторым запросом он спрашивал, похоже ли это на хокку. То есть он ту же самую нейросеть без предварительного контекста просил верифицировать результат. И этот второй запрос значительно улучшал выход.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь