Sobes.tech
Senior

Live coding taak: ontwerp een LangGraph toestandsdiagram voor een systeem voor incidentanalyse op industriële apparatuur met parallel zoeken in documenten en SQL

sobes.tech AI

Antwoord van 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;
    }
}

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