Три способа создания группового чата с ИИ: Почему мы выбрали сложный путь

Reverie Team

Reverie Team

12/9/2025

#инженерия#архитектура ИИ#групповой чат#глубокий технический анализ
Три способа создания группового чата с ИИ: Почему мы выбрали сложный путь

Вопрос, с которого всё началось

"Почему у каждого персонажа не может быть своего пузыря сообщения, как в других приложениях?"

Мы часто получаем этот вопрос. И честно говоря, это отличный вопрос. Большинство чат-приложений показывают сообщения как отдельные пузыри - по одному на человека. Так почему же наш групповой чат объединяет ответы нескольких персонажей в одно сообщение?

Ответ - не лень и не недосмотр. Это осознанный инженерный выбор, рождённый месяцами экспериментов с тремя принципиально разными подходами к групповым разговорам с ИИ.

Три архитектуры

При создании мультиперсонажных разговоров с ИИ каждая платформа сталкивается с одним и тем же решением. Существует ровно три способа это сделать, каждый с глубокими последствиями для стоимости, качества и пользовательского опыта.

1. Структурированный вывод (JSON-массивы)

Самый распространённый подход в индустрии. Вы просите ИИ вернуть JSON-массив, где каждый элемент представляет ответ персонажа:

[
  {
    "speaker": "Шерлок",
    "emotion": "заинтригован",
    "content": "Восхитительно. Узор грязи указывает на..."
  },
  {
    "speaker": "Ватсон",
    "emotion": "сбит с толку",
    "content": "Холмс, что вы имеете в виду?"
  }
]

Привлекательность:

  • Один вызов API, одно потребление кредитов
  • Легко парсить и рендерить как отдельные пузыри сообщений
  • Может включать богатые метаданные (эмоции, действия, описания сцен)
  • Идеально для генерации предложений ответов пользователя

Реальность:

  • Только дорогие премиум-модели (Claude, GPT-4) надёжно поддерживают структурированный вывод - большинство доступных моделей испытывают трудности с последовательным форматированием JSON
  • Ошибки формата ломают весь ответ
  • Инструкции JSON потребляют токены, уменьшая творческое пространство
  • Модели чувствуют себя "ограниченными" - креативность часто страдает
  • Ограничения контента становятся строже: режим структурированного вывода часто запускает более агрессивную фильтрацию контента, делая зрелые или смелые ролевые сценарии более склонными к провалу
  • Загрязнение контекста: история разговоров заполняется структурами JSON
  • Сложность обработки ошибок: что происходит, когда парсинг падает посреди стриминга?

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

2. Вызов инструментов (режим агента)

Самый "умный" подход. ИИ решает, какой персонаж должен говорить следующим, вызывает инструмент чтобы указать это, затем генерирует ответ этого персонажа. Повторяет, пока сцена не будет завершена.

ИИ думает: "Ватсон должен отреагировать на это открытие"
→ вызывает инструмент: next_speaker("Ватсон")
→ генерирует ответ Ватсона
→ ИИ думает: "Теперь Шерлок вмешается"
→ вызывает инструмент: next_speaker("Шерлок")
→ генерирует ответ Шерлока
...

Привлекательность:

  • Самый естественный поток разговора
  • ИИ имеет полный творческий контроль над темпом сцены
  • Каждый ответ персонажа получает выделенное качество генерации
  • Естественно производит отдельные сообщения для каждого персонажа

Реальность:

  • Множественные вызовы API = множественные списания кредитов
  • Задержка накапливается: N персонажей = N круговых поездок
  • Только топовые модели (Claude, GPT-4) надёжно обрабатывают вызовы инструментов - более дешёвые модели часто ошибаются или галлюцинируют вызовы инструментов
  • Сложное управление состоянием между вызовами
  • Риск бесконечных циклов или неожиданного завершения
  • Кошмары отладки: проблемы трудно воспроизвести

Это "архитектура мечты", которая выглядит красиво на бумаге, но создаёт операционные головные боли в масштабе.

3. Свободный текстовый вывод (Наш текущий выбор)

Самый простой подход. Попросите ИИ написать сцену естественно, позволяя ему решать, как представить несколько персонажей в плавной прозе:

Шерлок подался вперёд, глаза острые. "Восхитительно. Узор
грязи указывает, что наш подозреваемый пришёл с восточной стороны."

Ватсон нахмурился. "Холмс, что вы имеете в виду? Это просто грязь."

"Просто грязь?" Шерлок улыбнулся. "Мой дорогой Ватсон,
не бывает 'просто' чего-либо."

Привлекательность:

  • Работает с любой моделью ИИ, не требует специальных функций
  • Максимальная творческая свобода - ИИ пишет естественно
  • Чистый контекст: история разговоров читается как роман
  • Отличный опыт стриминга
  • Один вызов, предсказуемые расходы
  • Проще всего реализовать и поддерживать

