fix: Correct LangGraph event handling - events are tuples not dicts + add test scripts
This commit is contained in:
@@ -555,28 +555,44 @@ class ReviewerAgent:
|
||||
stream_mode=["updates"]
|
||||
):
|
||||
event_count += 1
|
||||
print(f"📨 Event #{event_count} received from graph: {type(event)}")
|
||||
print(f" Event content: {event if not isinstance(event, dict) or len(str(event)) < 200 else 'dict with keys: ' + str(list(event.keys()))}")
|
||||
print(f"📨 Event #{event_count} received from graph")
|
||||
print(f" Type: {type(event)}")
|
||||
|
||||
# LangGraph returns events as tuples: (event_type, data)
|
||||
if isinstance(event, tuple) and len(event) >= 2:
|
||||
event_type, event_data = event[0], event[1]
|
||||
print(f" Event type: {event_type}")
|
||||
print(f" Event data type: {type(event_data)}")
|
||||
|
||||
# Handle 'updates' events (node updates)
|
||||
if event_type == 'updates' and isinstance(event_data, dict):
|
||||
for node_name, node_data in event_data.items():
|
||||
print(f" 🔔 Node update: {node_name}")
|
||||
|
||||
if on_event:
|
||||
print(f" 📤 Sending event to callback for node: {node_name}")
|
||||
await on_event({
|
||||
"type": "agent_step",
|
||||
"step": node_name,
|
||||
"message": f"Шаг: {node_name}"
|
||||
})
|
||||
|
||||
# Store final state
|
||||
if isinstance(node_data, dict):
|
||||
final_state = node_data
|
||||
|
||||
# Handle 'values' events (state snapshots)
|
||||
elif event_type == 'values':
|
||||
print(f" 📊 State snapshot received")
|
||||
if isinstance(event_data, dict):
|
||||
final_state = event_data
|
||||
|
||||
# Handle 'debug' events
|
||||
elif event_type == 'debug':
|
||||
print(f" 🐛 Debug event: {event_data.get('type') if isinstance(event_data, dict) else 'unknown'}")
|
||||
|
||||
# Handle different event types
|
||||
if isinstance(event, dict):
|
||||
# Node updates
|
||||
for node_name, node_data in event.items():
|
||||
print(f" 🔔 Node update: {node_name}")
|
||||
|
||||
if on_event:
|
||||
print(f" 📤 Sending event to callback for node: {node_name}")
|
||||
await on_event({
|
||||
"type": "agent_step",
|
||||
"step": node_name,
|
||||
"data": node_data if not isinstance(node_data, dict) else {"status": "processing"}
|
||||
})
|
||||
|
||||
# Store final state
|
||||
if isinstance(node_data, dict):
|
||||
final_state = node_data
|
||||
else:
|
||||
print(f" ⚠️ Unexpected event type: {type(event)}")
|
||||
print(f" ⚠️ Unexpected event format: {event}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error in graph streaming: {e}")
|
||||
|
||||
Reference in New Issue
Block a user