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)
Результаты
После запуска тестов вы узнаете:
- ✅ Работает ли стриминг вообще?
- ✅ Какой формат у событий?
- ✅ Какие режимы стриминга поддерживаются?
- ✅ Как правильно обрабатывать события?
Это поможет понять, почему события не доходят до фронтенда.