Skip to content

desertigorr/multiagent-tech-interview

Repository files navigation

🧠 Multi-Agent Technical Interview System

Мультиагентная система для проведения технического интервью с кандидатом и формирования фидбэка.

Решение реализует agentic workflow: разные агенты отвечают за разные роли.

Я использовал модель mistral-nemo на 12B, но в теории можно использовать и просто mistral на 7B


Как запустить

Необходимо иметь установленный клиент Ollama

Установить и запустить модель:

ollama run mistral-nemo:latest

Установить виртуальное окружение и библиотеки:

python venv venv
pip install -r requirements.txt
python start_with_logger.py

После проведения собеседования, можно визуализировать полученные логи и отчёт:

streamlit run visualize.py

Можно привести логи к структуре из ТЗ:

python adapter.py

Только необходимо указать нужные вам пути в самом adapter.py

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

├── start_with_logger.py        # Главный скрипт. Запуск интервью (CLI) и оркестрация агентов
├── interview_state.py          # Глобальное состояние интервью (позиция, грейд, метрики)
├── interviewer.py              # Агент-интервьюер (генерация вопросов и ответов)
├── observer.py                 # Агент-наблюдатель (оценка ответов кандидата)
├── strategy.py                 # Агент-стратег (выбор следующего шага интервью)
├── hiring_manager.py           # Агент-менеджер (принимает финальное решение о кандидате и даёт фидбэк)
├── build_summary.py            # Сбор агрегированных метрик интервью для HiringManager
├── logger.py                   # Логгер интервью
├── adapter.py                  # Адаптер логов под формат submission
├── visualize.py                # Утилита для визуального просмотра логов (Streamlit)
├── call_llm.py                 # Унифицированный вызов LLM (prompt → response)
├── topics.py                   # Скрипт для нормализации темы интервью (чтобы LLM не отходили от разрешенного пула)
├── requirements.txt            # Зависимости проекта
├── README.md                   # Описание проекта
├── LICENSE                     # Лицензия
└── .gitignore                  # Исключения для репозитория

Основные сущности и агенты

Агент Interviewer

Роль: технический интервьюер
Файл: interviewer.py

  • Общается с кандидатом
  • Задаёт ему вопросы на основе решения от модуля Strategy
  • Не анализирует ответы и не принимает решений о найме

Агент Observer

Роль: аналитик ответов кандидата
Файл: observer.py

  • Оценивает релевантность и корректность ответа
  • Определяет вопрос и глубину погружения в тему
  • Управляет параметрами:
    • status - статус ответа (OK | WEAK | WRONG | OFFTOPIC | QUESTION_TO_COMPANY)
    • score - мера того, насколько успешно кандидат справился с вопросом
    • notes - массив замечаний для HiringManager

Модуль Strategy

Роль: управляющий логикой интервью
Файл: strategy.py

  • Получает вывод Observer
  • Решает, что делать дальше:
    • усложнить вопрос
    • упростить
    • сменить тему
    • ответить на вопрос кандидата
    • завершить интервью
  • Не анализирует ответы напрямую

Модуль состояния InterviewState

Роль: общее состояние интервью
Файл: interview_state.py

Хранит:

  • позицию и грейд кандидата
  • счётчики и метрики ответов
  • текущую тему и глубину
  • историю сообщений

Агент HiringManager

Роль: менеджер процесса найма (типа)
Файл: hiring_manager.py

  • Не участвует в диалоге
  • Анализирует только агрегированную сводку на основе логов
  • Выносит решение о найме
  • Формирует финальный фидбэк и roadmap для кандидата

Logger

Файл: logger.py
Выполняет логгирование на протяжении работы всего решения.
Формирует json-файл с логами

Visualizer

Файл: visualize.py
Streamlit-демка чтобы не смотреть сырой json с логами =)

Adapter

Файл: adapter.py
Приводит логи к нужному формату для проверки экспертами


Общий пайплайн системы

User
 ↓
Interviewer (вопрос)
 ↓
Observer (анализ ответа)
 ↓
Strategy (решение, что делать дальше)
 ↓
Interviewer (следующий шаг)
 ...
 ↓
Interview ends
 ↓
Summary Builder (код, без LLM)
 ↓
Hiring Manager (LLM)
 ↓
Final Feedback

About

Мультиагентная система, имитирующая проведение технического собеседования с кандидатом. Выполнено в рамках Мегашколы ИТМО 2026, направление "ИИ", трек "Multiagent Systems"

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages