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