-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflow.py
More file actions
80 lines (63 loc) · 2.61 KB
/
Copy pathflow.py
File metadata and controls
80 lines (63 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from pocketflow import Flow
from nodes import (
ResearcherNode, TodoNode, SearcherNode,
EvidenceNode, ReporterNode, GenerateHTMLNode
)
from context import FileSystemContextManager
class OptimizedResearchFlow(Flow):
def __init__(self):
super().__init__()
self.context_manager = FileSystemContextManager()
self.build_flow()
def build_flow(self):
"""Build the optimized research flow."""
# Create nodes
researcher = ResearcherNode()
todo = TodoNode()
searcher = SearcherNode()
evidence = EvidenceNode()
reporter = ReporterNode()
generate_html = GenerateHTMLNode()
# Build flow connections
self.start(researcher)
researcher.next(todo, "todo")
# Todo node transitions
todo.next(searcher, "search")
todo.next(evidence, "evidence")
todo.next(reporter, "report")
todo.next(todo, "todo") # For task progression
# Searcher node transitions
searcher.next(todo, "todo")
# Evidence node transitions
evidence.next(reporter, "report")
# Reporter node transitions
reporter.next(generate_html, "generate_html")
# Generate HTML node transitions
generate_html.next(None, "done")
def prep(self, shared):
"""Prepare the flow with context manager."""
# Add context manager to shared
shared["context_manager"] = self.context_manager
shared["output_dir"] = self.context_manager.get_session_directory()
# Log start of research
self.context_manager.save_log(f"Starting research for query: {shared['question']}")
print(f"🚀 Starting optimized research flow...")
print(f"📁 Session directory: {shared['output_dir']}")
return shared
def post(self, shared, prep_res, exec_res):
"""Finalize the flow and clean up."""
# Log completion
self.context_manager.save_log("Research completed successfully")
# Save final state
final_state = {
"question": shared.get("question"),
"report_generated": "report" in shared,
"session_summary": self.context_manager.get_summary()
}
self.context_manager.save_session_state(final_state)
print(f"🎉 Research flow completed!")
print(f"📊 Session summary: {final_state}")
return exec_res
def create_optimized_flow():
"""Create an instance of the optimized research flow."""
return OptimizedResearchFlow()