7 способов применения нейронок. ИИ.. ИИ. ии помощник.. ИИ. ии помощник. ии-агенты.. ИИ. ии помощник. ии-агенты. искусственный интеллект.

Привет! Меня зовут Степан, я разработчик. Чуть больше года назад я открыл для себя агенсткую разработку, и мой мир теперь не будет прежним: я применяю ИИшницу не только в работе и не только в разработке, но ещё и в аналитике, тестировании, диагностике, и даже в хобби!

С удовольствием поделюсь разными примерами её применения:

Аналитик кода

Часто говорят, что нейросети галлюцинируют. Обычно этим понятием объясняют явление, когда нейронка достраивает картину самостоятельно в условиях неопределённости.

Если же дать нейросети, например, свою кодовую базу и спросить что-нибудь по ней, вероятность ошибок становится значительно ниже, ведь ИИшнице не надо будет придумывать архитектуру с нуля, а лишь проанализировать то, что уже есть.

Особенно это полезно, когда нужно разобраться в новом большом сервисе, который ты видишь впервые.

Что интересного можно спросить у ИИ про твой код?

Отслеживание пути данных

Например, пока поле из базы данных попадёт на экран пользователя, оно может:

  • несколько раз переименоваться;

  • пройти через DTO и мапперы;

  • объединиться с другими полями;

  • вычисляться на основе нескольких значений.

Вручную восстановить такую цепочку бывает очень утомительно (особенно когда путь проходит через несколько сервисов в разных репозиториях): нужно открыть десятки файлов, постоянно переключаться между ними и держать всё это в голове.

ИИшница же способна довольно быстро собрать всю цепочку и показать её целиком.

Диагностика сложных багов

Можно попросить нейросеть:

Проанализируй кодовую базу и найди возможные причинно-следственные связи, которые могли привести к <этому багу>. Покажи, на чём основан каждый вывод. Не додумывай, перепроверяй, уточняй

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

Важный момент про безопасность

Анализировать корпоративный код нейросетью стоит только тогда, когда это разрешено политиками твоей компании.

Если внутренние правила прямо запрещают передавать код внешним ИИ-сервисам, то делать этого, конечно, не стоит. Особенно если речь идёт о публичных облачных нейросетях, работающих за пределами корпоративного контура.

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

А если в компании запрещено использовать внешние нейросети, то нередко есть альтернатива — внутренний ИИ-ассистент, который развёрнут в корпоративном контуре. В этом случае лучше пользоваться именно им: кодовая база остаётся внутри инфраструктуры компании, а ты при этом всё равно получаешь преимущества анализа кода с помощью ИИ.

Хаос-инженер

Иногда баг возникает в очень специфических условиях: большая конкуренция за ограниченные вычислительные ресурсы, нестабильная сеть, внезапно отвалившийся брокер сообщений и т. п.

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

На моём компе этот тест стабильно проходил, поэтому мне нужно было подобрать такие ограничивающие условия, при которых он начнёт падать, чтобы потом убедиться, что внесённое исправление действительно устраняет проблему.

Сложность в том, что зависимость немонотонная: если ресурсов слишком много, все необходимые операции успевают выполниться вовремя. Если чересчур мало, то операции настолько медленны, что тоже, как ни странно, успешно выполняются. Надо было подобрать золотую середину в несколько итераций, что вручную может выполняться довольно долго.

Я попросил нейросеть помочь подобрать нужные параметры, и она стала итеративно запускать тест в контейнере с определёнными ограничениями и несколько раз прогонять его в таком окружении.

И это сработало: удалось получить воспроизводимое нестабильное поведение и проверить исправление.

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

В общем, нейросеть позволяет довольно быстро подготовить эксперимент, запустить его и получить воспроизводимый сценарий, и это ещё один интересный способ использовать ИИ в разработке: не только проанализировать код, но и испытать его в стрессовых условиях.

Тестировщик

Многие вещи в программировании начинаются и заканчиваются тестами:

  • Хочешь исправить баг? Сперва напиши тесты на ожидаемое поведение.

  • Закончил задачу? Напиши тесты!

Написание тестов — довольно рутинная работа. Особенно неприятно, если основной код уже написан, а теперь, оказывается, нужно потратить примерно столько же времени, чтобы убедиться, что он работает (и зачастую тесты, конечно, находят баги, что полезно).

Если не доверяешь нейронке написание основного кода, попробуй отдать ей написание тестов.

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