Реальность:

  • Все персонажи в одном блоке сообщения
  • Нельзя легко перегенерировать ответ одного персонажа
  • Гибкость UI ограничена
  • Пользователи, ожидающие пузыри в стиле чата, могут быть сбиты с толку

Мы узнали это на собственном горьком опыте

Вот что мы раньше не делились публично: наша первая версия группового чата использовала вызов инструментов.

Мы верили в "архитектуру мечты". ИИ решает, кто говорит следующим, каждый персонаж получает выделенную генерацию, красивые отдельные пузыри сообщений. Это было элегантно. Это было умно. Это также была катастрофа в продакшене.

Пользователи сталкивались с непредсказуемыми затратами - иногда в 3 раза больше, чем ожидали за тот же разговор. Время ответа сильно варьировалось в зависимости от того, сколько персонажей ИИ решил вовлечь. Более дешёвые модели галлюцинировали вызовы инструментов или застревали в циклах. Наши логи ошибок заполнились краевыми случаями, которые мы никогда не предвидели.

После месяцев патчей и обходных путей мы приняли трудное решение перестроить всё с нуля со свободным текстовым выводом. Это казалось шагом назад. Но иногда "менее умное" решение - более мудрый выбор.

Почему мы сделали этот выбор

После обширного тестирования всех трёх подходов - и отправки одного в продакшен - мы выбрали свободный текстовый вывод для группового чата. Вот почему:

Стабильность важнее функций - Структурированный вывод падает непредсказуемо. Когда ваш групповой чат ломается посреди разговора, пользователям уже всё равно на отдельные пузыри - они просто хотят, чтобы работало. Свободный текст никогда не падает из-за проблем с форматом.

Качество важнее количества - Ограниченные форматы тонко снижают креативность ИИ. Когда мы сравнивали выводы, свободный текст последовательно производил более живые, естественно ощущающиеся взаимодействия персонажей. ИИ мог сосредоточиться на рассказывании истории вместо синтаксиса JSON.

Предсказуемость затрат - Режим агента берёт плату за персонажа за ответ. Сцена с пятью персонажами могла стоить в 5-10 раз больше ожидаемого. Пользователи заслуживают предсказуемого ценообразования.

Универсальная совместимость - Мы поддерживаем несколько моделей ИИ. Не все одинаково хорошо поддерживают структурированный вывод или вызов инструментов. Свободный текст работает везде, давая пользователям больше выбора моделей.

Компромисс, который мы принимаем

Да, мы жертвуем опытом "один пузырь на персонажа". Но получаем:

  • Железобетонную надёжность
  • Лучшее творческое качество
  • Предсказуемые затраты
  • Более широкую поддержку моделей
  • Более чистую историю разговоров

Для групповой ролевой игры, где погружение важнее всего, мы считаем этот компромисс оправданным.

Что скоро: Режим истории

Вот что-то захватывающее: мы создаём новый Режим истории, который использует структурированный вывод.

Почему другой подход? У Режима истории другие приоритеты:

  • Точный контроль сцены важнее свободного творчества
  • Богатые метаданные (углы камеры, музыкальные подсказки, разрывы глав) добавляют ценность
  • Формат более предсказуем (чёткая структура глав/сцен)
  • Пользователи ожидают более "продюсированный" опыт

Разные случаи использования заслуживают разных архитектур. Мы не догматичны насчёт какого-либо одного подхода - мы выбираем то, что лучше всего служит пользователям.

Честная правда

Идеального решения для мультиперсонажных разговоров с ИИ не существует. Каждый подход обменивает что-то ценное на что-то другое.

Другие платформы, показывающие отдельные пузыри? Вероятно, используют структурированный вывод и принимают его ограничения. Платформы с более "умным" контролем сцены? Вероятно, вызов инструментов с более высокими затратами и задержкой.

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

Опыт отдельных пузырей приятен. Но не ценой всего остального.

Что мы исследуем

Мы экспериментируем с гибридными подходами:

  • Постобработка парсингом: Использование лёгких моделей для разделения свободного текста на сегменты персонажей после генерации
  • Опциональный структурированный режим: Позволить продвинутым пользователям выбирать структурированный вывод, когда им нужен точный контроль
  • Умное определение сцен: Автоматическое определение естественных точек разрыва для лучшего представления UI

Цель - не найти "правильный" ответ. Это продолжать улучшать опыт, сохраняя то, что работает.


Есть мысли о том, как должен работать групповой чат? Мы будем рады вас услышать.

Готовы испытать динамичные AI-диалоги?

Присоединяйтесь к тысячам пользователей, которые уже исследуют бесконечные личности и увлекательные взаимодействия на Reverie.

Три способа создания группового чата с ИИ: Почему мы выбрали сложный путь | Reverie