Недавно я завершил эксперимент: создал многофункционального Telegram-бота, не написав ни строчки кода самостоятельно. Весь python код был сгенерирован нейросетью Claude Sonnet на основе моих текстовых инструкций.
Вывод эксперимента простой: даже без навыков программирования можно создать собственное небольшое приложение! Видео демки:
О боте
Созданный ТГ-бот @korenev_ai_bot - это нейрофотограф и нейростилист в одном лице. Он позволяет пользователям:
Увидеть себя в разных образах (безумный ученый, звезда кино, бомж, Барби и т.д.)
Изменять элементы фотографии (например, заменить футболку на пиджак)
Создавать нейрофотографии в различных стилях
Технологии под капотом
В боте задействованы две нейросети:
Stable DiffusionXL - отвечает за генерацию изображений
GPT4o-mini - генерирует инструкции для Stable Diffusion при выборе персонажей и выполняет перевод на английский в режиме нейростилиста
Основной функционал
? Нейростилист: замена элементов фото
? Нейрофотограф: создание фото в разных стилях
? Стань героем: широкий выбор персонажей и возможность задать свое описание
?Эксперименты с телосложением: от худого до мускулистого
Техническая реализация
В боте реализованы:
4 меню для различных функций
Опрос пользователей
Логирование в файлы и Telegram-канал
Масштабирование проекта и достижение пределов
По мере развития, проект значительно вырос в объеме и сложности. То, что начиналось как пара файлов, превратилось в полноценное приложение:
Количество файлов: с 2 до 16
Общий объем кода: около 1400 строк
Достижение пределов возможностей
В ходе разработки я, кажется, нащупал текущие границы возможностей Claude в области генерации кода. Признаки этого:
Сложности с контекстом: При работе с большим количеством файлов Claude стал чаще "забывать" детали ранее написанного кода.
Ограничения в сложности логики: Некоторые более сложные алгоритмические задачи требовали многократных итераций и уточнений.
Время обработки: Генерация и модификация крупных блоков кода стала занимать заметно больше времени.
Процесс разработки
Первый этап: Быстрый старт
Начальная фаза проекта прошла на удивление гладко и быстро. Я стартовал с обычного чата с Claude, придерживаясь следующей стратегии:
Интеграция с API: Первым делом я запросил у Claude код для взаимодействия с API сервиса, использующего Stable Diffusion. Для этого я просто предоставил документацию по API и попросил сгенерировать соответствующий код. После получения кода я тщательно протестировал его работоспособность.
Создание интерфейса: Следующим шагом стала разработка первого меню Telegram-бота - "Стань героем". Я описал Claude желаемую функциональность и получил готовый код.
Объединение компонентов: На третьем этапе я попросил Claude интегрировать код для работы с API и меню бота в единое целое. К моему удивлению, все сразу заработало без серьезных проблем.
Важно отметить, что после каждого шага я тестировал полученный от Claude код и сразу же сообщал о любых ошибках или неточностях. Только убедившись в корректности текущей реализации, я переходил к следующему этапу разработки.
Второй этап: Масштабирование и оптимизация
По мере роста проекта возникла необходимость в более структурированном подходе к разработке. Этот этап характеризовался следующими особенностями:
Реструктуризация кода
Разделение на модули: Когда Claude перестал справляться с генерацией полных файлов, я инициировал реструктуризацию. Попросил AI предложить новую структуру файлов и распределить функции между ними.
Итеративный процесс: Реструктуризация стала регулярной практикой. Claude иногда "увлекался", помещая слишком много функциональности в один файл, что требовало дополнительных корректировок.
Преодоление ограничений Claude
Обновление контекста: Качество ответов Claude снижалось в длинных чатах. Решение: периодический перезапуск диалога с обновленным контекстом.
Лимит на файлы: Claude мог работать максимум с 5 файлами одновременно. Для обхода этого ограничения я начал использовать проекты вместо обычных чатов.
Итеративный подход и управление контекстом
По мере роста проекта становилось очевидно, что линейный подход к разработке с помощью AI не всегда эффективен. Часто возникала необходимость "отматывать" диалог (а вместе с ним и код) назад, чтобы актуализировать контекст и внести новые требования.
Изначальная схема работы "Инструкция - Ответ AI - Дополнение к инструкции - Новый ответ AI" постепенно теряла эффективность. Особенно это проявлялось на поздних стадиях разработки, когда проект уже значительно разросся. Claude начинал путаться в деталях или забывать ранее установленные параметры.
Потеря контекста кода
На начальных этапах проекта Claude легко ориентировался в генерируемом коде. Однако с ростом объема и сложности проекта возникла неожиданная проблема: AI начал периодически "забывать" части ранее написанного кода, особенно в больших файлах и сложных функциях.
Внедрение системы контроля версий
Для решения этой проблемы я прибегнул к использованию системы контроля версий Git. Это позволило:
Отслеживать все изменения в коде
Сравнивать версии, генерируемые Claude
Иметь четкое представление об эволюции проекта
Такой подход значительно улучшил процесс разработки и помог сохранить целостность кода даже при работе с большими объемами информации.
Временные затраты на разработку
Проект можно разделить на два основных этапа, каждый из которых потребовал разного количества времени и усилий:
Первый этап: Начальная разработка прошла достаточно быстро и легко. На это ушло около двух вечеров без особых затруднений. Этот этап включал в себя базовую настройку и реализацию основных функций бота.
Второй этап: Расширение функциональности и решение возникших проблем оказалось более трудоемким процессом. Этот этап занял примерно три полных дня интенсивной работы. Здесь происходила оптимизация кода, решение проблем с контекстом и добавление более сложных функций.
Что дальше?
Этот эксперимент открыл для меня новые горизонты в области AI-ассистированной разработки. У меня появились идеи по оптимизации процесса и преодолению обнаруженных ограничений. В следующий раз подойду к разработке с ИИ более системно. Основными идеями поделюсь в своем Telegram-канале GPT в тапочках. Подписывайтесь!
Коренев Александр
Комментарии (6)
MagDen
29.07.2024 12:45Чёт мне померещилось 14 тыс. строк. Дай-ка , думаю, гляну как автор заставил проглотить такой, пусть и очень небольшой, но нереальный для AI контекст. А нет, это лишь 1400 строк. Буквально 3-4 максимально лаконичных файла с кодом или +-50% от обычного 1 класса на Java...
digtatordigtatorov
Вы же понимаете, что 1400 строчек кода не серьезно?
PDEMON
Для человека, который в коде вообще ничего не понимает это очень даже серьёзно. Я тоже неделю назад для себя открыл ChatGPT 4o. Даже в четвёртой версии у меня толком ничего не получалось, а в 4о прям сходу пошло. Я тоже нагенерил несколько тысяч строк кода. Делал сначала проект на vb с windows forms, потом передел на C# с WPF. Сначала, когда вообще не понимал что к чему просил его переписывать каждый раз целиком. Когда дошло строк до 500, я понял что очень много времени теряю. Дня через два начал потихоньку понимать структуру и просил уже сегментами переделывать. Прошёл такую же дорожку как и автор поста. Сейчас вот простеньки аддоны для своих нужд делаю и это круто что не нужно ждать на форумах ответа по несколько дней.
lesnik500 Автор
Я хотел показать, что небольшие приложения вполне спокойно можно создать уже без навыков программирования. И какой-нибудь ChatDev со временем может потеснить не только джунов, но и на миддлов замахнуться.
Год назад 140 строк, сейчас 1400. Что будет через год?