main.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from langchain_core.messages import HumanMessage
  2. from workflow_Agent import app
  3. import os
  4. import glob
  5. # --- Préparation de l'environnement ---
  6. output_dir = "outputs"
  7. if not os.path.exists(output_dir):
  8. os.makedirs(output_dir)
  9. # Nettoyage des anciens graphiques pour ne pas mélanger les analyses
  10. for f in glob.glob(os.path.join(output_dir, "*")):
  11. os.remove(f)
  12. if __name__ == "__main__":
  13. inputs = {
  14. #"messages" : [HumanMessage("Je veux un fichier excel qui stock les equiquipe restant acteuellemet en champions league (huitiemme final 2026) , avec leur dernier resultats et le prochain adversaire et des infos supplimentaire en relation avec se sujet ")],
  15. #"messages" : [HumanMessage("Je veux un fichier excel ou y'a un tableau qui croiss les ventes et les pays , a ces coté ( a l'interieur de meme fichier ) un graphique pour visualier ca ")],
  16. #"messages" : [HumanMessage(content="Génère un fichier Excel 'outputs/Rapport_Analytique.xlsx' via xlsxwriter. Pleusieures feuille sur tt les teste statistiques possible , voicie 4 feuilles premiere : 'Synthèse Pays', 'Performance Vendeurs', 'Analyse Produits' et 'Croisement Global'. Pour chaque feuille, insère un graphique natif Excel (add_chart) illustrant les données (Barres pour pays/vendeurs, Pie pour produits). en total je veux 10 feulles , le dernier graphique de la dernier feuille doit etre un camambert ")] ,
  17. "messages": [HumanMessage(content="je veux voir par graphiques les produits les plus vendus en Belgique et par quel fournisseur ")] ,
  18. #"messages" : [HumanMessage(content = " je veux un fichier excel pour faire les diffirentes stats sur les sales , et Je veux savoir qui les meilleurs sales personne dans ma campany , egalement les produit et categorie les mieux vendu , tu me fais des graphs beau avec seaborn egalement pour me montrer ca , et un graph ou tu les crois pour voir le produit le plus vendu par categorie par les top vendeurs ")] ,
  19. #"messages": [HumanMessage(content="Cherche la tandance de croissance du marché des Ecrans gaming ( ecran dans le dataset ) pour 2026 , puis calucle une Demande_Prevue dans mon dataset (Formule : Stock actuel * (1 + %croissance_trouvé)) , Identifie si le stock actuel d'Ecrans est suffisant ou s'il y a un risque de rupture , Génère un graphique de type 'Gauge' ou un 'Bar chart' comparant le Stock Actuel vs Demande Prévue. ")],
  20. "current_df_path": "ventes_materiel_informatique.csv"
  21. }
  22. # On stocke les événements pour pouvoir récupérer les graphiques à la fin
  23. final_events = []
  24. for event in app.stream(inputs):
  25. final_events.append(event) # On garde une trace du dernier état
  26. for node, value in event.items():
  27. print(f"\n[Nœud : {node}]")
  28. if "messages" in value:
  29. last_msg = value["messages"][-1]
  30. content = last_msg.content if last_msg.content else f"Appel d'outil: {last_msg.tool_calls}"
  31. print(content)
  32. # --- Récupération des graphiques après le stream ---
  33. print("\n--- Analyse terminée : Récupération des visuels ---")
  34. current_plots = glob.glob(os.path.join(output_dir, "*.png"))
  35. if current_plots:
  36. print(f"Graphiques générés pour cette requête : {current_plots}")
  37. else:
  38. print("Aucun graphique n'a été généré.")