# Тестирование LangGraph Streaming Эти скрипты помогут проверить, как работает стриминг событий из LangGraph. ## Скрипты ### 1. `test_simple_graph.py` - Простой тест (БЕЗ БД) **Рекомендуется запустить ПЕРВЫМ** для понимания как работает стриминг. Тестирует простой граф с 3 нодами без реального review. ```bash # Активировать venv cd backend source venv/Scripts/activate # Windows Git Bash # или source venv/bin/activate # Linux/Mac # Запустить python ../test_simple_graph.py ``` **Что тестирует:** - ✅ `stream_mode=['updates']` - обновления нод - ✅ `stream_mode=['messages']` - сообщения (LLM calls) - ✅ `stream_mode=['updates', 'messages']` - оба режима - ✅ `stream_mode=['values']` - значения состояния - ✅ `stream_mode=['debug']` - режим отладки - ✅ Callback обработка событий **Ожидаемый результат:** Должны появиться события для каждой ноды (node_1, node_2, node_3). --- ### 2. `test_langgraph_events.py` - Полный тест (С БД) Тестирует реальный ReviewerAgent с настоящими данными из БД. ⚠️ **Требует:** - Работающую БД с данными - Существующий Review ID, PR Number, Repository ID - Настроенный `.env` файл ```bash # Активировать venv cd backend source venv/Scripts/activate # Windows # или source venv/bin/activate # Linux/Mac # Запустить python ../test_langgraph_events.py ``` **Перед запуском:** Отредактируйте в файле `test_langgraph_events.py`: ```python TEST_REVIEW_ID = 1 # ID существующего review TEST_PR_NUMBER = 5 # Номер PR TEST_REPOSITORY_ID = 1 # ID репозитория ``` **Что тестирует:** - ✅ Полный цикл review с callback - ✅ RAW стриминг напрямую из графа - ✅ Все режимы: `updates`, `messages`, `updates + messages` --- ## Запуск локально (быстрый старт) ### Шаг 1: Простой тест ```bash cd backend source venv/Scripts/activate python ../test_simple_graph.py ``` Смотрите вывод - должны быть события от каждой ноды. ### Шаг 2: Проверка формата событий Обратите внимание на **тип** и **структуру** событий: ``` 📨 Event #1 Type: Keys: ['node_1'] Content: {'node_1': {...}} ``` или ``` 📨 Event #1 Type: Tuple[0]: 'messages' Tuple[1]: [AIMessage(...)] ``` ### Шаг 3: Полный тест (если нужно) Отредактируйте параметры в `test_langgraph_events.py` и запустите: ```bash python ../test_langgraph_events.py ``` --- ## Что искать в выводе ### ✅ ХОРОШО: ``` 📨 Event #1 Type: Content: {'node_1': {...}} 📨 Event #2 Type: Content: {'node_2': {...}} ``` **События приходят!** Граф работает. ### ❌ ПЛОХО: ``` ✅ Получено событий: 0 ``` **События НЕ приходят!** Проблема с графом или версией LangGraph. --- ## Отладка Если события не приходят: 1. **Проверьте версию LangGraph:** ```bash pip show langgraph ``` Должна быть >= 0.1.0 2. **Проверьте, что граф компилируется:** ```python graph = workflow.compile() print(graph) # Должен вывести информацию о графе ``` 3. **Попробуйте `ainvoke` вместо `astream`:** ```python result = await graph.ainvoke(initial_state) print(result) # Должен вернуть финальное состояние ``` 4. **Проверьте логи:** Включите DEBUG логирование: ```python import logging logging.basicConfig(level=logging.DEBUG) ``` --- ## Результаты После запуска тестов вы узнаете: 1. ✅ **Работает ли стриминг вообще?** 2. ✅ **Какой формат у событий?** 3. ✅ **Какие режимы стриминга поддерживаются?** 4. ✅ **Как правильно обрабатывать события?** Это поможет понять, почему события не доходят до фронтенда.