Всем привет! Наверняка у каждого, кто увлекается технологиями, бывают моменты, когда хочется быстро проверить какую-то идею или ‭«поиграться‭‭» с новым API, не погружаясь в сложную разработку. Сегодня я хочу рассказать как раз о таком эксперименте выходного дня, который начался с простого желания пощупать возможности одного сервиса, а в итоге вылился в небольшой, но забавный пет-проект – GPT Arena.

Меня зовут Илья, я основатель онлайн-нейросети для создания изображений ArtGeneration.me, техноблогер и нейро-евангелист. Идея GPT Arena зародилась у меня давно, еще во времена появления кастомных GPTs от OpenAI. Тогда я даже сделал небольшой прототип: игра предлагала создать героя, генерировала его изображение и весело описывала его бой с другим таким же созданным героем, учитывая их абилки и способности. С учетом того, что в ChatGPT была озвучка сообщений – получалось прикольно. Однако тот прототип был сыроват и я надолго его забросил.

Недавно я решил вернуться к этой концепции, когда познакомился с API от Pollinations. Как человек, который не является программистом в классическом смысле, а скорее энтузиастом, исследующим возможности AI и предпочитающим генерировать код с помощью нейросетей, а не писать его с нуля, мне было особенно интересно проверить эту идею в деле, используя новый инструментарий.

❯ Pollinations.ai: генерация без барьеров

Что меня сразу зацепило в Pollinations.ai – это их невероятная доступность. Для экспериментов и пет-проектов это просто находка: API для генерации изображений, текста и аудио работает вообще без регистрации, абсолютно бесплатно и отдает результат почти мгновенно. Это был решающий фактор, позволивший быстро перейти от идеи к реализации.

❯ Шаг 1: ‭«Песочница‭» для API

Прежде чем погружаться в разработку самой игры, я решил создать небольшой инструмент для тестирования API. С помощью нейросети Cloude, которая помогла мне с кодом, я просто скормил документацию от Pollinations и свою задачу, Клод в итоге создал простую HTML-страницу. Этот ‭«пульт управления‭» позволял мне прямо из браузера отправлять запросы к Pollinations и смотреть, что получается.

В этом инструменте было три ключевые функции, соответствующие API: генерация изображений, текста и голосовых ответов. Весь JavaScript, управлявший этим тестером, по сути, формировал GET-запросы к API Pollinations. Вот так, например, выглядела функция для формирования URL для генерации изображения:

// Формирование URL для запроса на генерацию изображения
function generateImageURL(prompt, options = {}) {
    const params = new URLSearchParams(); // Создаем объект для URL-параметров
    if (options.width) params.append('width', options.width); // Добавляем ширину, если указана
    if (options.height) params.append('height', options.height); // Добавляем высоту, если указана
    if (options.model) params.append('model', options.model); // Добавляем модель, если указана
    // ...и другие параметры типа seed, nologo и т.д.
    const queryString = params.toString(); // Преобразуем параметры в строку
    // API_CONFIG.image.baseURL = 'https://image.pollinations.ai/prompt/'
    // Собираем итоговый URL, кодируя сам промпт
    return `${API_CONFIG.image.baseURL}${encodeURIComponent(prompt)}${queryString ? '?' + queryString : ''}`;
}

Интересный момент: попытка выполнить эти API-вызовы напрямую из среды Claude (с которой я тогда экспериментировал) не увенчалась успехом из-за сетевых ограничений. Но когда я сохранил этот HTML-файл тестера и открыл его локально в браузере – всё заработало! API откликалось, контент генерировался. Это стало подтверждением: концепция жизнеспособна.

Этот успешный тест и дал зеленый свет полноценной работе над GPT Arena.

❯ Шаг 2: Воплощаем GPT Arena

Идея оставалась прежней: AI в роли гейм-мастера. Но какую игру выбрать? Я решил остановиться на простом пошаговом RPG-образном файтинге. Это позволяло, с одной стороны, иметь четкую структуру (раунды, действия, HP), а с другой – давало простор для AI в описаниях и генерации контента.

Это Proof of Concept в виде одного HTML-файла (около 140 КБ), работающий полностью в браузере пользователя.

Ключевые возможности:

  • AI-генерация персонажей: на основе описания или случайным образом создаются уникальные бойцы с именами, историями, характеристиками и способностями.

  • Создание и озвучка локаций: место битвы также генерируется AI.

  • Динамическая симуляция пошаговых боев: каждый раунд сопровождается текстовыми комментариями, визуальными эффектами и свежей иллюстрацией.

  • Полная озвучка: все важные события в игре озвучиваются.

  • Три игровых режима: ‭«✨ Эпическое фэнтези‭», ‭«? Кровавый файтинг‭» и ‭«? Скучная реальность‭».

  • Пользовательские действия: игрок может предложить свое действие.

  • Лог событий: весь ход игры фиксируется в таймлайне.

❯ Немного о ‭«внутренностях‭» и магии промптов

Вся игра – это HTML-разметка, CSS для стилизации и JavaScript для логики.

Промпты и игровые режимы

