Sobes.tech
Senior

Exercice de codage en direct : concevez un graphe d'états LangGraph pour un système d'analyse d'incidents sur des équipements industriels avec recherche parallèle dans des documents et SQL

sobes.tech IA

Réponse de l'IA

Для системы анализа инцидентов на промышленном оборудовании с параллельным поиском по документам и 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;
    }
}

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