mnds18/agentic-ts-forecasting-system
0
1"""2Agentic AI Time Series Forecasting System3Full Pipeline Orchestrator with Modular Agents and Live API4"""5 6import time7from flask import Flask, jsonify8from agents.requirements_agent import run_requirements_gathering9from agents.data_generation_agent import run_data_generation10from agents.data_scientist_agent import run_model_training11from agents.peer_review_agent import run_peer_review12from agents.documentation_agent import generate_report13from agents.project_manager_agent import generate_plan_and_gantt14from agents.presentation_agent import generate_slide_deck15from agents.orchestration_agent import log_event16import os17 18# Step tracker for orchestration log19orchestration_log = []20 21# Initialize Flask API22app = Flask(__name__)23 24@app.route("/forecast", methods=["GET"])25def serve_forecast():26 import pandas as pd27 forecast_path = "data/forecast.csv"28 if not os.path.exists(forecast_path):29 return jsonify({"error": "Forecast not found. Run pipeline first."}), 40430 df = pd.read_csv(forecast_path).tail(60)31 return jsonify(df.to_dict(orient="records"))32 33# Orchestration wrapper34 35def run_pipeline():36 steps = [37 ("Business Analyst", run_requirements_gathering),38 ("Data Generator", run_data_generation),39 ("Data Scientist", run_model_training),40 ("Peer Reviewer", run_peer_review),41 ("Documentation Generator", generate_report),42 ("Project Manager", generate_plan_and_gantt),43 ("Presentation Agent", generate_slide_deck),44 ]45 46 print("\n๐ Starting Agentic Time Series Forecasting Workflow")47 for step_name, step_fn in steps:48 start = time.time()49 print(f"\n๐น Running: {step_name} Agent")50 output = step_fn()51 end = time.time()52 53 log_event(54 agent_name=step_name,55 step=step_fn.__name__,56 start_time=start,57 end_time=end,58 output_summary=str(output)[:150] + ("..." if len(str(output)) > 150 else "")59 )60 61 print("\nโ
All agents completed successfully.")62 print("๐ Forecast ready. Report, slides, Gantt chart, and peer review are available in the outputs/ folder.")63 print("๐ API available at http://localhost:5001/forecast")64 65 66if __name__ == "__main__":67 run_pipeline()68 app.run(port=5001)69 