Skip to content

Latest commit

 

History

History
160 lines (119 loc) · 11.6 KB

File metadata and controls

160 lines (119 loc) · 11.6 KB

Communicado

Closed-loop оптимизация коммуникации центрального банка через синтетические фокус-группы.

ЦБ публикует один пресс-релиз на языке экспертов. Эксперт и пенсионер читают одну фразу — и реагируют противоположно (Kim & Lee, «Bounded Rationality in CB Communication»). Communicado прогоняет релиз через мультиагентный замкнутый цикл — интервью с синтетическими персонами → анализ → редактура → валидация — пока текст не станет понятен каждой аудитории без потери фактов.

Работает из коробки без API-ключей (детерминированный mock-режим) или с Anthropic API для живых прогонов.

English version: README.md.


Проблема

Факт Источник
~30% домохозяйств обновляют ожидания после решений ЦБ Lamla & Vinogradov (2024, JME)
Flesch Reading Ease оригинальных релизов ≈ 35 («очень сложный») Оборнева (2006)
Эксперт и не-эксперт реагируют на одну фразу ЦБ противоположно Kim & Lee
37% россиян узнают экономические новости из Telegram НАФИ (2024)

Архитектура

Релиз ЦБ  Экстрактор (5 тезисов)  Интервью (6 персон × 6 вопросов)
         Аналитик (Score + проблемы)  Редактор  Валидатор (сохранность тезисов)
         [повтор до сходимости]

Шесть агентных ролей общаются через единый шлюз llm.py. Валидатор гарантирует сохранность фактов: если потерян хоть один из 5 тезисов или появился инвестиционный совет — редактура отклоняется и повторяется.

Три системы метрик

  • Communication Score (LLM, 0–100) — понятность по панели персон, с anchor points калибровки;
  • Flesch Reading Ease — детерминированная метрика читаемости для русского языка (Оборнева, 2006) + счётчик жаргона ЦБ;
  • Sentiment Balance — словарный баланс тревожных и успокаивающих слов, не зависит от LLM.

Персоны

6 синтетических персон, 19 полей, 7 осей дифференциации из литературы. Формат профилей воспроизводит подход СФГ Банка России.

Персона Роль Ключевая ось Attention
Валентина, 67 Пенсионерка, Воронеж Низкая грамотность, ТВ, высокая тревожность ~25%
Алексей, 38 Финдиректор, Москва Высокая грамотность, cbr.ru напрямую ~95%
Ольга, 34 Мама с ипотекой, Казань Максимальная чувствительность к ставке ~60%
Сергей, 45 Водитель, Челябинск Мин. активы, мин. внимание к ЦБ ~15%
Павел, 51 Владелец бизнеса, Краснодар Кредитный канал, pricing power ~30%
Даниил, 22 Студент-экономист, СПб Молодёжь, соцсети, теория без практики ~15%

Результаты

На 4 реальных пресс-релизах ЦБ (окт 2025 – мар 2026), 6 персон, adaptive-интервью:

  • 4/4 прогона показывают стабильный рост Score;
  • +27 средний прирост Communication Score (от 35–42 до 62–72);
  • 0.0 sentiment после оптимизации — тревога нейтрализована;
  • 72 лучший Score (релиз 20.03.2026, снижение ставки до 15%).

До / После (релиз 20.03.2026)

Оригинал (Score 42) После 3 итераций (Score 72)
«снизить ключевую ставку на 50 б.п., до 15,00% годовых» «снизить ключевую ставку на 0,5 процентного пункта — до 15%. От этой ставки зависят проценты по вкладам и кредитам»
«устойчивые показатели текущего роста цен остаются в диапазоне 4–5% в пересчете на год» «базовая инфляция — рост цен на товары и услуги, кроме продуктов и топлива — остается в диапазоне 4–5% в год»
«значимо выросла неопределенность со стороны внешних условий» «ситуация в мире стала менее предсказуемой, и это может повлиять на российскую экономику»

Каналы

Из одного релиза — текст для любого канала. Каждый канал оптимизируется через свой closed loop с персонами целевой аудитории.

Канал Аудитория Score Стиль
Пресс-релиз cbr.ru Алексей, Павел 45 → 68 Официальный, с терминами
ТГ-канал ЦБ Алексей, Даниил, Ольга 45 → 78 Доступный, до 1000 знаков
Деловые СМИ Алексей, Павел 45 → 75 Цифры, прогнозы, кредиты
VK Клипы / Reels Даниил, Ольга 45 → 78 Сценарий 60 сек, на «ты»

Telegram-бот: коммуникация для одного

  1. Знакомство — бот расспрашивает: возраст, профессия, ипотека, вклады, откуда новости;
  2. Построение персоны — из ответов строится профиль с 19 полями;
  3. Closed Loop — пресс-релиз прогоняется через цикл оптимизации для этого пользователя;
  4. Персональный текст + Q&A — пользователь получает своё объяснение и может задать вопросы.

Запуск

git clone https://github.com/bzgly/communicado.git
cd communicado
pip install -r requirements.txt

# Streamlit-демо — работает в mock-режиме без ключей
streamlit run app.py

С реальным Claude API:

cp .env.example .env    # вписать ANTHROPIC_API_KEY

python run_one.py release 3       # последний релиз, 3 итерации
python run_one.py channel vk_clips

python -m pytest tests/ -v        # тесты (mock-режим)
USE_MOCK=0 python test_prod.py    # прод-тесты с живым API
python bot.py                     # Telegram-бот (нужен BOT_TOKEN в .env)

Переменные окружения: ANTHROPIC_API_KEY (живой режим), CLAUDE_MODEL (по умолчанию claude-opus-4-8), USE_MOCK=1/0 (принудительный mock), BOT_TOKEN (только для бота).

Структура проекта

communicado/
├── engine.py             # closed loop: extract → interview → analyze → edit → validate
├── llm.py                # LLM-шлюз: Anthropic API + детерминированный mock-режим
├── interview.py          # интервьюер: scripted и adaptive (LLM follow-up) режимы
├── personas.py           # 6 персон, 19 полей, 7 осей из литературы
├── prompts.py            # системные промпты всех агентов
├── readability.py        # детерминированные метрики: Flesch-RU, жаргон, sentiment
├── channels.py           # 5 каналов коммуникации ЦБ с целевыми аудиториями
├── sample_releases.py    # 4 реальных пресс-релиза ЦБ
├── mock_data.py          # калиброванные мок-ответы для демо без API
├── app.py                # Streamlit-демо (цикл + каналы + сравнение)
├── bot.py                # Telegram-бот персональной коммуникации
├── run_one.py            # одиночный прогон → results/*.json
├── run_benchmarks.py     # массовые прогоны для презентации
├── build_charts.py       # графики из результатов (Plotly)
├── build_presentation.py # генератор PDF-презентации (reportlab)
├── test_prod.py          # прод-тесты с реальным API
├── tests/                # юнит- и интеграционные тесты
└── docs/                 # презентация, речь к защите

Ограничения

  • LLM склонны к стереотипизации — персоны откалиброваны по 7 осям из литературы; следующий шаг — валидация на реальных транскриптах СФГ.
  • Score может колебаться — поэтому рядом работают детерминированные метрики (Flesch, jargon count, sentiment balance).
  • Не замена фокус-группы — инструмент быстрых итераций между реальными фокус-группами (минуты вместо недель).
  • Упрощение может усиливать тревогу — эффект Kim & Lee: понятный текст доносит тревожный сигнал сильнее.

Научная база

  1. Argyle et al. (2023). "Out of One, Many." Political Analysis
  2. Blinder et al. (2024). "CB Communication." JEL
  3. Bholat et al. (2019). "Enhancing CB Communications." BoE
  4. Cloyne et al. (2024). "Homeownership and MP." JME
  5. Christelis et al. (2020). "Trust in CB." IJCB
  6. D'Acunto et al. (2024). "Household Inflation Expectations." NBER
  7. Horton (2023). "Homo Silicus." NBER
  8. Kim & Lee. "Bounded Rationality in CB Communication"
  9. Lamla & Vinogradov (2024). "CB Announcements." JME
  10. Jung & Mongelli (2025). "Direct Communication." ECB
  11. Оборнева И.В. (2006). Адаптация Flesch для русского
  12. Банк России WP 148 (2024). "Households' Inflation Expectations: RCT"

Учебный проект по коммуникации центрального банка. Презентация: docs/presentation.pdf · Речь к защите: docs/speech.md · English version