Кстати, ещё интересный вариант — попросить нейросеть проверить уже написанные тесты.

Зелёный тест ещё не означает хороший тест. Можно написать тест с такой запутанной подготовкой, что он фактически проверяет сам себя. Или ничего не проверяет вовсе. Или проверяет не то, что нужно. Или проверяет слишком много и ломается от каждого изменения.

Особенно это неприятно со сложными интеграционными тестами: они могут выполняться долго, а пользы при этом не давать почти никакой.

Здесь ИИшница тоже может помочь. Она способна быстро пройтись по коду, проследить взаимосвязи и ветвления, понять, что реально происходит во время теста, и найти несостыковки между тестом и тем, что он якобы должен проверять.

Ещё более интересный вариант: реальное тестирование функционала.

Юнит-тесты могут проверить лишь определённую логику в вакууме. Интеграционные тесты могут проверить, как взаимодействуют между собой по одному экземпляру сервисов в идеальных условиях.

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

В общем, моя рекомендация, конечно же, доверить это всё нейросети.

Всё необходимое можно поднять в контейнерах, что выглядит довольно безопасно для твоего компа, а тест-кейсы нейросеть воспроизведёт через запросы к поднятым сервисам.

Можно ещё и попросить её придумать какие-нибудь интересные неочевидные случаи для проверки. Ты можешь удивиться, на что способны сервисы в состоянии гонки за БД при обрыве связи с брокером.

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

Конечно, важно, чтобы на тестовом стенде не оказалось каких-нибудь чересчур чувствительных данных: персданных пользователей, кредов от прод-сервисов и прочего, что нейронке не стоит читать лишний раз.

В общем, ещё одна вполне практичная сфера применения нейросетей в разработке — это тестирование на всех уровнях: написать тесты, проверить тесты, протестировать изменения.

Техподдержка твоего компа

Нейросети довольно интересным образом эволюционировали.

Сначала это был просто чат в браузере: задаёшь вопрос — получаешь ответ из того, чему модель научилась.

Потом они научились искать информацию в интернете.

Потом — принимать файлы и анализировать уже твои данные.

А теперь нейросети можно дать доступ к файлам, папкам и различным системным инструментам, и вот тут начинается самое интересное.

ИИшница может не только читать файлы, но и выполнять разрешённые действия: запускать команды, проверять соединения, смотреть логи, анализировать конфигурацию.

И это очень удобно для диагностики всяких странных проблем.

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

Разбираться руками — это целый квест: проверить DNS, сеть, доступность хоста, настройки, запросы…

Нейросеть сама прошлась по этому пути: проверила соединения, попинговала нужные адреса, посмотрела результаты и в итоге объяснила, где проблема и что с ней делать.

Или другой пример: у друга периодически вылетала игра. Причём совершенно непонятно почему: играем — и внезапно краш.

Можно вручную искать логи, смотреть журнал событий, вспоминать, какие драйверы недавно обновлялись…

А можно дать нейросети доступ к машине и попросить:

Посмотри, почему игра вылетела

Она посмотрела логи падения, ошибки, состояние системы, драйверы и сопоставила события по времени.

В итоге выяснилось, что проблема была в драйвере RGB-клавиатуры.

Причём руками до такой зависимости между «вылетела игра» и «виноват драйвер подсветки клавиатуры» можно вообще не додуматься.

Так что ещё одно из интересных применений нейросетей — техническая диагностика твоего компьютера.

Линус Торвальдс кстати тоже использовал ИИ для отладки ошибки в драйвере графического процессора: https://habr.com/ru/news/1073386/

Главное, конечно, не давать бездумный доступ ко всему компьютеру. Доступ к файлам и выполнение команд должны быть ограничены тем, что ты хочешь доверить.

Изучение сложного материала

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

В том числе поэтому я стал писать посты в канал C# Short Posts: чтобы закрепить изученную тему, пропускаю её через пальцы.

Обычно начинаю с чего-нибудь простого: прошу нейронку рассказать поверхностно про определённую тему, чтобы зацепиться за уже известные мне вещи. Дальше, когда вижу что-то незнакомое, непонятное или сомнительное, уточняю про это. И дальше раскручиваю эту линию. В итоге ИИшница раскрывает довольно много деталей, о которых ещё и не в каждой статье напишут.

В разработке обычно правильный ответ на любой вопрос — «зависит», и нейронка помогает увидеть те самые нюансы, от которых как раз и зависит ответ на тот или иной вопрос.

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

Редактор

