ResearchPilot-AI / main.py
Visal9252's picture
Initial commit: ResearchPilot AI - Autonomous Multi-Agent Research System (VL)
f9cd3c3
Raw
History Blame Contribute Delete
2.4 kB
"""
ResearchPilot AI — Terminal Test Runner
Run: python main.py
Tests the full pipeline without Streamlit.
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from dotenv import load_dotenv
load_dotenv()
from graph.graph_builder import graph
TEST_QUERY = "Impact of artificial intelligence on healthcare in 2025"
def main():
print("=" * 60)
print(" ResearchPilot AI")
print(f" Query: {TEST_QUERY}")
print("=" * 60)
initial_state = {
"query": TEST_QUERY,
"todos": [],
"research_plan": "",
"active_agents": [],
"topic_domain": "general",
"virtual_files": {},
"structured_data": {},
"citations": [],
"chart_json": [],
"thumbnail_svg": None,
"final_report": "",
"quality_score": 0.0,
"retry_count": 0,
"agent_logs": [],
"agent_timings": {},
"generate_thumbnail": True,
}
final_state = {}
for update in graph.stream(initial_state):
node_name = list(update.keys())[0]
node_data = update[node_name]
print(f"\n[NODE: {node_name.upper()}]")
logs = node_data.get("agent_logs", [])
for log in logs[-3:]: # show last 3 logs per node
print(f" {log}")
for k, v in node_data.items():
if v is not None:
final_state[k] = v
print("\n" + "=" * 60)
print(f" Quality Score : {final_state.get('quality_score', 0):.1f}/10")
print(f" Active Agents : {final_state.get('active_agents', [])}")
print(f" Domain : {final_state.get('topic_domain', 'general')}")
print(f" Charts : {len(final_state.get('chart_json', []))}")
print(f" Citations : {len(final_state.get('citations', []))}")
print("=" * 60)
report = final_state.get("final_report", "")
if report:
with open("output_report_v2.md", "w", encoding="utf-8") as f:
f.write(report)
print("\n✅ Report saved to output_report_v2.md")
timings = final_state.get("agent_timings", {})
if timings:
print("\n⏱ Timings:")
for k, v in timings.items():
print(f" {k:20s} {v:.2f}s")
print(f" {'TOTAL':20s} {sum(timings.values()):.2f}s")
if __name__ == "__main__":
main()