Sobes.tech
Senior
22

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

Компании, где спрашивали
Сбербанк

Ответ от нейросети

sobes.tech AI

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

  1. Состояния:
  • Idle — ожидание новых данных или запроса
  • DataIngestion — получение и подготовка данных инцидентов
  • Preprocessing — очистка и нормализация данных
  • ParallelSearch — параллельный запуск поисков:
    • DocSearch — поиск по документам
    • SQLSearch — поиск по базе данных
  • MergeResults — объединение результатов поиска
  • Analysis — анализ объединённых данных, выявление закономерностей
  • AlertGeneration — генерация предупреждений или отчетов
  • Completed — завершение обработки
  1. Переходы:
  • IdleDataIngestion при поступлении новых данных
  • DataIngestionPreprocessing после загрузки
  • PreprocessingParallelSearch
  • В ParallelSearch одновременно запускаются DocSearch и SQLSearch
  • После завершения обеих поисков — переход в MergeResults
  • MergeResultsAnalysis
  • AnalysisAlertGeneration при обнаружении инцидентов
  • AlertGenerationCompleted
  • CompletedIdle
  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;
    }
}

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