Написание постов в мой канал занимает довольно много времени: подумай, напиши, исправь ошибки, добавь эмодзи, отформатируй и придумай картинку.

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

Как это можно сделать?

В последнее время я выработал для себя такую последовательность: надиктовываю голосовуху себе же в личку. По сути, это неструктурированный поток мыслей, и где-то там между строк есть основная мысль, которой я и хотел бы поделиться с тобой. С помощью ИИ (внешнего или локального) транскрибирую это в текст. Текст отдаю нейронке (как правило, ChatGPT) с запросом «преобразуй это в пост публикации». Меня поражает, что GPT при этом почти моментально отдаёт ответ.

Тут я получаю почти готовый, более-менее структурированный текст. Дальше начинается творческая часть, которую мне нравится делать: форматирование, эмоджики, свой стиль.

Перед тем как делать это, прошу тот же ChatGPT нарисовать картинку на тему обработанного текста.

В целом на этом всё: получаю готовый пост, ставлю на отложку, иду пить кофе.

В общем-то, и творческие этапы можно тоже отдать нейронкам: ИИшница может добавить форматирование и расставить эмоджики. А ещё можно почти на всех этапах пользоваться бесплатными или локальными нейронками, чтобы не тратить свои лимиты.

Благодаря тому, что ИИшницу можно применять в качестве редактора текстов, время написания постов довольно сильно сокращается.

Кстати, интересно, обратишь ли ты внимание, что этот раздел был полностью написан вручную (и предыдущий, и следующий).

Программист

В далёком 2023 ИИ казался лишь игрушкой, которая худо-бедно умеет генерировать нелепые картинки с лишними пальцами. Сегодня это неотъемлемый инструмент многих разработчиков, наравне с IDE, а то и вместо неё.

Написание кода, кажется, это самая естественная задача для ИИ: в ней обычно формализованы все требования,в целом давно описан сам процесс работы, и даже есть точные шаги, что делать дальше. Почти на каждом этапе жизненного цикла разработки применяются инструменты автоматизации, использование которых сводится к нажатию кнопки в нужный момент времени или отправлению сообщения в чат. То есть, всё это ИИшница может делать своими силами, если дать ей чёткие инструкции на каждый этап работы.

Прямо как новичку, который пришёл в твою команду.

Первое время он может совершать ошибки, но, получая корректирующую обратную связь и опыт, он со временем всё делает без ошибок.

С нейронкой это работает точно так же, поскольку у неё тоже есть память, и можно попросить её порефлексировать над замечаниями, сделать выводы, и вынести опыт.

С первого раза, без должного контекста и инструкций, ИИшница, конечно, выполнит задачу, но как-то по своему, “как чувствует”. Если это пет-проект, то может и не страшно. В рабочем же проекте важно соблюдать определённые требования и стандарты. Ты, как разработчик, уже знаешь о них, и интуитивно соблюдаешь, не задумываясь.

Для нейронки надо хотя бы дать инструкцию, что важно соблюдать стиль и правила окружающего кода.

Какой это стиль и правила? ИИшница сама выявит, проанализировав код, и, возможно, следующий результат станет “почище”, будет в чем-то соответствовать стилю, и даже могут появиться тесты.

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

Точно так же стоит пройтись более верхнеуровнево и зафиксировать определённые факты, бизнес-процессы, и прочую важную информацию, которую нейронке стоит знать при выполнении задач.

Так вот, шаг за шагом, постепенно, стоит погрузить ИИшницу, как ещё одного участника твоей команды, в контекст проекта и компании. Заоонбордить, так сказать.

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

В результате, у тебя появится помощник, который знает всё то же самое, что и ты, и может быстро проанализировать код и ответить на твой вопрос, так же быстро написать новый функционал, протестировать его, объяснить сложные моменты, и написать статью. А если что-то не запускается или не работает, то ещё и починить это.

Сперва, конечно, может быть сложно использовать нейронку в своей основной работе, но можно постепенно “вкатываться” в применение этого инструмента, выполняя с его помощью всё больше и больше задач.

А что ещё?

По мере изучения новых способов применения нейронок я делюсь ими в своём канале: кросс-агентная разработка, кастомная сборка инструментов, “дешёвые” (с точки зрения потребления токенов) интеграции с внешними сервисами без MCP, воплощение идей в физическом мире, и многое другое! Так что подпишись, чтобы ничего не пропустить и узнать о них как можно раньше!

Автор: GranSteL

Источник