Spaces:
Sleeping
Sleeping
| import truststore | |
| truststore.inject_into_ssl() | |
| import logging | |
| import os | |
| import json | |
| os.environ['SSL_CERT_FILE'] = "" | |
| os.environ['REQUESTS_CA_BUNDLE'] = "" | |
| os.environ['CURL_CA_BUNDLE'] = "" | |
| import time | |
| from dotenv import load_dotenv | |
| from src.planner import Planner | |
| from src.clarifier import Clarifier | |
| from src.splitter import Splitter | |
| from src.coordinator import Coordinator | |
| from src.reviewer import Reviewer | |
| # Load environment variables from .env file | |
| load_dotenv() | |
| HF_KEY = os.getenv("HF_KEY") | |
| logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') | |
| logger = logging.getLogger(__name__) | |
| CLARIFIER_MODEL = 'Qwen/Qwen2.5-7B-Instruct' | |
| PLANNER_MODEL = 'Qwen/Qwen2.5-7B-Instruct' | |
| SPLITTER_MODEL = 'Qwen/Qwen2.5-7B-Instruct' | |
| COORDINATOR_MODEL = 'Qwen/Qwen2.5-7B-Instruct' | |
| SUBAGENT_MODEL = 'Qwen/Qwen2.5-7B-Instruct' | |
| REVIEWER_MODEL = 'Qwen/Qwen2.5-7B-Instruct' | |
| if __name__ == "__main__": | |
| start_time = time.perf_counter() | |
| print("\n\033[93m--- Deep Research Agent ---\033[0m") | |
| initial_topic = input("Enter a research topic: ") | |
| # Clarify Topic | |
| clarifier = Clarifier(model_name=CLARIFIER_MODEL, hf_key=HF_KEY) | |
| final_topic = clarifier.clarify(topic=initial_topic) | |
| planner = Planner(model_name=PLANNER_MODEL, hf_key=HF_KEY) | |
| plan = planner.plan(topic=final_topic) | |
| # Save research plan | |
| os.makedirs("research_outputs", exist_ok=True) | |
| with open("research_outputs/research_plan.txt", "w", encoding="utf-8") as f: | |
| f.write(plan) | |
| logger.info("Research plan saved to research_outputs/research_plan.txt") | |
| splitter = Splitter(model_name=SPLITTER_MODEL, hf_key=HF_KEY) | |
| subtasks = splitter.split(plan) | |
| if not subtasks: | |
| logger.error("No subtasks generated. Exiting.") | |
| exit(1) | |
| # Save subtasks | |
| with open("research_outputs/subtasks.txt", "w", encoding="utf-8") as f: | |
| f.write(json.dumps(subtasks, indent=2)) | |
| logger.info("Subtasks saved to research_outputs/subtasks.txt") | |
| coordinator = Coordinator( | |
| model_name=COORDINATOR_MODEL, | |
| subagent_model_id=SUBAGENT_MODEL, | |
| hf_key=HF_KEY | |
| ) | |
| raw_report = coordinator.coordinate(user_query=final_topic, research_plan=plan, subtasks=subtasks) | |
| # Review Phase | |
| reviewer = Reviewer(model_name=REVIEWER_MODEL, hf_key=HF_KEY) | |
| final_report = reviewer.review(report=raw_report) | |
| # Save final report and PDF | |
| with open("research_outputs/final_report.md", "w", encoding="utf-8") as f: | |
| f.write(final_report) | |
| pdf_path = "research_outputs/final_report.pdf" | |
| reviewer.generate_pdf(final_report, pdf_path) | |
| logger.info(f"Final polished report and PDF generated in research_outputs/") | |
| print("\n\033[93m--- Final Polished Research Report ---\033[0m") | |
| print(final_report) | |
| print("\033[93m-----------------------------\033[0m") | |
| elapsed_time = time.perf_counter() - start_time | |
| print(f"\n\033[93m--- Research complete ({elapsed_time:.2f}s) ---\033[0m") | |
| logger.info(f"Research planning took {elapsed_time:.2f} seconds.") |