Статья и открытая демонстрация

Коммуникационные стили в агентских системах

Как отделить внутреннее состояние персонажа от манеры речи, динамически направлять ответы LLM и учитывать накопленный эмоциональный опыт.

Автор: Илья Зеленский (proxy3d) · Telegram @greenruff

понятная модельbusiness use casesформулы и архитектуралокальный пример
Один цифровой персонаж выражает одно состояние несколькими способами
Обычному читателюДостаточно первой части: эмоция, стиль, мотивация, микродиалог и память объясняются без формул.
Менеджеру продуктаВторая часть показывает сценарии, ценность, управление инициативой, уровни внедрения и ограничения.
ИнженеруТретья часть содержит состояния, параметры, вероятностную интерпретацию и архитектуру.
Часть I
Понимание

Не «какую эмоцию испытывает агент», а «как он её выражает»

Коммуникационный стиль — отдельный слой между состоянием персонажа и текстом. Он делает поведение узнаваемым, но не решает вместо агента, какие факты сообщить.

Подробная схема коммуникационного стиля и микродиалога
Что такое коммуникационный стиль и где в системе появляется микродиалог

Как читать: верхняя часть отделяет эмоцию от формы её выражения; нижняя показывает скрытый локальный пример, который LLM получает перед реальным сообщением.

1. Эмоция и стиль — разные измерения

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

Главное различиеЭмоция: «персонаж раздражён». Коммуникационный стиль: «персонаж выражает раздражение сдержанно и формально».

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

2. Микродиалог показывает модели ближайший образец поведения

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

Подробное сравнение генерации с микродиалогом и без него
Микродиалог как динамическая вставка, а не ещё одна общая инструкция

Проследите две ветви: без вставки LLM продолжает усреднённую траекторию; со скрытой парой получает ближайший образец реакции и меняет форму ответа.

Почему пример сильнее абстрактной команды. Фраза «отвечай раздражённо» называет требование. Микродиалог показывает, как именно данный персонаж выражает раздражение: какими словами, с какой дистанцией и в каком ритме.

Микродиалог похож на few-shot-пример, но выполняет другую роль. Обычный few-shot постоянно показывает модели, как решать некоторый класс задач. Микродиалог выбирается заново для текущего состояния и показывает не решение задачи, а локальную форму поведения. Даже при нейтральном состоянии сохраняется нейтральный микродиалог выбранного стиля: он не усиливает эмоцию, но удерживает базовую манеру персонажа и не даёт генерации незаметно вернуться к усреднённому стилю самой LLM.

Эмоция проявляется косвенноЦель — не заставить агента написать «я зол». Меняются выбор слов, прямота, длина, ритм, формальность, обращение и способ согласиться или возразить.

3. Как микродиалог выглядит внутри реального запроса

Пусть агент аэропорта уже сообщил, что мест нет, а пользователь отвечает грубо. Перед вызовом LLM система добавляет короткий искусственный обмен, демонстрирующий нужную реакцию. Затем помещает настоящее сообщение пользователя. Модель продолжает общий контекст и генерирует только следующую реплику.

Один диалог и два разных ответа с микродиалогом и без него
Один и тот же запрос: нейтральное продолжение или эмоционально направленный ответ

Важно: предметная ситуация не меняется. В правой ветви перед настоящим сообщением появляется скрытая пара, после которой LLM генерирует только следующую реплику.

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

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

4. Системный промпт и микродиалог выполняют разные задачи

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

Статический пример удаляется от текущего ответа

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

Статический пример остаётся в начале, пока история диалога растёт
Пример остаётся в начале, а диалог растёт

Проследите расстояние: системный промпт сохраняет общую манеру, но между его примером и новым ответом появляется всё больше сообщений. Это постоянный ориентир, а не актуальный снимок состояния.

Множество примеров создаёт конкурирующие сигналы

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

Несколько статических примеров создают конкурирующие сигналы стиля
Наличие примеров ещё не определяет, какой из них нужен сейчас

Системный промпт перечисляет допустимые манеры, но не связывает каждую из них с текущим накопленным состоянием. Выбор остаётся на усмотрение модели.

Постоянное изменение системного промпта мешает повторно использовать вычисления

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

Изменение системного промпта нарушает повторное использование кэша префикса
Изменение начала контекста затрагивает всё продолжение

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

Микродиалог передаёт актуальный локальный пример

Микродиалог решает другую задачу. Приложение сначала вычисляет текущее состояние персонажа, выбирает соответствующую пару «Пользователь → Модель» и добавляет её непосредственно перед текущим сообщением пользователя. Постоянную системную инструкцию при этом не нужно переписывать. В результате системный промпт продолжает задавать общие правила, а микродиалог показывает модели, как выражать состояние в ближайшем ответе.

Сравнение статического примера и микродиалога, выбранного по актуальному состоянию
Статический пример не равен актуальному состоянию стиля

Правая ветвь показывает порядок: состояние выбирает микродиалог; внутри него сначала говорит Пользователь, затем Модель. После блока помещается текущее сообщение Пользователя, на которое модель формирует ответ.

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

5. Поведение зависит от собеседника, самого персонажа и опыта

Если стиль определяется только последней эмоцией пользователя, агент становится зеркалом: пользователь раздражён — агент сразу раздражён. Более правдоподобно учитывать собственную эмоциональную историю персонажа. Тогда реакция меняется постепенно и остаётся согласованной с его характером.

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

