Архив рубрики ~Лента новостей~

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

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

— Нам нужны люди.
  — Какие?
  — Которых не существует. Но которые живут.
  — ?!

Статья Елизаветы Курочкиной, старшего специалиста по Data Science, компании Neoflex, посвящена рассказу о том, как простая задача генерации синтетических данных для банка переросла в создание фреймворка симуляции цифровой цивилизации под названием HumanDynamics.

Зачем вообще понадобилось что-то симулировать?

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

Однажды сотрудники Neoflex обратились к штатному R&D-специалисту по Data Science с запросом: «Сгенерируй пользовательские данные для банка».

На уровне идеи задача была довольно понятна — нужна синтетика. На практике всё оказалось немного сложнее.

Исходная постановка задачи или о специфике работы на R&D-проектах

Формально задача звучала как «создать синтетических клиентов банку». Но R&D редко работает с формальными задачами. Как правило, это область без чётких требований, с размытыми границами и высокой степенью неопределённости. Никакого готового решения, никакого roadmap’а. Только конечная точка того, как что-то должно выглядеть. В ходе брейнштормов с коллегами прозвучали следующие мысли. Цитата из обсуждений:

Для теста банковской среды нам нужны люди, которых не существует. Мы не можем использовать реальные данные – нужны неживые персонажи. Но при этом — они должны жить. Каждый из них должен быть уникален: кому-то 8 лет, кому-то 33, 45, 60. Кто-то пусть будет женат, кто-то – только поступает в университет. У каждого должна быть индивидуальная история: разводы, смена работы, путешествия, болезни, миграции, участие в преступлениях, победы и неудачи, банкротства. Все как у людей. И при этом — они должны жить в своем мире.

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

Звучит здорово, правда?

В этом смысле проект HumanDynamics оказался типичным Research & Developmentпроектом. Никаких готовых инструментов под такую задачу не существовало. Стандартные генераторы данных не подходили — слишком примитивны. Симуляторы поведения оказывались негибкими и неглубокими. Модели случайных процессов не давали нужной детализации, контекста и вариативности.

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

Итак, для чего?

  1. Тестировать скоринговые и андеррайтинговые системы. Банку нужна такая система для тестирования инфраструктуры без привлечения настоящих клиентов.

  2. Оценивать устойчивость процессов в условиях кризисов, массового оттока, паники.

  3. Имитировать мошенничество и другие риски, чтобы проверять корректность работы систем защиты.

  4. Анализировать поведение клиентов в ответ на внешние события.

Из чего?

Компоненты системы, из которых сложился фреймворк:

Агенты

Это синтетические персонажи, сгенерированные с уникальными характеристиками: ФИО, дата рождения, пол, гражданство, данные паспорта и ИНН, контактные данные. У каждого будет индивидуальный жизненный путь, на который влияют как внутренняя логика системы, так и случайные события.

Среда жизни

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

Банковская среда

Это часть среды, где агент может начать взаимодействие с банком: подать заявку на кредит, открыть счёт, запросить или отказаться от продукта и т.д. Всё с корректным API-взаимодействием, полями, статусами заявок и правилами обработки.

Правовая среда

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

Синтетический мир

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

cf809f19223357de5686a3961991d09d

Как система функционирует

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

Шаг 1. Создание профилей

Генерируются данные для n-заданного количества будущих агентов в случайной точке их жизненного пути. Профили создаются с индивидуальными характеристиками на основе заданных базовых параметров: ФИО, дата рождения, пол, гражданство, паспортные данные, ИНН, контактная информация. Все данные сохраняются в виде строк и столбцов сводной таблицы. Данные генерируются на основе библиотеки Faker, доработанной под нужный формат и тип данных.

Шаг 2.  Генерация жизни

Сырые табличные данные преобразуются в объекты специального класса “Agent” и «оживают» — передаются под управление LLM, которая создает для каждого из них по одному индивидуальному жизненному событию.

_life_event_prompt = «»» Ты — генератор синтетических жизненных сценариев для виртуальных пользователей банка. На основе входных данных ты должен сгенерировать реалистичный новый следующий этап в жизни пользователя, а также, при необходимости, обновить его статус в стоп-листах. **Входные данные о пользователе(agent_data):** {agent_data} **Возможные сферы жизни (life_spheres):** {life_spheres} **Категории стоп-листов(stop_lists):** {stop_lists} **Твоя задача:** 1. Придумай следующий реалистичный жизненный этап/событие, относящееся к одной из сфер из `life_spheres`. Событие должно соответствовать логичному развитию события, исходя из информации в `agent_data`. События должны быть из разных`life_spheres` и быть разнообразными. 2. !Опционально! Добавь или удали пользователя из одного или нескольких стоп-листов, если это логично. Листы носят негативный характер и должны включать нежелательных пользователей в связи с их неплатежеспособностью, испорченной кредитной историей, нарушениями законодательства и прочими негативными аспектами. Включение или исключение должно основываться на реальных фактах, исходя из информации в `agent_data`. …

 Примеры генераций:

  • Якубову Ивану исполнилось 7 лет, и он пошёл в школу

  • Дряглов Степан получил повышение и стал ведущим менеджером по продажам в компании

Шаг 3. Синхронизация с хранилищем

Агенты с новыми событиями объединяются с уже существующими в реляционной базе данных. Все данные хранятся в виде таблиц. Этот шаг необходим для поддержания количества и разнообразия популяции.

Шаг 4.  Выборочная активация и повторная генерация жизненного события

Из БД случайным образом извлекается n-число агентов, которые становятся активными — для каждого из них генерируется ещё одно индивидуальное жизненное событие.

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

Шаг 5.  Регистрация в банке

Агенты, если еще до этого не являлись клиентами банка, подают заявки на API создания учетной записи в системе.

  • Отклонённые — возвращаются в БД и исключаются из цикла активации.

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

На этом этапе проверяется работа скоринговых систем на предмет выявления нежелательных и потенциально неплатежеспособных клиентов.

С момента одобрения у агента начинается активная «жизнь» внутри банковской среды.

Шаг 6. AI-портрет

На основе базовой информации, «прожитых» событий и истории предыдущих транзакций (если есть), LLM формирует описательный AI-портрет клиента. Он строится по заранее определённым разработчиком критериям.

_psychographic_profile_prompt = «»» Представь, что ты анализируешь поведение клиента банка, чтобы предсказать его дальнейшие шаги. На основе предоставленной информации о клиенте и истории событий его жизни, и его ответных действий на них, создай портрет клиента по следующим характеристикам. Ответ дай на русском языке кратко, 1-2 слова по каждому критерию. Информация о клиенте: {client_data} Характеристики: {client_criteria} «»»

Шаг 7. Внешнее событие

Из среды синтетического мира поступает внешнее событие.

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

[ { «type»: «экономическое», «event»: «Повышение ключевой ставки Центробанка» }, { «type»: «социальное», «event»: «Демографический бум» }, { «type»: «экологическое», «event»: «Наводнение, нарушившее работу офисов банка» }, { «type»: «технологическое», «event»: «Массовый сбой в системе онлайн-банкинга» }, { «type»: «политическое», «event»: «Изменение правил пенсионных накоплений» }, … ]

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

Шаг 8. Реакция

На данном этапе в LLM поступают следующие параметры:

  • данные клиента

  • история жизненных событий клиента

  • история операций в банке

  • выявленный AI-портрет

  • само внешнее событие

AI-модель, анализируя всю информацию в совокупности, «предсказывает» наиболее вероятное следующее действие клиента в ответ на событие-триггер. Решения всегда сугубо индивидуальны и поведение каждого клиента связано с его жизненным контекстом и персональными характеристиками.

_next_action_prompt = «»» Представь, что ты анализируешь поведение клиента банка. На основе следующих характеристик клиента и истории операций предскажи его вероятное действие в ответ на указанную новость. Ответь на русском языке одним вариантом из предложенных действий без дополнительных пояснений. Информация о клиенте: {personal_data} Психографический портрет клиента: {ai_portrait} Возможные действия в банке: {actions} Новость: {event} Вероятное действие клиента: «»»

Шаг 9. Активация действия

В зависимости от выбранного действия, применяется Function Calling-механизм, запускающий цепочку действий в Langchain. Она генерирует сопутствующие данные и обращается к API банка для выполнения операций.

Представим, клиент решил взять кредит. Далее LLM формирует дополнительные данные, необходимые для заполнения заявки, которые будут в определенном формате, прописанном в документации банка. Например:

  • Тип кредита

  • Сумма

  • Валюта (RUB, USD, CNY)

  • Срок

  • Назначение кредита

  • Доход заявителя

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

У клиента, тем временем, в профиле меняется состояние: из state=“active” в state=“awaiting”. От данного параметра зависит маршрутизация клиента в следующей итерации.

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

Шаг 10. Взросление

После каждого полного цикла внутри банка у агента увеличивается возраст.  Одна итерация – +1 один год жизни.

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

* Пенсия. Был установлен «порог взросления», после которого система перестает «дергать» агента и запускать в банк по причине неактуальности. Эта граница – 80 лет. При достижении 80 лет агент переводится в состояние «retired» и исключается из дальнейших активаций. Этот агент больше не будет «проживать» новые события, не будет «ходить» в банк, увеличивая возраст. Исторические данные о нем будут оставаться в общем хранилище. То же происходит и с теми агентами, чья жизненная история завершилась преждевременной смертью — агент также получает статус «retired»и остаётся в общей базе.

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

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

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

Так, обычная задача генерации синтетических данных в рамках R&D-проекта обрела совершенно новое обличие и позволила расширить вымышленные горизонты невымышленного мира.

Источник: habr.com

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Архив рубрики ~Обо всем~ Уф! Пользователи Windows 10 получили отсрочку на год для получения обновлений безопасности. Новости робототехники Как интеграция компактных роботов расширяет возможности применения автономных мобильных роботов Новости робототехники В американских школах стартует пилотный проект с использованием человекоподобных роботов… Новости робототехники OFG: миниатюрный светоуправляемый роботизированный захват для микроманипуляций Уже более 35… Новости робототехники WANDER-bot: робот, который обуздал ветер Инженеры Крэнфильдского университета представили робота-исследователя… Архив рубрики ~Коротко из Telegram~ Anthropic анонсировала Claude Tag — нового ИИ-агента, который работает прямо… Архив рубрики ~Полезное~ Нашли бесплатный сервис, который превращает PDF в нормальный текст за… Архив рубрики ~Коротко из Telegram~ Интернет-платформы будут бороться с кадровым голодом в России Заместитель управляющего… Архив рубрики ~Коротко из Telegram~ Claude Code теперь можно запускать без платного API Anthropic Появился… Архив рубрики ~Коротко из Telegram~ США притормозили запуск GPT-5.6 Правительство США вмешалось в релиз GPT-5.6… Архив рубрики ~Коротко из Telegram~ Axenix прокачала ИИ-агентов Numira для корпоративной рутины Axenix расширила возможности… Архив рубрики ~Обо всем~ Я живу с двумя Siri. Повышение цен от Apple сделает вашу жизнь такой же. Новости робототехники Мы знаем, как создатели более умных роботов. Теперь нам нужно изучить более разумные способы их тестирования. Архив рубрики ~Коротко из Telegram~ Инструменты дня 📇 Bytemine поддерживает ваши продажи и рабочие процессы ИИ с… Архив рубрики ~Обо всем~ Уф! Пользователи Windows 10 получили отсрочку на год для получения обновлений безопасности. Новости робототехники Как интеграция компактных роботов расширяет возможности применения автономных мобильных роботов Новости робототехники В американских школах стартует пилотный проект с использованием человекоподобных роботов… Новости робототехники OFG: миниатюрный светоуправляемый роботизированный захват для микроманипуляций Уже более 35… Новости робототехники WANDER-bot: робот, который обуздал ветер Инженеры Крэнфильдского университета представили робота-исследователя… Архив рубрики ~Коротко из Telegram~ Anthropic анонсировала Claude Tag — нового ИИ-агента, который работает прямо… Архив рубрики ~Полезное~ Нашли бесплатный сервис, который превращает PDF в нормальный текст за… Архив рубрики ~Коротко из Telegram~ Интернет-платформы будут бороться с кадровым голодом в России Заместитель управляющего… Архив рубрики ~Коротко из Telegram~ Claude Code теперь можно запускать без платного API Anthropic Появился… Архив рубрики ~Коротко из Telegram~ США притормозили запуск GPT-5.6 Правительство США вмешалось в релиз GPT-5.6… Архив рубрики ~Коротко из Telegram~ Axenix прокачала ИИ-агентов Numira для корпоративной рутины Axenix расширила возможности… Архив рубрики ~Обо всем~ Я живу с двумя Siri. Повышение цен от Apple сделает вашу жизнь такой же. Новости робототехники Мы знаем, как создатели более умных роботов. Теперь нам нужно изучить более разумные способы их тестирования. Архив рубрики ~Коротко из Telegram~ Инструменты дня 📇 Bytemine поддерживает ваши продажи и рабочие процессы ИИ с…