Недавно я завершил эксперимент: создал многофункционального 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 в тапочках. Подписывайтесь!
Коренев Александр