import json from .base_agent import BaseAgent from datetime import datetime from typing import Dict, Any, Tuple class AgentReportGenerator(BaseAgent): """ Agent pour générer un rapport à partir des informations collectées. """ def __init__(self, llm): super().__init__("AgentReportGenerator", llm, "report_generator") def executer(self, rapport_data: Dict, filename: str) -> Tuple[str, str]: timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") # Ajouter les métadonnées des LLM utilisés if "metadata" not in rapport_data: rapport_data["metadata"] = {} rapport_data["metadata"]["report_generator"] = { "model": getattr(self.llm, "modele", str(type(self.llm))), "configuration": self.config.to_dict() } # Sauvegarde JSON json_path = f"../reports/json_reports/{filename}_{timestamp}.json" with open(json_path, "w", encoding="utf-8") as f_json: json.dump(rapport_data, f_json, ensure_ascii=False, indent=4) # Sauvegarde Markdown md_path = f"../reports/markdown_reports/{filename}_{timestamp}.md" with open(md_path, "w", encoding="utf-8") as f_md: f_md.write(f"# Rapport {filename}\n\n") # Ajouter les métadonnées des modèles utilisés if "metadata" in rapport_data: f_md.write("## Modèles et paramètres utilisés\n\n") f_md.write("```json\n") f_md.write(json.dumps(rapport_data["metadata"], indent=2)) f_md.write("\n```\n\n") # Ajouter le contenu du rapport for key, value in rapport_data.items(): if key != "metadata": # Ignorer la section metadata déjà traitée f_md.write(f"## {key.capitalize()}\n{value}\n\n") self.ajouter_historique("generation_rapport", filename, "Rapport généré") return json_path, md_path