Senior
22
Задача на live coding: спроектируй граф состояний LangGraph для системы анализа инцидентов на промышленном оборудовании с параллельным поиском по документам и SQL
Компании, где спрашивали
Сбербанк
Ответ от нейросети
sobes.tech AI
Для системы анализа инцидентов на промышленном оборудовании с параллельным поиском по документам и SQL можно спроектировать граф состояний LangGraph следующим образом:
- Состояния:
Idle— ожидание новых данных или запросаDataIngestion— получение и подготовка данных инцидентовPreprocessing— очистка и нормализация данныхParallelSearch— параллельный запуск поисков:DocSearch— поиск по документамSQLSearch— поиск по базе данных
MergeResults— объединение результатов поискаAnalysis— анализ объединённых данных, выявление закономерностейAlertGeneration— генерация предупреждений или отчетовCompleted— завершение обработки
- Переходы:
Idle→DataIngestionпри поступлении новых данныхDataIngestion→Preprocessingпосле загрузкиPreprocessing→ParallelSearch- В
ParallelSearchодновременно запускаютсяDocSearchиSQLSearch - После завершения обеих поисков — переход в
MergeResults MergeResults→AnalysisAnalysis→AlertGenerationпри обнаружении инцидентовAlertGeneration→CompletedCompleted→Idle
- Пример кода на 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;
}
}
Такой граф позволяет чётко контролировать состояние системы и параллельно выполнять поиск по разным источникам.