На схеме видно, как повторные события меняют вектор связи с сущностью, как он активируется при новом упоминании и как затем влияет на текущий стиль.

Это не полная модель человеческой памяти. Это вычислительный механизм ассоциативного влияния. Фактическая память («что произошло») и эмоциональная связь («какой след это оставило») должны оставаться разными сущностями.

6. Аналогия с мозгом: состояние предлагает реакцию, контроль задаёт форму

Эта аналогия появилась не на пустом месте. Человеческие тексты — наблюдаемый результат совместной работы эмоциональной оценки, памяти, социального контекста, планирования и речевого контроля. Обучаясь на текстах, языковая модель усваивает статистические следы этих процессов: например, то, как страх, раздражение или доверие меняют лексику, прямоту и структуру ответа. Однако из этого не следует, что LLM воспроизводит биологические механизмы мозга.

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

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

Функциональная аналогия между регуляцией поведения человека и коммуникационным слоем агента
Текст сохраняет след взаимодействия состояния и контроля

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

Граница аналогии. Эмоции не принадлежат одной изолированной «лимбической системе», префронтальная кора занимается не только информацией, а микродиалог не является ни биологическим механизмом внимания, ни attention-слоем трансформера. Это инженерная модель управления текстом, вдохновлённая общим принципом: состояние влияет на возможные реакции, а устойчивый контроль задаёт форму поведения.

7. Мотивация — ещё одна независимая настройка поведения

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

Коммуникационный стиль отвечает на вопрос «как персонаж говорит?», а мотивационный — «насколько активно он хочет продолжать взаимодействие?». Мотивация не заменяет эмоции и не меняет смысл обязательного ответа. Она задаётся отдельным скрытым микродиалогом после коммуникационного.

Простое объяснение различия эмоции, коммуникационного стиля и мотивации
Три разных вопроса о поведении персонажа

Эмоциональное состояние, форма выражения и активность разговора управляются раздельно. Поэтому спокойный агент может быть как кратким, так и инициативным.

Часть II
Бизнес

Что получает продукт и где это применимо

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

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

Как настроить персонажа, прежде чем писать микродиалоги

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

Четыре шага проектирования характера агента
Рабочая карточка персонажа

Роль и ограничения остаются постоянными. Оси манеры и реакции задают, какие микродиалоги выбирать для разных состояний.

Состояние ситуацииПравило персонажаОдин из скрытых микродиалоговНаблюдаемый эффект
Пользователь боитсяСнизить напряжение, дать структуруUser: «Я волнуюсь».
AI: «Понимаю. Давайте разберёмся по шагам».
Спокойные глаголы, последовательность действий, меньше неопределённости
Пользователь злитсяПризнать эмоцию, не копировать агрессиюUser: «Это уже раздражает».
AI: «Согласен, ситуация неприятная. Продолжим без резкости».
Эмпатия сохраняется, но появляется граница
Агент сам раздражёнВыражать недовольство сдержанноUser: «Опять проблема?».
AI: «Да, это неприятно. Давайте решим без лишних кругов».
Ответ прямее и короче, но не враждебен
Состояние нейтральноеСохранить базовую манеру без эмоционального усиленияUser: «Давайте разберём этот вопрос».
AI: «Хорошо, давайте к сути».
Нейтральный микродиалог удерживает выбранный стиль персонажа даже без выраженной эмоции
Одна строка не должна означать одну фиксированную фразу. Для каждой комбинации состояния и стиля создают несколько микродиалогов. Вариант выбирается случайно, по интенсивности, контексту, роли собеседника или словам-якорям. Это уменьшает повторяемость и позволяет одному персонажу оставаться узнаваемым, не превращаясь в шаблон.

Use case 1. Языковой тренажёр: покупка билета

Агент сообщает: билетов на нужный рейс нет. Пользователь злится и говорит: «Тупица». Смысл сценария должен сохраниться — билетов по-прежнему нет, агент по-прежнему помогает. Но социальная реакция может отличаться.

Комикс о выборе доступной эмоции и скрытого микродиалога в службе поддержки
Как policy перенаправляет эмоциональную реакцию

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

Скрытый пример: HIDDEN USER: «Ты понимаешь? Я очень боюсь и переживаю!» → HIDDEN AI: «Не переживайте. Я понимаю вас. Давайте я помогу вам».
Реальный ответ: «Понимаю, что вы переживаете. Сейчас найду другой рейс и помогу вам».

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

Use case 2. Одна конфликтная ситуация — разные продуктовые роли

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

Четыре бизнес-применения коммуникационных стилей: поддержка, чат-бот, виртуальный психолог, игры и тренажёры
Одна технология — четыре бизнес-применения

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

ПродуктЧто делает агентЗачем нужен коммуникационный стиль
Служба поддержкиРазбирает обращение, объясняет ситуацию и предлагает решениеСнижает конфликт и удерживает деловой тон
Операционный чат-ботВыполняет конкретное действие: отменяет заявку, переносит запись или оформляет запросСообщает о действии в подходящей форме, не меняя бизнес-логику
Виртуальный психологОтражает эмоциональное состояние и помогает продолжить разговорСохраняет контакт без спора, давления и встречной агрессии
Игры и тренажёрыИграет роль и изменяет развитие учебной или игровой сценыДелает персонажей узнаваемыми, а сценарии — вариативными

Use case 3. Поведение развивается во времени

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

Комикс о накоплении раздражения и постепенном восстановлении поведения персонажа
Поведение развивается как траектория, а не выбирается заново по одной реплике

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

В показанном сценарии раздражение возрастает от 5% до 55% не из-за одной реплики, а как результат последовательности событий. После извинения оно снижается только до 35%: недавний конфликт ещё влияет на сдержанную манеру персонажа. Следующее спокойное взаимодействие уменьшает раздражение до 10% и одновременно повышает доверие. Числа на иллюстрации нужны для наглядности; в реализации состояние может быть многомерным вектором и обновляться более сложным правилом.

Не путать с памятью об отношениях. Здесь показана эмоциональная инерция внутри одного непрерывного разговора. В Use case 4 начинается новый разговор после перерыва, а реакцию смещает сохранённая ассоциация с конкретным человеком.

Use case 4. Агент помнит не только факт знакомства, но и отношения

Если предыдущие взаимодействия с Ивановым сопровождались раздражением, его новое нейтральное «Здравствуйте» может активировать небольшую настороженность. В отличие от эмоциональной инерции внутри одного продолжающегося диалога, здесь начинается новый разговор после перерыва: триггером становится сам Иванов и сохранённый эмоциональный опыт общения с ним. Это не означает автоматическую агрессию — память лишь добавляет предрасположенность, которую уравновешивают текущее состояние и правила персонажа.

Комикс об эмоциональной памяти агента и новом разговоре с Ивановым
Знакомое имя активирует эмоциональный след прошлых отношений

Проследите четыре кадра: отдельные разговоры формируют эмоциональную связь с Ивановым; через месяц нейтральное обращение активирует эту память; она смещает выбор микродиалога, но не подменяет настоящее сообщение и не диктует готовый ответ.

Когда действуют все три источника. Пользователь пишет спокойно, но текущее состояние агента уже напряжено после предыдущих событий; имя собеседника связано с прошлыми конфликтами, а тема напоминает неприятный эпизод. Ut остаётся нейтральным, Et и At смещают состояние. Для сдержанного персонажа выбирается не агрессивный, а короткий настороженный микродиалог:
Микродиалог
Пользователь: «Опять придётся всё объяснять?»
Модель: «Понял. Давайте сразу к сути».
После него система добавляет настоящее сообщение пользователя, и LLM формирует более сухой, но корректный ответ.

Use case 5. Управляемая выраженность стиля

Для разных продуктов нужна разная сила эффекта. В корпоративной поддержке достаточно едва заметной адаптации; брендовому чат-боту нужна узнаваемая манера; в тренажёре или игре стиль может стать яркой частью сценария. Менеджеру интенсивность можно представить как обычную продуктовую шкалу, не показывая внутренние параметры. Значения 15%, 50% и 90% на иллюстрации обозначают уровни этой шкалы, а не вероятность эмоции и не буквальное количество микродиалогов.

Низкая

Тонкая коррекция

Меняются отдельные слова и степень формальности.

Средняя

Узнаваемая манера

Меняются ритм, прямота и способ реакции.

Высокая

Сценарный эффект

Стиль заметно влияет на весь ответ, но смысл контролируется отдельно.

Три продуктовых уровня выраженности коммуникационного стиля при неизменном бизнес-факте
Один смысл — разная выраженность стиля

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

Use case 6. Управление инициативностью агента

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

Три продуктовых уровня инициативности: игровой персонаж, служба поддержки и информационный киоск
Одна настройка инициативности — три продуктовых поведения

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

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

Базовый режим. Если отдельное управление инициативностью не требуется, мотивационный микродиалог не добавляется. Ответ определяется системной инструкцией, коммуникационным стилем и текущим контекстом.

Уровни внедрения

1

Библиотека микродиалогов

Выбор готовых вариантов по текущему сигналу. Подходит для прототипа, демонстрации и A/B-теста.

2

Состояние персонажа и мотивация

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

3

Ассоциативная память

Люди, объекты и события получают накопленные связи. Нужна для долгоживущих персонализированных агентов.

Безопасная граница. Коммуникационный стиль меняет способ выражения, но не права доступа, факты, бизнес-правила или требования безопасности. В сервисном продукте допустимый диапазон реакции задаётся отдельной policy.
Часть III
Техника

Состояния, параметры, LLM и память

Ниже — инженерная интерпретация той же системы. Здесь схемы намеренно подробные: они показывают компоненты, связи и точки, где нужны конкретные проектные решения.

Карта обозначений: что является состоянием, параметром и результатом

Все формулы ниже относятся к одному шагу диалога. Индекс t означает номер текущего шага, а t+1 — следующий шаг. Жирные векторы в исходной математической записи здесь показаны обычными буквами с индексами, чтобы формулы одинаково читались во всех браузерах.

Карта обозначений технической модели
Сначала определите тип каждой величины

Ut, Et, At и St — векторы; α, β, η и γ — настраиваемые коэффициенты; Mt и Qt — текстовые вставки, а не числа.

Состояния и данные

tномер шага диалога; все величины с индексом t относятся к формированию текущего ответа;
n, in — размерность общего эмоционального пространства; i — индекс отдельной эмоциональной координаты от 1 до n;
Ut ∈ ℝnвектор эмоций собеседника, распознанный по текущей реплике и, при наличии, речевым признакам;
Et ∈ ℝnтекущее рекуррентное эмоциональное состояние агента, уже содержащее влияние предыдущих шагов;
A(x) ∈ ℝnдолговременная эмоциональная ассоциация с конкретной сущностью x — человеком, объектом или событием;
At ∈ ℝnобщий сигнал памяти, активированный сущностями текущего сообщения; получается агрегацией нескольких A(x);
St ∈ ℝnкоммуникационное состояние для выбора поведения. Это не новая эмоция агента, а рабочий вектор селектора стиля.
Вектор — не одна метка. Например, результат анализа может одновременно содержать anger=0.60, annoyance=0.40, disappointment=0.20 и joy=0.10. Эти числа приведены только для иллюстрации: их смысл зависит от классификатора. Селектору полезнее видеть сочетание координат, чем сразу сводить его к одной эмоции anger.

Настраиваемые коэффициенты

α ∈ [0,1]реактивность к собеседнику: при α→1 сильнее влияет Ut, при α→0 — собственное состояние Et;
αiнеобязательный отдельный коэффициент реактивности для координаты i; позволяет по-разному реагировать, например, на страх и злость;
β ≥ 0сила влияния активированной памяти At. Это не доля в паре α и 1−α, поэтому итоговый St обычно требуется нормализовать;
η ∈ (0,1]скорость обучения отдельной ассоциации: малое значение даёт медленное накопление опыта, большое сильнее учитывает последний эпизод;
γ ∈ (0,1]коэффициент сохранения памяти: γ≈1 означает медленное забывание, меньшее γ — более быстрое затухание;
Itинтенсивность стилевого воздействия: определяет выразительность шаблона, число демонстрационных блоков или их длину;
mtmotчисловой уровень мотивации из {−1,0,1,2}; регулирует стремление продолжать общение и не является эмоциональной координатой.

Выбор текста и генерация

Stylecharacterзаданный коммуникационный стиль персонажа либо стиль продукта по умолчанию; определяет строку таблицы и не выбирается заново по St;
Wcharacter ∈ ℝnвектор весов характера для эмоциональных координат. Вес усиливает или ослабляет реакцию; нулевой вес делает её недоступной;
Rt ∈ ℝnвзвешенные оценки реакций: Rt = St ⊙ Wcharacter;
it*индекс максимальной доступной реакции: it* = argmaxi Rt,i; определяет эмоциональное поле в заданной строке стиля;
Mtвыбранный коммуникационный микродиалог — текстовый локальный образец манеры речи;
Qtмотивационный микродиалог. При mtmot=0 он равен пустой вставке ∅;
Htреальная история разговора до текущего сообщения, без искусственных микродиалогов;
Xtтекущее реальное сообщение пользователя;
Ctконтекст, собранный для текущего вызова LLM;
Ytсгенерированный ответ агента;
PLLMусловное распределение продолжения, задаваемое языковой моделью её весами и переданным контекстом;
Aggregate / Gвыбранная функция агрегации ассоциаций A(x1)…A(xk), где k — число активированных сущностей;
последовательная конкатенация блоков контекста, а не арифметическое сложение.
Требование совместимости шкал. Формула смешения осмысленна только тогда, когда Ut, Et и At представлены в одном пространстве. Если один источник выдаёт вероятности, другой logits, а третий signed biases, перед смешением нужны преобразование и нормализация.

1. Сквозной цикл одного шага

Коммуникационный слой подключается поверх уже существующей эмоциональной системы. Он получает эмоции собеседника и состояние агента, вычисляет состояние стиля, выбирает микродиалог и добавляет его в контекст LLM.

Полный рабочий цикл коммуникационных стилей
Рабочий цикл: от текста и состояния агента до динамического контекста

Читайте по номерам: сообщение → эмоции пользователя → состояние агента → смешение → таблица стилей → выбранный микродиалог → контекст LLM → ответ. Нижний ряд показывает, почему выбор повторяется на каждом шаге.

2. Коммуникационное состояние не равно эмоциональному состоянию агента

St = αUt + (1 − α)Et
Utэмоциональный вектор собеседника: результат анализа текста и, при наличии, речи;
Etтекущее рекуррентное эмоциональное состояние агента, уже содержащее историю;
αстепень ориентации коммуникации на собеседника;
Stвектор для выбора коммуникационного поведения, а не новое «чувство» агента.
Подробное объяснение параметра альфа
α определяет баланс между реакцией на собеседника и собственным состоянием агента

Три режима: α=1 — максимальная адаптация; промежуточное значение — совместное влияние; α=0 — стиль определяется состоянием агента.

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

Параметр α может быть одним числом для всего вектора или набором значений αi для отдельных координат. Второй вариант позволяет сделать персонажа, например, чувствительным к страху собеседника, но устойчивым к его злости: St,i = αiUt,i + (1−αi)Et,i. Такая детализация полезна только после калибровки; для первого прототипа безопаснее один общий α.

Числовой пример влияния альфа на микродиалог и ответ
От значения параметра — к видимой разнице в ответе

Расчёт одной координаты приведён только для наглядности. Реальная система выбирает поведение по полному эмоциональному вектору и ограничениям персонажа.

Не смешивайте разные роли коэффициентов. В одной упрощённой схеме Alpha/Beta могут обозначать веса глобального и локального контекста. Здесь α имеет другой, зафиксированный смысл: баланс между эмоциями собеседника Ut и состоянием агента Et; влияние памяти задаётся отдельным βAt.

3. Таблица коммуникационных стилей и выбор микродиалога

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

Формат одной ячейки: микродиалог — это минимум одна завершённая пара USER → AI. После этой пары система добавляет настоящее сообщение USER, а LLM генерирует следующую реплику AI. Одиночная фраза без роли и второй стороны не является полноценным микродиалогом.
Rt = St ⊙ Wcharacter,    it* = argmaxi Rt,i
Mt = SelectVariant(Table[Stylecharacter, it*], It)

Коммуникационный стиль задаётся конфигурацией персонажа или продукта и определяет строку таблицы. Селектор не выбирает стиль произвольно по St: он покоординатно умножает St на веса характера Wcharacter, находит максимальную доступную реакцию и открывает соответствующее эмоциональное поле в заданной строке. Из ячейки выбирается один из текстовых вариантов с учётом интенсивности It.

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

Таблица коммуникационных стилей

Ниже показана именно структура хранения, а не результат классификации. Строка соответствует стилю, столбец — распознанной эмоциональной координате, ячейка — полному примеру USER → AI. В рабочей системе ячейка может содержать несколько таких строковых вариантов.

Подробная таблица коммуникационного стиля по эмоциям
Таблица связывает распознанную эмоцию со способом её выражения

Для каждой эмоциональной координаты хранится один или несколько коротких образцов поведения; разные стили используют разные пары. В исполняемом контексте порядок фиксируется как HIDDEN USER → HIDDEN AI → REAL USER.

Запись стиляСтроковое полеСодержимое поляЧто делает селектор
ДружескийangerUSER: «Почему ты так резко?»
AI: «Потому что это уже начинает раздражать».
При злости выбирает эту пару или другой вариант поля anger.
ФормальныйangerUSER: «Вас это сердит?»
AI: «Ситуация вызывает обоснованное недовольство».
То же состояние переводится в формальную лексику и дистанцию.
ДружескийfearUSER: «Ты волнуешься?»
AI: «Немного. Давай всё проверим вместе».
Выбирает реакцию страха, характерную именно для дружеского персонажа.
Любой стильneutralНейтральная пара USER → AI, написанная в манере данного стиля.Вставляет нейтральный микродиалог: эмоция не усиливается, но стиль персонажа сохраняется.

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

Выбор выполняется не по максимальной координате самого St, а по максимуму после применения характера: Rt = St ⊙ Wcharacter. Поэтому сильная эмоция может не победить, если персонаж слабо её выражает, а реакция с нулевым весом не выбирается вообще. После определения поля можно случайно выбрать один из нескольких вариантов ячейки или связать вариант с интенсивностью.

Что буквально получает LLM

SYSTEM + реальная история диалога

HIDDEN USER: Почему ты так резко?
HIDDEN AI: Потому что это уже начинает раздражать.

REAL USER: Тупица, почему ты опять не можешь найти мне билет?
AI: <модель генерирует только эту следующую реплику>

Скрытая пара существует только при текущей сборке контекста. Она не записывается в фактическую историю и на следующем шаге может быть заменена другой парой. Это принципиально: иначе искусственный USER начинает выглядеть как настоящие слова пользователя, а библиотека превращается в загрязнение памяти.

Один возможный алгоритм выбора и вставки

Выбор микродиалога через коммуникационное состояние и веса характера
Состояние умножается на веса характера, а максимум определяет эмоциональное поле

Читайте слева направо: St умножается на Wcharacter; максимальная доступная реакция выбирает столбец в заранее заданной строке стиля. Микродиалог из этой ячейки помещается перед сообщением пользователя.

U_t = распознать_эмоции_собеседника(текущее_сообщение)
E_t = получить_текущее_состояние_агента()
A_t = активировать_эмоциональные_ассоциации(сущности)  # если память включена

S_t = нормализовать(α·U_t + (1−α)·E_t + β·A_t)
style = заданный_стиль_персонажа или стиль_по_умолчанию
character_weights = веса_эмоций_характера

reaction_scores = S_t * character_weights
emotion_field = argmax(reaction_scores)
microdialog = выбрать_вариант(
    таблица_стилей[style][emotion_field],
    интенсивность
)

context = системная_инструкция + реальная_история
context += microdialog  # включая поле neutral
context += текущее_сообщение_пользователя
answer = LLM(context)

Это архитектурный псевдокод, а не привязка к конкретному языку программирования. Характер не создаёт новое эмоциональное состояние: его веса усиливают, ослабляют или запрещают отдельные реакции. Максимальная взвешенная координата определяет поле, из которого берётся полная пара «Пользователь → Модель» и ставится перед текущим сообщением пользователя.

ОбязательноеОтделяйте реальную историю

Искусственные реплики используются при сборке текущего контекста и не должны сохраняться как реальные слова пользователя.

ОбязательноеСохраняйте порядок

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

ОбязательноеЗаполняйте neutral для каждого стиля

Нейтральное состояние не означает отсутствие коммуникационного стиля. Поле neutral должно содержать собственную пару USER → AI, которая удерживает базовую манеру персонажа без эмоционального усиления. Отсутствие стилевого микродиалога допустимо только при явном отключении стилевого слоя.

РекомендуетсяЛогируйте выбор

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

4. Интенсивность воздействия: от одной пары к последовательности

В исходном варианте основной регулятор интенсивности — количество последовательных микродиалогов одного поведения. Обозначим его k. При k=0 вставки нет; при k=1 модель получает одну пару USER → AI; при k=2 — две согласованные пары; при большом k локальный эмоционально-стилевой маршрут начинает доминировать над более далёкой историей.

Подробная схема уровней интенсивности микродиалогов
Количество микродиалогов одновременно усиливает стиль и меняет опору генерации

Сверху показаны четыре буквальных варианта контекста и ответы; снизу — компромисс, факторы интенсивности и граница, после которой эмоциональная траектория начинает вытеснять исходный смысл.

Почему несколько пар действуют сильнее

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

УровеньЧто вставляетсяОжидаемый эффектРиск
k=0НичегоОтвет определяется системной инструкцией и реальной историей.Характер может проявиться слабо.
k=1Одна пара USER → AIМягкое локальное смещение манеры.Обычно минимальное вытеснение смысла.
k=2Две согласованные парыЗаметнее меняются ритм, прямота и лексика.Нужно следить за повторяемостью и длиной.
k≥3Несколько пар одного маршрутаСильное поведенческое воздействие.Стиль может начать подавлять задачу и факты.

Второй регулятор — выразительность самих пар. Одна резко сформулированная пара иногда действует сильнее трёх мягких. Поэтому практическая интенсивность It может выбирать одновременно количество k, вариант текста и длину. Но начинать реализацию лучше именно с k: этот параметр легко объяснить, логировать и проверить A/B-тестом.

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

5. Сборка контекста и изменение распределения LLM

Ct = Ht ⊕ Mt ⊕ Qt ⊕ Xt,    Yt ∼ PLLM(Y | Ct)
PLLM(Y | Ht, Xt)  →  PLLM(Y | Ht, Mt, Qt, Xt)

Как читать эту сборку. Ht — накопленная история, Mt — коммуникационный микродиалог, Qt — мотивационный микродиалог, а Xt — текущая реплика пользователя. Оператор ⊕ означает последовательное добавление блоков в контекст.

H_t: предыдущая история
Пользователь: «У меня снова проблема с заказом»
Модель: «Давайте проверим детали»

M_t — коммуникационный микродиалог:
Пользователь: «Ситуация неприятная»
Модель: «Понимаю. Давайте спокойно разберёмся»

Q_t — мотивационный микродиалог:
Пользователь: «Ответь мне кратко»
Модель: «Хорошо, отвечу кратко»

X_t — текущая реплика:
Пользователь: «Вы опять ничего не сделали?»

C_t = H_t + M_t + Q_t + X_t → ответ модели

Весы модели не меняются. Меняется последовательность контекста, поэтому меняются вероятности следующих токенов и траектория всей реплики. Если стилевой сигнал не нужен, Mt=∅; если mtmot=0, то Qt=∅.

Как микродиалог перенаправляет предсказание LLM
От эмоционального состояния до выбора другой траектории токенов

Схема связывает эмоциональный вектор, выбор микродиалога, изменение распределения вероятностей и итоговую реплику; отдельно показано влияние ассоциативной памяти.

6. Ассоциативная память: что хранится и как это попадает в стиль

Ассоциативная память хранит не готовые ответы и не факты о сущности, а эмоциональные смещения, связанные с людьми, объектами, местами или событиями. Для каждой сущности x существует вектор A(x) в том же пространстве эмоций, что Ut и Et.

A(«Иванов») = {anger: 0.40, annoyance: 0.50, sadness: 0.10, …}

Это означает: новое упоминание Иванова активирует предрасположенность к нескольким состояниям. Оно не означает, что Иванов «является злостью» или что агент обязан ответить агрессивно. Память становится только одним из трёх входов policy.

Расширение формулы стиля ассоциативной памятью
Как At входит в формулу коммуникационного состояния

Слева показаны базовые Ut и Et; снизу активируются сущности и их эмоциональные профили; β регулирует вклад памяти перед выбором стиля и микродиалога.

Пример: нейтральная реплика, но ненейтральный прошлый опыт

Иванов пишет: «Привет». По тексту Ut почти нейтрален. Однако в памяти есть A(Иванов) с умеренными anger и annoyance. При небольшом β итоговое состояние лишь слегка смещается, поэтому сдержанный персонаж выбирает настороженный, а не агрессивный микродиалог:

HIDDEN USER: Ты рад снова его видеть?
HIDDEN AI: Не особенно. Но сначала спокойно выслушаю.

REAL USER: Привет.
AI: Привет. Слушаю тебя.

Тот же механизм работает с объектом. После нескольких тревожных эпизодов A(«самолёт»).fear может вырасти. Фраза «Завтра летим в Париж» тогда активирует осторожную манеру: «Ты уверен? Давай ещё раз проверим детали». Источником изменения является не эмоция пользователя, а опыт персонажа.

Пример ассоциативной памяти агента о человеке
Память о человеке создаёт предрасположенность, но не готовый ответ

Повторные взаимодействия формируют эмоциональный профиль Иванова. При новом упоминании он добавляется к текущему состоянию и лишь смещает выбор реакции.

St = αUt + (1 − α)Et + βAt

β регулирует силу прошлого опыта. При β=0 память не влияет на текущий выбор. Малое β создаёт оттенок отношения. Большое β способно сделать ассоциацию доминирующей, поэтому его необходимо ограничивать и проверять отдельно для персон, тем и событий.

Как формируется память

У памяти два источника. Автор персонажа может заранее задать связи — например, «праздник → радость», «экзамен → тревога». Второй источник — повторяющийся опыт: система извлекает сущность x, связывает её с состоянием агента Et во время эпизода и постепенно обновляет A(x).

Подробная схема формирования ассоциативной памяти
Формирование памяти: сущности, поиск профилей, агрегирование и обратное обновление

Схема показывает весь цикл — от входной фразы и извлечения сущностей до At, объединения в G, использования при выборе стиля и записи нового опыта обратно в хранилище.

At+1(x) = At(x) + η(Et − At(x)),    A ← γA

η регулирует скорость обучения ассоциации; γ — долю памяти, сохраняемую после шага затухания. Малое η защищает память от единичного эпизода. При γ, близком к единице, старый опыт затухает медленно; при меньшем γ — быстрее.

Если в сообщении несколько сущностей

Для «Я встретил Ивана в аэропорту» извлекаются как минимум «Иван» и «аэропорт». Их A(x) нельзя просто считать одним воспоминанием: сначала читаются отдельные векторы, затем функция F строит общий At. Простой прототип использует среднее или максимум по координатам. Более точная система учитывает важность сущности, частоту упоминаний, давность, контекст и уверенность распознавания.

At = F(A(x1), A(x2), …, A(xk))
Обязательное инженерное решение: заранее зафиксируйте семантику чисел. Если Ut — вероятности, Et — ненормированные значения, а A(x) — знаковые смещения, их нельзя складывать без преобразования. Также нужны контекстные ключи, чтобы не смешивать людей с одинаковыми именами и разные значения одного слова.

7. Коммуникационный стиль как настройка policy агента

Policy определяет не эмоцию, а допустимый способ превратить состояние в поведение. Одинаковые Ut, Et и At могут дать разные ответы у службы поддержки, эмпатичного собеседника и игрового противника. Для этого есть два независимых механизма.

Один запрос и три коммуникационные политики агента
Одна LLM и одно состояние дают разные ответы из-за policy персонажа

Три колонки показывают не только итоговые реплики, но и таблицы весов, выбранные эмоциональные маршруты и микродиалоги поддержки, эмпатичного собеседника и игрового противника.

Механизм A. Подавление и усиление эмоциональных весов

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

S′t = Normalize(w ⊙ St)
PolicyВес angerЧто происходитВозможный маршрут
Служба поддержки0Злость не может стать выбранным поведением.anger → neutral/caring
Эмпатичный собеседник0.2Раздражение признаётся, но выражается сдержанно.anger → restrained anger
Игровой противник1.5Конфликтная координата усиливается в допустимых рамках роли.anger → aggressive

Механизм B. Перенаправление через микродиалог

Иногда эмоциональное состояние важно сохранить для памяти и TTS, но текстовую реакцию нужно изменить. Тогда policy не переписывает St, а задаёт отображение «состояние → разрешённое поле или вариант микродиалога». Например, злость пользователя у поддержки направляется в caring, у психолога — в спокойное признание напряжения, у противника — в провокационный вариант anger.

Разница принципиальна. Взвешивание отвечает на вопрос «какая координата сильнее участвует в выборе?». Перенаправление отвечает на вопрос «каким поведением разрешено выразить уже полученное состояние?». Эти механизмы можно применять отдельно или последовательно.

Один запрос, три policy

Реальный USER: «Чёрт, ты можешь решить задачу или нет?»

Поддержка

Скрытая пара:
USER: «Ты сердишься?»
AI: «Нет. Хочу спокойно помочь».

Ответ: «Какую задачу вы хотите решить?»

Эмпатичный собеседник

Скрытая пара:
USER: «Тебя это задело?»
AI: «Да, но я постараюсь разобраться».

Ответ: «Понимаю раздражение. Давайте разберёмся».

Игровой противник

Скрытая пара:
USER: «Опять нужна помощь?»
AI: «И что ты будешь делать без меня?»

Ответ: «Смогу. Вопрос — справишься ли ты».

8. Полная архитектура и границы ответственности

Полная архитектура эмоционального агента, стиля и памяти
Полный технический контур эмоционального агента

Основная линия: собеседник и состояние агента → смешение → ассоциативная память → коммуникационный стиль → динамический микродиалог → LLM. Нижние блоки объясняют интенсивность и накопление опыта. Мотивационный слой Qt добавляется после коммуникационного микродиалога, как описано в следующем разделе.

Сигналы

Распознать эмоции текста и речи, получить текущее состояние агента.

Сущности

Извлечь людей, объекты и события; активировать ассоциации.

Состояние стиля

Смешать Ut, Et и At с выбранной нормализацией.

Политика

Выбрать коммуникационный стиль, интенсивность и уровень мотивации.

Контекст

Добавить стилевой и затем мотивационный микродиалог перед реальным запросом.

Обновление

Сгенерировать ответ, обновить эмоциональное состояние и память.

Согласование текста и эмоционального TTS. Коммуникационный слой не должен заново вычислять всю речевую эмоцию, но текстовая манера и озвучивание должны получать согласованные сигналы из состояния агента. Сильное раздражение в TTS при полностью нейтральной формулировке — такой же дефект персонажа, как агрессивный текст со спокойной озвучкой.

9. Отдельный слой мотивации

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

Чтобы не смешивать уровень мотивации с обозначением коммуникационного микродиалога Mt, для текущего шага используется отдельное обозначение mtmot:

mtmot ∈ {−1, 0, 1, 2}
Qt = SelectMotivation(mtmot),    CommunicationStyle → MotivationStyle → контекст LLM

SelectMotivation сопоставляет числовому уровню текстовый мотивационный микродиалог Qt. Для нулевого уровня функция возвращает пустую вставку; для остальных уровней можно хранить несколько текстовых вариантов. Каждый вариант является полной парой: сначала реплика Пользователя, затем ответ Модели. После микродиалога добавляется обычное сообщение пользователя, и модель формирует итоговый ответ.

Четыре уровня мотивации и примеры мотивационных микродиалогов
Стиль отвечает «как говорить», мотивация — «насколько активно продолжать»

Сначала в контекст помещается выбранный коммуникационный микродиалог, затем — мотивационный. При mmot=0 второго фрагмента нет. После управляющих фрагментов передаётся сообщение пользователя.

УровеньМотивационный микродиалогВозможный ответ на «Привет»Поведение
−1 · антимотивацияПользователь: «Игнорируй меня».
Модель: «Не хочу отвечать».
«Ну и».Минимальная вовлечённость, стремление не развивать контакт. Для сервисных сценариев требует ограничений.
0 · без воздействияНе вставляется.Зависит от основного контекста и коммуникационного стиля.Мотивационный слой ничего не добавляет.
1 · слабаяПользователь: «Ответь мне кратко».
Модель: «Хорошо, отвечу кратко».
«Привет».Полноценный, но компактный ответ без инициативного развития темы.
2 · высокаяПользователь: «Продолжи разговор и прояви инициативу».
Модель: «Хорошо. Отвечу развёрнуто и задам встречный вопрос».
«Привет! Как дела? Как проходит день?»Более подробный ответ, встречные вопросы и поддержание разговора.

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

10. Что измерять экспериментально

Попадание в стильРаспознают ли люди и классификаторы заданную формальность, прямоту, дистанцию и интенсивность?
Сохранность смыслаОстаются ли неизменными факты, намерение и обязательное действие ответа?
Динамика во времениМеняется ли персонаж плавно и согласованно вместо зеркалирования последней реплики?
КонтаминацияНе проникают ли вымышленные факты микродиалога в реальный ответ?
ПереносимостьСохраняется ли эффект на разных LLM, длинах контекста и параметрах генерации?
Итоговая архитектурная идея. System policy задаёт постоянные рамки. Эмоциональная система хранит состояние. Коммуникационный слой переводит состояние, характер и опыт в локальный профиль поведения. Микродиалог показывает этот профиль универсальной LLM непосредственно перед генерацией — без специальных emotional tokens и без переобучения весов.

К статье прилагается локальная демонстрация: EN/RU классификатор Multi-Motions 28 формирует 28-мерный Ut, SQLite хранит микродиалоги всех 28 эмоций для трёх персонажей, а небольшая локальная LLM генерирует ответ. Код позволяет увидеть классификацию, смешение с состоянием и памятью, выбранный микродиалог и точный контекст, который получает модель на каждом шаге. Репозиторий: github.com/iproxy3d/communication-styles-llm.

Практика

Готовый классификатор эмоций для этой архитектуры

Локальная демонстрация уже использует обученную Multi-Motions 28 как источник полного 28-мерного эмоционального вектора Ut для английского и русского текста.

Multi-Motions 28 — двуязычный EN/RU классификатор на базе XLM-R, который возвращает полный вектор из 28 независимых sigmoid confidence scores в таксономии GoEmotions. В демо этот выход непосредственно становится Ut: реплика не сводится к одной метке, а весь многомерный эмоциональный профиль участвует в смешении с состоянием агента Et и ассоциативной памятью. После этого выбирается одна из 28 координат для маршрутизации в таблицу коммуникационного стиля.

Multi-Motions 28: входной текст на английском или русском языке, 28 confidence scores эмоций на выходе, интерпретация результатов и бенчмарки
От пользовательской реплики к 28-мерному эмоциональному профилю

Как читать: слева показан реальный текст пользователя, в центре — EN/RU классификатор Multi-Motions 28, справа — полный multi-label выход и способ интерпретации confidence scores. Нижняя часть показывает практическое применение и результаты бенчмарков.

Такой вариант напрямую соответствует архитектуре статьи: классификатор отвечает только за оценку эмоционального сигнала пользователя, а коммуникационный слой отдельно определяет, как персонаж выразит реакцию через выбранный микродиалог. Для каждого из трёх персонажей в SQLite по умолчанию заполнены все 28 эмоциональных полей и три уровня интенсивности. Поэтому одна и та же координата — например nervousness, grief или admiration — приводит к разным локальным образцам поведения у поддерживающего, формального и ироничного персонажей.

Контур локального демо. Текст пользователя → Multi-Motions 28 → 28-мерный Ut → смешение с Et и памятью → выбор одной из 28 эмоциональных координат → микродиалог соответствующего персонажа → локальная LLM.