Задача на live coding: спроектируй граф состояний LangGraph для системы анализа инцидентов на промышленном оборудовании с параллельным поиском по документам и SQL

Для системы анализа инцидентов на промышленном оборудовании с параллельным поиском по документам и SQL можно спроектировать граф состояний LangGraph следующим образом:

Короткий ответ

Что ответить на собеседовании

Для системы анализа инцидентов на промышленном оборудовании с параллельным поиском по документам и SQL можно спроектировать граф состояний LangGraph следующим образом:

Подробный разбор

Ответ с пояснениями

Для системы анализа инцидентов на промышленном оборудовании с параллельным поиском по документам и SQL можно спроектировать граф состояний LangGraph следующим образом:

  1. Состояния:
  • Idle — ожидание новых данных или запроса

  • DataIngestion — получение и подготовка данных инцидентов

  • Preprocessing — очистка и нормализация данных

  • ParallelSearch — параллельный запуск поисков:

    • DocSearch — поиск по документам
    • SQLSearch — поиск по базе данных
  • MergeResults — объединение результатов поиска

  • Analysis — анализ объединённых данных, выявление закономерностей

  • AlertGeneration — генерация предупреждений или отчетов

  • Completed — завершение обработки

  1. Переходы:
  • Idle → DataIngestion при поступлении новых данных
  • DataIngestion → Preprocessing после загрузки
  • Preprocessing → ParallelSearch
  • В ParallelSearch одновременно запускаются DocSearch и SQLSearch
  • После завершения обеих поисков — переход в MergeResults
  • MergeResults → Analysis
  • Analysis → AlertGeneration при обнаружении инцидентов
  • AlertGeneration → Completed
  • Completed → Idle
  1. Пример кода на Java (упрощённый):
enum State { IDLE, DATA_INGESTION, PREPROCESSING, DOC_SEARCH, SQL_SEARCH, MERGE_RESULTS, ANALYSIS, ALERT_GENERATION, COMPLETED }

class LangGraph {
    private State currentState = State.IDLE;

    void onNewData() {
        currentState = State.DATA_INGESTION;
        // загрузка данных
        currentState = State.PREPROCESSING;
        // очистка
        currentState = State.DOC_SEARCH;
        // параллельно запускаем SQL_SEARCH
        // после завершения обоих
        currentState = State.MERGE_RESULTS;
        // объединение
        currentState = State.ANALYSIS;
        // анализ
        currentState = State.ALERT_GENERATION;
        // генерация
        currentState = State.COMPLETED;
        currentState = State.IDLE;
    }
}

Такой граф позволяет чётко контролировать состояние системы и параллельно выполнять поиск по разным источникам.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее