Разработка игры "Голоса животных России" для самых маленьких на FireBase Studio с помощью ИИ Агента.
Всем Привет!
Для самых не терпеливых ссылка на результат(хостинг бесплатный и если долго не открывали, то нужно подождать до 60 сек для загрузки):
Вступление
Это уже не первая моя поделка для моих детей. В этот раз вдохновением выступил гайд по мультиагентным системам от Сбера, который натолкнул меня на идею попробовать новый подход в вайб-разработке. В качестве платформы для вайб-разработки я сначала попробовал настроить GigaCode, но из коробки (без танцев с бубном) он работать не захотел, и я решил отложить это до лучших времён и посмотреть в сторону более зрелой платформы — Firebase Studio (от Google). Я не говорю, что GigaCode не достоин моего внимания, наоборот, очень хочу на нём поработать и обязательно поработаю. Просто порог входа для разработки на нём выше, что требует определённого времени на изучение мануалов, что для меня на текущий момент ввиду ограниченного времени нецелесообразно.
" Чтобы разработка была не в стол, она должна решать конкретную проблему. "
Проблематика
Многие родители покупают книги или журналы с изображениями животных, чтобы обучать детей звукам животных. Это актуально для возраста от 1 до 2,5 лет. В моём случае, с тремя маленькими детьми, после первого ребёнка мало что осталось в живом виде, так как они всё проверяют на прочность. А ведь эти материалы нужны ещё для двоих других детей, и тратиться на покупку новых развивающих пособий каждый раз — не выход. Конечно, многие могут возразить, что проще купить новые методические материалы. Но это не наш метод. Как вы уже догадались, мы пойдём по пути автоматизации.
Ну и напомню основные проблемы, с которыми я столкнулся в предыдущем опыте:
- Не предсказуемость результата.
- Некорректная работа алгоритмов (непонимание: ИИ не всегда правильно интерпретирует цели).
- Сложность внесения изменений в код для исправления ошибок и доработки. Технический долг растёт, иногда экспоненциально, с каждым промпт-запросом на изменение.
Кажется, что все проблемы возникают из-за недостаточной "гибкости ума" ИИ для решения больших задач, при том что маленькие задачи выполняются с высокой точностью и качеством. В качестве меры для минимизации рисков возникновения вышеуказанных проблем, я решил попробовать максимально детерминировать задачу, разбить её на разные слои и каждый слой прорабатывать отдельно.
Идея
Мы хотим создать веб-приложение, состоящее из двух уровней:
- Первый уровень: Пользователь нажимает на картинку животного и слышит его название и издаваемый им звук.
- Второй уровень: Пользователю проигрывают название животного со звуком и предлагают выбрать правильное животное из предложенных изображений. После правильного выбора приложение хвалит пользователя и переходит к следующему заданию. Если животное выбрано с ошибкой, приложение просит пользователя попробовать выбрать ещё раз.
Постановка
- Контент(с учётом разных вариантов реализации)
Изображение животного
- Вариант А: Использовать готовые изображения с сайтов бесплатных стоков (например, https://ru.freepik.com).Плюсы: Высокое качество. Минусы: Требует отдельной проработки выбора изображений и их хранения.
- Вариант Б: Использовать увеличенные векторные эмодзи. Плюсы: Простота использования. Минусы: Иногда низкое качество и ограниченное количество доступных животных. - Аудио
2.1 Звук животного
- Вариант А: Предзаписанные звуки. Плюсы: Высокое качество. Минусы: Требует отдельной проработки каждого аудиофайла и его хранения.*
- Вариант Б: Синтезированный звук. Плюсы: Динамичный подход, генерирует звуки в реальном времени. Минусы: Среднее или низкое качество произношения, зависящее от выбранного фреймворка синтеза.
2.2 Голос, произносящий название животного*
- Вариант А: Предзаписанный голос. Плюсы: Высокое качество. Минусы: Требует отдельной проработки каждого аудиофайла и его хранения.*
- Вариант Б: Синтезированный голос (TTS - Text-to-Speech). Плюсы: Динамичный подход, генерирует речь в реальном времени. Минусы: Среднее или низкое качество произношения, зависящее от выбранного TTS-движка.
3. Пользовательский путь
Целевой пользователь: Ребёнок 3-6 лет + родитель-помощник.
Уровень 1 "Знакомство"
Уровень 2 "Викторина"
4.Требования к хранению информации о животных
Для уменьшения рисков доработки кода реализуем возможность внесения изменений в описание животных. Для этого используем простой подход: вынесем описания в отдельные JSON-файлы, которые будут храниться, например, в специальной папке. Благодаря вынесению настроек, в будущем мы сможем без разработки нового приложения кастомизировать его для изучения звуков других животных и т.п.
4.1. Информация о животных хранится в папке animals
4.2. Имя файла: [animal_name].json4.3. Формат JSON-файла:
- ссылка на изображение или emoji животного
- текст для синтеза речи
Создаём промт для ИИ-агента на основе описания задачи
В этот раз перед написанием промта для ИИ-агента добавим шаг: поручим DeepSeek разработать план промта для создания игры. При необходимости внесём правки в этот план, после чего запустим его в ИИ-агенте Firebase Studio.
Промт 1 для DeepSeek
//В этот раз прежде чем писать промт для ИИ Агента, мы добавим дополнительный шаг в котором заставим DeepSeek расписать промт план для разработки нашей игры, после чего при необходимости внесём туда изменения и запустим в ИИ Агенте FireBase Studio.
//Результат
//Так, уже не плохо, но исходя и результатов кажется мы упустили конкретику по количеству животных, которую мы попробуем восполнить в следующем промт запросе.
Промт 2 к DeepSeek
//Результат
//В целом уже неплохо, с учётом тонкого тюнинга, который мы ранее закладывали и который можно сделать после разработки.
Теперь добавим к списку изображение эмодзи. Решил не использовать вариант авто подбора изображений из бесплатных источников.
Промт 3 к DeepSeek
//Результат
//По результату видим, что некоторые животные повторяются. Попробуем при помощи следующего запроса это устранить.
Промт 4 к DeepSeek
//замени дятел, кукушка, синица на других животных так, чтобы у новых животных не повторялись эмодзи с уже имеющимися
//Результат на мой взгляд достаточный. Теперь давайте дополним наш промт для ИИ Агента, который будет разрабатывать наше приложение.
Запуск разработки в Firebase Studio
1. Регистрируемся на платформе Firebase Studio:
2. Вводим подготовленный промт.
Отладка
После завершения разработки запускаем превью в отдельном окне.
В ходе отладки обнаружили:
- Ошибку при быстром нажатии на нескольких животных подряд (из-за некорректного завершения воспроизведения звука).Решение: Новый промт-запрос "Исправь ошибку [копируем текст ошибки]". После нескольких итераций ИИ предлагает исправление, после чего доработка завершена. Можно было внести правки вручную, но в этот раз решил использовать ИИ.
- Проблемы с произношением названий животных. Решение: По запросу ИИ создал папку с данными о животных. Исправления вносятся вручную: выбираем нужный файл и корректируем текст.
Важно: Для изменения названий животных или добавления новых нужно редактировать массив животных в файле Animals.ts.
Публикация
- Выкладываем код в Git
- Публикуем из Git на бесплатный хостинг: https://studio-gxt2.onrender.com/
Итог
Новый подход сократил количество запросов к ИИ-агенту и улучшил качество. Получилось рабочее приложение, которым пользуется мой ребёнок, и ему нравится. Время на подготовку статьи больше времени разработки прототипа приложения.
Что можно улучшить:
- Добавить поддержку ссылок на аудиофайлы
- Перенести названия животных в файлы с описанием
- Добавить третий уровень без названий животных (только звуки)
- Голосовое управление (включая подсказки) для меню и повтора
- Адаптация под ошибки: после трёх неправильных ответов показывать подсказку
Спасибо, за то что дочитали до конца, надеюсь оправдал ваши ожидания.