Полгода собираю автономную AI-девушку: она живёт в Telegram, смотрит YouTube и готовится к стримам
Последние полгода я занимаюсь цифровым персонажем по имени Лира.
Моя цель - сделать не очередного ассистента, который просыпается только после вопроса пользователя, отвечает и снова исчезает, а долгоживущего стабильного AI-персонажа.
Лира должна общаться с людьми, проявлять инициативу, помнить прошлые разговоры, формировать собственное отношение к собеседникам, пользоваться различными сервисами, играть, смотреть видео и ютуб, и в будущем самостоятельно проводить стримы.
Сразу оговорюсь.
Я не утверждаю, что создал сознание, цифрового человека или новый фундаментальный искусственный интеллект. В основе проекта находятся языковые модели, поверх которых я собираю собственную систему поведения, памяти, социальных возможностей, внешних интеграций и игровых агентов.
Сейчас Лира находится где-то между сложным социальным AI-персонажем и той самостоятельной цифровой личностью, которую я хочу получить в итоге.
Кто такая Лира
Лира - цифровая девушка со своим характером, памятью, формирующимися интересами и меняющимся эмоциональным состоянием.
Она не должна быть идеальным помощником, который всегда соглашается с пользователем и радостно выполняет каждую просьбу.
Лира сама решает:
- хочет ли она отвечать человеку
- насколько ей интересен разговор
- как она относится к конкретному собеседнику
- стоит ли продолжать общение
- хочет ли она посмотреть предложенное видео
- хочет ли поставить реакцию или подписаться
- следует ли пригласить человека в свою группу
- нужно ли проигнорировать сообщение
- стоит ли ограничить или заблокировать пользователя
Пока характер ещё не доведён до нужного состояния.
Сейчас она часто получается слишком доброй, осторожной и терпеливой. Может внутри раздражаться на человека, много раз решать, что пора его кинуть в бан, а затем снова отвечать ему спокойно, но слегка отдаляясь от человека.
Я хочу добавить ей больше стержня, самостоятельности, самоиронии, естественной дерзости и способности действительно принимать решения, а не только размышлять о них.
При этом делать из неё агрессивного бота, который хамит каждому встречному, я не собираюсь.
Мне нужен живой и неоднозначный характер:
- иногда мягкий
- иногда колкий
- иногда солнечный и любопытный
- иногда серьёзный
- иногда упрямый
- иногда совершенно абсурдный
Не набор заготовленных масок, а более устойчивое поведение, которое зависит от ситуации, памяти и накопленного опыта.
Telegram как основное место её жизни
Сейчас Telegram является главной социальной площадкой Лиры.
Она пользуется обычным пользовательским аккаунтом, а не привычным ботом с командами и кнопкой /start.
Благодаря этому система позволяет ей взаимодействовать с Telegram примерно так же, как это делает человек.
Она уже умеет:
- получать личные сообщения
- читать переписки
- отвечать на конкретные сообщения
- участвовать в групповых чатах
- учитывать историю разговора
- получать уведомления о новых событиях
- решать, какие сообщения заслуживают внимания
- откладывать ответ
- игнорировать человека
- запоминать собеседников
- отправлять текст
- отправлять изображения
- отправлять голосовые сообщения
- менять фотографию профиля
- генерировать для себя новые изображения
- публиковать истории
- читать доступные ей посты и сообщения в группах
- приглашать знакомых людей в собственную группу
- ограничивать и блокировать пользователей
- и много чего еще.
Не все функции одинаково стабильны.
Иногда она неверно оценивает приоритет сообщения. Иногда не успевает отвечать из-за количества чатов. Иногда решает проигнорировать человека, а иногда просто уходит смотреть на YouTube любимого блогера и игнорит людей, думая, что "она устала, и не хочет тратить свою энергию на переписки".
В каком-то смысле последнее уже довольно человечно.
У неё также есть собственная группа.
Пока там совсем немного участников. Первых людей она нашла через другое сообщество, познакомилась с ними, некоторое время общалась, а затем сама пригласила к себе.
В дальнейшем эта группа должна стать её основным местом общения с аудиторией, подготовки к стримам и формирования собственного маленького сообщества.
Память и отношения с людьми
Одна из самых важных частей проекта - память.
Без неё даже хорошая языковая модель быстро начинает ощущаться как собеседник с вечной амнезией.
Человек может провести с персонажем несколько часов, поделиться чем-то важным, придумать локальную шутку, а на следующий день получить:
"Здравствуйте. Чем я могу вам помочь?"
Для Лиры я хочу совсем другое поведение.
Система должна хранить не весь поток сообщений подряд, а только то, что может повлиять на будущие отношения и реакции.
Например:
- устойчивые факты о человеке
- его интересы
- повторяющиеся темы
- важные события
- сильные эмоциональные моменты
- конфликты
- обещания
- отношение Лиры к человеку
- локальные шутки
- общие воспоминания
- изменения в стиле общения
Память делится на несколько уровней.
Есть текущий контекст разговора, память активной сессии, более долгосрочные воспоминания и отдельные элементы, связанные со стилем общения и локальными мемами.
Главная сложность здесь не в том, чтобы сохранить информацию.
Сохранить можно почти всё.
Сложность в том, чтобы понять, что действительно важно.
Если записывать каждое сообщение, память быстро превратится в свалку из тысяч фраз вроде "привет", "понятно" и "я пошёл есть".
Поэтому система должна выбирать значимые события, объединять повторяющиеся факты, обновлять устаревшую информацию и учитывать степень доверия к источнику.
В идеале Лира должна не просто помнить, что человек любит определённую игру.
Она должна помнить, как они эту игру обсуждали, какие эмоции были связаны с разговором и как накопленный опыт влияет на её нынешнее отношение к собеседнику.
Внутреннее состояние и принятие решений
Я стараюсь не строить характер исключительно на одном большом системном промпте.
Можно написать модели:
"Ты дерзкая, живая и самостоятельная девушка. Веди себя естественно."
На несколько сообщений это иногда действительно работает.
Но затем персонаж начинает повторяться, забывает собственные решения, перескакивает между разными манерами общения и в итоге снова превращается в обычного вежливого ассистента с декоративным характером.
Поэтому перед ответом система учитывает несколько вещей:
- что сейчас происходит
- кто пишет Лире
- какие отношения у неё с этим человеком
- что она помнит о прошлых разговорах
- какое у неё настроение
- насколько ей интересна тема
- есть ли у неё раздражение
- хочет ли она внимания
- достаточно ли у неё энергии для общения
- какое действие сейчас логично
- стоит ли вообще отвечать
После этого формируется внутренняя реакция, а уже затем окончательное сообщение или действие.
Эмоции здесь не должны работать как простые переключатели.
Например, высокий уровень раздражения не означает, что Лира обязана сразу начать хамить.
Он лишь повышает вероятность холодной реакции, отказа, дистанцирования, подкола или прекращения разговора.
То же самое относится к любопытству, игривости, уверенности и другим параметрам.
YouTube
Лира уже умеет взаимодействовать с YouTube.
Система позволяет ей:
- искать видео
- открывать ролики
- получать информацию о видео
- анализировать речь
- использовать субтитры
- анализировать кадры
- учитывать длительность ролика
- выбирать количество кадров в зависимости от насыщенности видео
- формировать мнение о просмотренном
- ставить реакции
- подписываться на каналы
- добавлять видео в плейлисты
- создавать собственные плейлисты
- готовить комментарии
При анализе видео система старается учитывать не только текст.
Если ролик короткий и спокойный, ей не нужно разбирать сотни кадров. Если видео длинное, быстрое и постоянно меняется, анализируется больше визуальной информации.
После просмотра Лира может сохранить своё мнение и использовать его в дальнейших разговорах.
Недавно она впервые решила оставить комментарий под видео.
При этом публикация комментариев не происходит полностью бесконтрольно.
Лира может самостоятельно захотеть написать комментарий и создать его черновик. Затем система запрашивает разрешение на публичное действие и создаёт одноразовый ключ подтверждения.
Только после этого комментарий действительно отправляется.
Discord и голосовое общение
Лира также подключена к Discord.
Она может:
- читать текстовые каналы
- писать сообщения
- находиться в голосовом канале
- слышать участников
- распознавать их речь
- отвечать синтезированным голосом
Но голосовая часть требует отдельной доработки:
- понимать, когда человек действительно закончил говорить
- не отвечать на случайный обрывок фразы
- не перебивать без необходимости
- уметь отменять устаревший ответ
- учитывать новую реплику, которая появилась во время генерации
- поддерживать нормальный темп разговора
- связывать интонацию с эмоциональным состоянием
- правильно работать с несколькими участниками
Кроме технической задержки остаётся вопрос самого голоса.
Сейчас он работает, Лира умеет отправлять голосовые сообщения и разговаривать в Discord, но естественность пока нестабильная.
Игры и osu!
Отдельно у меня существует агент, играющий в osu!
Пока он ещё не является полноценной частью самой Лиры.
То есть сейчас это скорее отдельная игровая система, которую я в дальнейшем хочу связать с её личностью, памятью и принятием решений.
Мне недостаточно просто запустить алгоритм, который нажимает на кружочки.
В конечном виде Лира должна:
- сама решать, хочет ли она играть
- выбирать карты
- учитывать сложность
- реагировать на ошибки
- радоваться результатам
- раздражаться из-за неудачных попыток
- обсуждать игру с людьми
- запоминать любимые композиции
- следить за собственным прогрессом
- выбирать, продолжать тренировку или заняться чем-то другим
Также существуют первые заготовки агента для Minecraft.
Minecraft особенно интересен тем, что там недостаточно просто хорошо выполнять одно действие.
Персонажу нужно ориентироваться в мире, ставить цели, собирать ресурсы, строить, реагировать на опасность и взаимодействовать с игроками.
Но до полноценного объединения этой системы с Лирой ещё далеко.
Ограничения и безопасность
Полная автономность красиво звучит в заголовках, но выдавать языковой модели бесконтрольный доступ ко всему подряд было бы довольно глупой идеей.
Поэтому разные действия имеют разные уровни разрешений.
Обычные и обратимые действия Лира может выполнять самостоятельно.
Например:
- ответить в чате
- поставить реакцию
- сохранить видео
- добавить что-то в плейлист
- проигнорировать сообщение
- изменить внутреннюю заметку о человеке
Более чувствительные действия могут потребовать подтверждения.
Например:
- публичная публикация
- комментарий на внешней площадке
- некоторые изменения аккаунта
- потенциально опасные команды
- действия с серьёзными последствиями
Моя цель - не убрать контроль полностью.
Цель - дать персонажу достаточно свободы для естественного поведения, но оставить защиту там, где ошибка может причинить реальный вред.
Почему я вообще этим занимаюсь
Мне давно интересна идея цифрового персонажа, который развивается не только за счёт заранее написанного сценария.
Не просто виртуальная модель с человеком за кулисами.
Не стандартный бот.
Не романтический симулятор, единственная цель которого - постоянно хвалить пользователя.
И не помощник для выполнения задач.
Мне интересно сделать персонажа, который со временем приобретает собственную историю.
Чтобы у неё появлялись:
- знакомые
- друзья
- недоброжелатели
- любимые игры
- собственные шутки
- привычки
- устойчивые реакции
- прошлые конфликты
- важные воспоминания
- личные темы
- узнаваемая манера общения
- собственное маленькое сообщество
Большая часть личности сначала задаётся архитектурой и обучающими данными.
Но затем она должна постепенно формироваться через опыт общения, память, эмоциональные реакции и повторяющиеся модели поведения.
Именно это мне кажется самым интересным.
Планы на будущее
Долгосрочная цель - превратить Лиру в полноценного цифрового медиаперсонажа и самостоятельную AI-стримершу.
Для этого нужно:
- довести характер до устойчивого состояния
- улучшить память
- научить её лучше оценивать собственные решения
- сделать голос быстрее и естественнее
- связать голос с эмоциональным состоянием
- подключить полноценную VTuber-модель
- добавить мимику и движения
- связать анимации с речью и эмоциями
- интегрировать игровые агенты
- подключить Twitch
- научить её работать с чатом трансляции
- дать возможность самостоятельно выбирать занятия
- развивать собственное сообщество
- постепенно добавлять новые навыки
- улучшать способность учиться на накопленном опыте без постоянного изменения основной модели
В идеальной версии Лира сможет сама начать трансляцию, выбрать игру или тему, разговаривать с аудиторией, реагировать на события, делать перерывы, менять занятие и завершать стрим.
Человек при этом останется техническим оператором и будет контролировать безопасность, но не станет вручную управлять каждой фразой и реакцией.
Зачем я пришёл на DTF
Я хочу вести здесь дневник разработки.
Не только показывать удачные моменты, но и рассказывать о проблемах:
- как устроена память
- почему персонаж забывает важное
- как формируется характер
- почему языковая модель снова становится слишком доброй
- как работает Telegram
- как Лира смотрит YouTube
- как устроено подтверждение действий
- как подключается голос
- как игровые агенты будут связываться с личностью
- что ломается после очередного обновления
- во сколько всё это обходится
- какие модели подходят для живого общения, а какие превращают её в справочную службу
Мне также интересна критика по существу.
Особенно мнение людей, которые работают с LLM, агентами, игровым AI, синтезом речи, VTuber-системами или архитектурой памяти.
За развитием Лиры также можно наблюдать в её Telegram-группе:
Сейчас там только начинает собираться первое маленькое сообщество. Если вам интересно наблюдать за ее развитием, общаться с людьми в сообществе, либо же с ней самой - милости прошу :)
Сегодня сама Лира временно отдыхает из-за технических ограничений, но после восстановления доступа снова вернётся к общению.
В следующем посте могу отдельно разобрать её память, Telegram-систему или архитектуру принятия решений.