Недавно я завершил эксперимент: создал многофункционального Telegram-бота, не написав ни строчки кода самостоятельно. Весь python код был сгенерирован нейросетью Claude Sonnet на основе моих текстовых инструкций.

Вывод эксперимента простой: даже без навыков программирования можно создать собственное небольшое приложение! Видео демки:

О боте

Созданный ТГ-бот @korenev_ai_bot - это нейрофотограф и нейростилист в одном лице. Он позволяет пользователям:

  • Увидеть себя в разных образах (безумный ученый, звезда кино, бомж, Барби и т.д.)

  • Изменять элементы фотографии (например, заменить футболку на пиджак)

  • Создавать нейрофотографии в различных стилях

Технологии под капотом

В боте задействованы две нейросети:

  • Stable DiffusionXL - отвечает за генерацию изображений

  • GPT4o-mini - генерирует инструкции для Stable Diffusion при выборе персонажей и выполняет перевод на английский в режиме нейростилиста

Основной функционал

  1. ? Нейростилист: замена элементов фото

  2. ? Нейрофотограф: создание фото в разных стилях

  3. ? Стань героем: широкий выбор персонажей и возможность задать свое описание

  4. ?Эксперименты с телосложением: от худого до мускулистого

Техническая реализация

В боте реализованы:

  • 4 меню для различных функций

  • Опрос пользователей

  • Логирование в файлы и Telegram-канал

Масштабирование проекта и достижение пределов

По мере развития, проект значительно вырос в объеме и сложности. То, что начиналось как пара файлов, превратилось в полноценное приложение:

  • Количество файлов: с 2 до 16

  • Общий объем кода: около 1400 строк

Достижение пределов возможностей

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

  1. Сложности с контекстом: При работе с большим количеством файлов Claude стал чаще "забывать" детали ранее написанного кода.

  2. Ограничения в сложности логики: Некоторые более сложные алгоритмические задачи требовали многократных итераций и уточнений.

  3. Время обработки: Генерация и модификация крупных блоков кода стала занимать заметно больше времени.

Процесс разработки

Первый этап: Быстрый старт

Начальная фаза проекта прошла на удивление гладко и быстро. Я стартовал с обычного чата с Claude, придерживаясь следующей стратегии:

  1. Интеграция с API: Первым делом я запросил у Claude код для взаимодействия с API сервиса, использующего Stable Diffusion. Для этого я просто предоставил документацию по API и попросил сгенерировать соответствующий код. После получения кода я тщательно протестировал его работоспособность.

  2. Создание интерфейса: Следующим шагом стала разработка первого меню Telegram-бота - "Стань героем". Я описал Claude желаемую функциональность и получил готовый код.

  3. Объединение компонентов: На третьем этапе я попросил Claude интегрировать код для работы с API и меню бота в единое целое. К моему удивлению, все сразу заработало без серьезных проблем.

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

Второй этап: Масштабирование и оптимизация

По мере роста проекта возникла необходимость в более структурированном подходе к разработке. Этот этап характеризовался следующими особенностями:

Реструктуризация кода

  1. Разделение на модули: Когда Claude перестал справляться с генерацией полных файлов, я инициировал реструктуризацию. Попросил AI предложить новую структуру файлов и распределить функции между ними.

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

Преодоление ограничений Claude

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

  2. Лимит на файлы: Claude мог работать максимум с 5 файлами одновременно. Для обхода этого ограничения я начал использовать проекты вместо обычных чатов.

Итеративный подход и управление контекстом

По мере роста проекта становилось очевидно, что линейный подход к разработке с помощью AI не всегда эффективен. Часто возникала необходимость "отматывать" диалог (а вместе с ним и код) назад, чтобы актуализировать контекст и внести новые требования.

Изначальная схема работы "Инструкция - Ответ AI - Дополнение к инструкции - Новый ответ AI" постепенно теряла эффективность. Особенно это проявлялось на поздних стадиях разработки, когда проект уже значительно разросся. Claude начинал путаться в деталях или забывать ранее установленные параметры.

Потеря контекста кода

На начальных этапах проекта Claude легко ориентировался в генерируемом коде. Однако с ростом объема и сложности проекта возникла неожиданная проблема: AI начал периодически "забывать" части ранее написанного кода, особенно в больших файлах и сложных функциях.

Внедрение системы контроля версий

Для решения этой проблемы я прибегнул к использованию системы контроля версий Git. Это позволило:

  1. Отслеживать все изменения в коде

  2. Сравнивать версии, генерируемые Claude

  3. Иметь четкое представление об эволюции проекта

Такой подход значительно улучшил процесс разработки и помог сохранить целостность кода даже при работе с большими объемами информации.

Временные затраты на разработку

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

  1. Первый этап: Начальная разработка прошла достаточно быстро и легко. На это ушло около двух вечеров без особых затруднений. Этот этап включал в себя базовую настройку и реализацию основных функций бота.

  2. Второй этап: Расширение функциональности и решение возникших проблем оказалось более трудоемким процессом. Этот этап занял примерно три полных дня интенсивной работы. Здесь происходила оптимизация кода, решение проблем с контекстом и добавление более сложных функций.

Что дальше?

Этот эксперимент открыл для меня новые горизонты в области AI-ассистированной разработки. У меня появились идеи по оптимизации процесса и преодолению обнаруженных ограничений. В следующий раз подойду к разработке с ИИ более системно. Основными идеями поделюсь в своем Telegram-канале GPT в тапочках. Подписывайтесь!

Коренев Александр

Комментарии (6)


  1. digtatordigtatorov
    29.07.2024 12:45

    Вы же понимаете, что 1400 строчек кода не серьезно?


    1. PDEMON
      29.07.2024 12:45

      Для человека, который в коде вообще ничего не понимает это очень даже серьёзно. Я тоже неделю назад для себя открыл ChatGPT 4o. Даже в четвёртой версии у меня толком ничего не получалось, а в 4о прям сходу пошло. Я тоже нагенерил несколько тысяч строк кода. Делал сначала проект на vb с windows forms, потом передел на C# с WPF. Сначала, когда вообще не понимал что к чему просил его переписывать каждый раз целиком. Когда дошло строк до 500, я понял что очень много времени теряю. Дня через два начал потихоньку понимать структуру и просил уже сегментами переделывать. Прошёл такую же дорожку как и автор поста. Сейчас вот простеньки аддоны для своих нужд делаю и это круто что не нужно ждать на форумах ответа по несколько дней.


    1. lesnik500 Автор
      29.07.2024 12:45
      +1

      Я хотел показать, что небольшие приложения вполне спокойно можно создать уже без навыков программирования. И какой-нибудь ChatDev со временем может потеснить не только джунов, но и на миддлов замахнуться.
      Год назад 140 строк, сейчас 1400. Что будет через год?


  1. MagDen
    29.07.2024 12:45

    Чёт мне померещилось 14 тыс. строк. Дай-ка , думаю, гляну как автор заставил проглотить такой, пусть и очень небольшой, но нереальный для AI контекст. А нет, это лишь 1400 строк. Буквально 3-4 максимально лаконичных файла с кодом или +-50% от обычного 1 класса на Java...


  1. xaver
    29.07.2024 12:45

    Попробуй aider


  1. Aleron75
    29.07.2024 12:45

    генерит круто! Почти как @Avatar_resume_bot
    генерит круто! Почти как @Avatar_resume_bot