Ключ к работе GPT Arena – это, конечно же, промпты. Для каждого игрового режима и каждого типа генерируемого контента (персонаж, локация, описание боя) используется свой, специально настроенный системный промпт.

  1. ✨ Эпическое фэнтези

    • Промпты для персонажей нацелены на создание классических фэнтезийных архетипов: ‭«Персонаж должен быть типичным для фэнтези мира: эльф, маг, рыцарь, дракон, минотавр и т.д.‭».

    • Визуальный стиль картинок описывается как: ‭"cinematic fantasy illustration, high quality, unique style, vibrant colors‭".

    • Описания боя должны быть ‭«динамичными, драматичными и зрелищными‭», с элементами "героического пафоса".

    • Диапазон урона тут средний (15-40 HP).

    2.? Кровавый файтинг

    • Персонажи тут уже ‭«брутальные бойцы, киборги, ниндзя, монстры‭», в духе Mortal Kombat.

    • Визуальный стиль: "brutal 3D fighting game render, dark atmosphere, gore details, high quality, realistic textures".

    • Бои описываются как ‭«сокрушительные", с элементами "черного юмора или иронии‭», но без ущерба для ‭«брутальности‭».

    • Урон здесь самый высокий (25-60 HP).

    3.? Скучная реальность

    • Персонажи – ‭«обычные люди, без каких-либо сверхспособностей‭»: офисный работник, продавец, студент.

    • Визуальный стиль: "photorealistic, everyday scene, natural lighting, mundane details, high quality, realistic textures".

    • Бои – это ‭«нелепые, скучные драки‭», с ‭«неуклюжими движениями, случайными тычками и бытовой руганью‭», с элементами ‭«абсурдного, бытового юмора‭».

    • И урон тут минимальный (1-10 HP).

Вот фрагмент общего шаблона для создания персонажа, который адаптируется под каждый режим:

// PROMPTS.CHARACTER_PROMPT_TEMPLATE = (additionalInstruction = "") => 
// `Ты создатель персонажей для GPT Arena. Отвечай СТРОГО в JSON формате.
// Создай уникального персонажа для динамичной арены на основе предоставленного описания. 
// ${PROMPTS.PROMPT_INSTRUCTION} Персонаж должен точно соответствовать заданному сеттингу...
// ${additionalInstruction} // Сюда подставляется специфика режима
//
// {
//   "name": "Имя персонажа (креативное, но уместное, на русском языке)",
//   "description": "Подробное и интригующее описание...",
//   "visualPrompt": "highly detailed character portrait, [внешность], ... This visualPrompt string MUST be in English.",
//   "stats": { "strength": число_1_10, ... },
//   "abilities": ["способность 1", "способность 2"]
// }`

Именно благодаря таким детальным и адаптируемым промптам удается добиться нужной атмосферы в каждом из режимов.

Трудности и их преодоление: были и стандартные ‭«грабли‭» вроде ограничений GET-запросов, необходимости индикаторов загрузки из-за задержек API и, конечно, часы промпт-инжиниринга для получения стабильных JSON-ответов.

❯ Что получилось в итоге

Несмотря на то, что GPT Arena – это, по сути, быстрый проект, созданный больше для проверки идеи и возможностей AI, результатом я остался доволен. Приложение наглядно демонстрирует, как с помощью современных генеративных нейросетей и относительно простых веб-технологий можно создавать полностью автономные интерактивные приложения.

❯ Куда двигаться дальше

Пространство для улучшений огромное: интеграция более мощных моделей, улучшение графики и звука, расширение интерактивности.

А еще я подумываю, а не замахнуться ли на создание бесконечного ‭«Нейро-Клуба Романтики‭» – такой себе визуальной новеллы или даже интерактивного комикса, где сюжет, персонажи и иллюстрации будут генерироваться на лету. Понятно, что это будет на порядок сложнее, чем одностраничное приложение, но сама идея захватывает! Остается лишь подключить более качественное API, Deep Seek R1 для ведения боев, Flux 1 D для генерации картинок, и Fish Speech для генерация озвучки. Для этого можно использовать кого-то из агрегаторов, чтобы не подключаться к разным нейронкам по отдельности, рассматриваю: Fal, Segmind, Replicate или Piper – потому что можно оплачивать доступ к API российской картой. Если вы разработчик, которому понравилась эта идея, и вы готовы поэкспериментировать в этом направлении – напишите мне, возможно, нам по пути, и мы сможем сделать что-то крутое вместе!

❯ Хотите опробовать GPT Arena в действии?

Буду рад, если вы оцените проект и поделитесь в комментариях, какие безумные персонажи и эпичные (или просто забавные) битвы у вас получились!

Я создаю всякие штуки и рассказываю о нейросетях у себя на YouTube, в телеграм и на Бусти. Буду рад вашей подписке и поддержке. Всех обнял и удачных генераций.


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Опробовать ↩

? Читайте также:

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


  1. Rive
    02.06.2025 12:52

    Консистентность персонажей на арене не соблюдается?


    1. timonin Автор
      02.06.2025 12:52

      В той мере, в которой способен поддерживать бесплатный Flux, технически в промптах она есть.


      1. Rive
        02.06.2025 12:52

        Хм, хорошей консистентности сейчас нельзя достичь только текстовым промптом на признаки персонажа, если только в модель со всеми лорами не запечён кто-то известный.

        Изменчивость очень сильная при одних и тех же признаках.

        Впрочем, трюками с LoRA или хаком с внутренней согласованностью каждой генерации можно добиться каких-то результатов.


    1. Jijiki
      02.06.2025 12:52

      будет соблюдаться(наверно))) создайте группу и поидее будет такой функционал)


  1. deathstrix
    02.06.2025 12:52

    Одновременно простой, но в тоже время и очень интересный проект. Напомнило Годвилль чем-то, там ведь тоже игра играет сама в себя, немного позволяя игроку влиять на события