Как стать автором
Обновить

1400 строк кода без программирования: как я собрал ИИ-бота с помощью Claude

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров9.2K

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

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

Теги:
Хабы:
-1
Комментарии6

Публикации

Истории

Работа

Data Scientist
85 вакансий
Python разработчик
131 вакансия

Ближайшие события

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн