hr-ai-agent
Описание
Proactive HR AI Agent for Sber Hackathon URFU 2025
Языки
- Python100%
🤖 HR AI Агент для Сбера
Проактивный AI-агент для мониторинга и анализа HR-данных
📋 Содержание
- Какую проблему решает агент
- Почему это AI-агент, а не чат-бот
- Почему нельзя заменить Perplexity или промптом
- Архитектура проактивного поведения
- Использование GigaChat
- Запуск проекта
- Структура проекта
- Ограничения и планы развития
🎯 Какую проблему решает агент
Проблема
HR-аналитики ежедневно сталкиваются с информационной перегрузкой:
- Десятки источников новостей о рынке труда
- Англоязычные источники требуют перевода
- Нет времени на постоянный мониторинг
- Важные тренды и риски остаются незамеченными
- Реактивная работа вместо проактивной аналитики
Решение
HR AI Агент автоматически:
| Функция | Описание |
|---|---|
| 🔄 Мониторинг | Непрерывно отслеживает RSS-ленты и источники данных |
| 🌐 Перевод | Переводит англоязычный контент на русский через GigaChat |
| 🏷️ Классификация | Категоризирует контент по HR-тематикам |
| 📊 Анализ трендов | Выявляет изменения и аномалии |
| 💡 Генерация инсайтов | Создаёт рекомендации БЕЗ запроса пользователя |
| 🚨 Алерты | Уведомляет о рисках в зависимости от роли пользователя |
🤖 Почему это AI-агент, а не чат-бот
Определение AI-агента
AI-агент — это автономная система, которая:
- Имеет состояние (State) — помнит предыдущие наблюдения
- Следует правилам (Rules) — применяет доменную логику
- Выполняет действия (Actions) — инициативно генерирует выводы
Сравнение
| Характеристика | Чат-бот | Поисковик | HR AI Агент |
|---|---|---|---|
| Инициатива | ❌ Ждёт запроса | ❌ Ждёт запроса | ✅ Проактивен |
| Память | ❌ Сессионная | ❌ Нет | ✅ Персистентная |
| Контекст времени | ❌ Нет | ❌ Нет | ✅ Историческое сравнение |
| Персонализация | 📝 Через промпты | ❌ Нет | ⚙️ Через конфигурацию |
| Выходные данные | 💬 Ответы | 🔗 Ссылки | 💡 Инсайты + 🚨 Алерты |
| Доменная логика | ❌ Общая | ❌ Общая | ✅ HR-специфичная |
Ключевые компоненты агента в коде
🚫 Почему нельзя заменить Perplexity или промптом
Критические отличия
| Возможность | Perplexity/ChatGPT | HR AI Агент |
|---|---|---|
| Запомнить, что вчера было 10 новостей о сокращениях, а сегодня — 50 | ❌ Нет памяти | ✅ Персистентное состояние |
| Автоматически проверить источники каждые 15 минут | ❌ Только по запросу | ✅ Фоновый мониторинг |
| Применить правила "если риск > 0.7 и тема = увольнения, то алерт" | ❌ Нет правил | ✅ Конфигурируемые правила |
| Адаптировать выходные данные под роль HR-аналитика vs HR-руководителя | ❌ Промпты | ✅ Профили ролей |
| Выявить аномалию: "В январе упоминаний burnout было 5%, сейчас — 25%" | ❌ Нет временного контекста | ✅ Анализ трендов |
Почему промпт недостаточен
# ЧТО МОЖЕТ ПРОМПТ:
"Проанализируй эти 5 статей о HR и выдели ключевые тренды"
# ЧЕГО ПРОМПТ НЕ МОЖЕТ:
1. Запустить себя каждые 15 минут без участия пользователя
2. Сравнить текущие данные с данными недельной давности
3. Принять решение о создании алерта на основе конфигурации пользователя
4. Накопить статистику для выявления аномалий
5. Адаптировать поведение под роль без изменения промпта
Формула отличия
AI Agent = State + Rules + Autonomous Actions
Chatbot = Stateless + Generic + Reactive
⚙️ Архитектура проактивного поведения
Цикл работы агента
┌─────────────────────────────────────────────────────────────┐
│ ЦИКЛ АГЕНТА (каждые N минут) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. МОНИТОРИНГ 2. ОБРАБОТКА │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ RSS-ленты │───────▶│ Перевод │ │
│ │ Mock-данные │ │ (GigaChat) │ │
│ └──────────────┘ └──────┬───────┘ │
│ │ │
│ 3. КЛАССИФИКАЦИЯ 4. АНАЛИЗ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ HR-тематика │◀───────│ Сравнение с │ │
│ │ (GigaChat) │───────▶│ историей │ │
│ └──────────────┘ └──────┬───────┘ │
│ │ │
│ 5. РЕШЕНИЕ 6. ДЕЙСТВИЕ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Применение │───────▶│ Инсайт или │ │
│ │ правил │ │ Алерт │ │
│ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Инициативное поведение
Агент генерирует инсайты по трём триггерам:
Формат инсайта
Каждый инсайт отвечает на три вопроса:
- Что изменилось? — факт или наблюдение
- Почему это важно для HR? — бизнес-контекст
- Что рекомендуется сделать? — конкретное действие
⏰ Фильтрация по времени
Агент поддерживает анализ данных в заданных временных рамках:
- последний час
- последние 6 часов
- последние 24 часа
- последняя неделя
- последний месяц
- всё время
🔄 Состояние агента
Агент хранит состояние между циклами:
- наблюдения;
- инсайты;
- тренды;
- активные алерты;
- обработанные источники.
Предусмотрен ручной сброс состояния через интерфейс, что позволяет:
- очистить кэш;
- повторно обработать данные;
- использовать проект для демонстрации.
📊 Источники данных
В демо-версии используются:
- RSS-ленты (HBR, SHRM, Reddit, Hacker News и др.)
- Mock-данные для демонстрации работы агента
Mock-данные:
- используются только для демонстрации;
- могут быть включены или отключены;
- не влияют на архитектуру агента.
Важно:
Новости используются исключительно как внешний сигнал.
HR-аналитика в production-версии работает с внутренними HR-системами.
📈 Метрики
В интерфейсе отображаются:
- количество выполненных циклов мониторинга;
- общее число наблюдений;
- количество инсайтов;
- количество активных алертов.
Метрика «Циклов мониторинга» отражает число запусков агента, а не количество RSS-источников.
🖥 Интерфейс
Проект включает web-интерфейс на Streamlit:
- настройка роли пользователя;
- выбор приоритетных тем;
- установка чувствительности к рискам;
- выбор временного диапазона;
- запуск цикла анализа;
- просмотр инсайтов, алертов и трендов.
🔮 Использование GigaChat
Интеграция
GigaChat используется для четырёх задач:
| Задача | Метод | Описание |
|---|---|---|
| Перевод | | Перевод англоязычного контента |
| Классификация | | Определение HR-тематики |
| Генерация инсайтов | | Создание рекомендаций |
| Анализ трендов | | Сравнение с историей |
Пример использования
🚀 Запуск проекта
Требования
- Python 3.10+
- GigaChat API credentials
Установка
Переменные окружения
📁 Структура проекта
hr_agent/
├── README.md # Документация (этот файл)
├── requirements.txt # Зависимости Python
├── .env.example # Пример переменных окружения
│
├── config/
│ └── settings.py # Конфигурация приложения
│
├── src/
│ ├── agent/
│ │ ├── core.py # Ядро агента
│ │ ├── state.py # Управление состоянием
│ │ └── rules.py # HR-правила и логика
│ │
│ ├── sources/
│ │ ├── rss_fetcher.py # Получение RSS-лент
│ │ └── mock_data.py # Генератор тестовых данных
│ │
│ ├── processing/
│ │ ├── translator.py # Перевод через GigaChat
│ │ ├── classifier.py # Классификация контента
│ │ └── analyzer.py # Анализ трендов
│ │
│ ├── insights/
│ │ └── generator.py # Генерация инсайтов
│ │
│ └── api/
│ └── gigachat.py # Обёртка над GigaChat API
│
├── dashboard/
│ └── app.py # Streamlit-дашборд
│
└── data/
└── state.json # Персистентное состояние агента
⚠️ Ограничения и планы развития
Текущие ограничения
| Ограничение | Описание | Планируемое решение |
|---|---|---|
| Mock-данные | Часть данных генерируется для демо | Подключение реальных HR API |
| Один пользователь | Нет многопользовательского режима | Добавление авторизации |
| Локальное хранилище | JSON-файл для состояния | PostgreSQL / Redis |
| Ручной запуск циклов | Требуется нажатие кнопки | Celery / cron-задачи |
Mock-данные в проекте
Для демонстрации используются сгенерированные данные:
В production эти данные заменяются реальными источниками:
- HeadHunter API
- LinkedIn Job Postings
- Корпоративные HR-системы
План развития
- v1.1 — Интеграция с реальными HR API
- v1.2 — Многопользовательский режим с ролями
- v1.3 — Прогнозирование трендов (ML-модели)
- v1.4 — Интеграция с корпоративными мессенджерами (Telegram, Slack)
- v2.0 — RAG-модуль для работы с внутренними HR-документами
👥 Команда
Проект создан для хакатона Сбер 2024
📄 Лицензия
MIT License