main.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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, "*.png")):
  11. os.remove(f)
  12. if __name__ == "__main__":
  13. inputs = {
  14. "messages" : [HumanMessage(content="Je veux un tableu excel qui resume : le nombre d'achat par chaque pays , nombre de vendre par chaque sales personne , et par produit , essai de les croiser pour bien analyser mon dataset ")] ,
  15. #messages": [HumanMessage(content="je veux voir par graphiques les produits les plus vendus en Belgique et par quel fournisseur ")] ,
  16. #"messages" : [HumanMessage(content = " 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 ")] ,
  17. #"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. ")],
  18. "current_df_path": "ventes_materiel_informatique.csv"
  19. }
  20. # On stocke les événements pour pouvoir récupérer les graphiques à la fin
  21. final_events = []
  22. for event in app.stream(inputs):
  23. final_events.append(event) # On garde une trace du dernier état
  24. for node, value in event.items():
  25. print(f"\n[Nœud : {node}]")
  26. if "messages" in value:
  27. last_msg = value["messages"][-1]
  28. content = last_msg.content if last_msg.content else f"Appel d'outil: {last_msg.tool_calls}"
  29. print(content)
  30. # --- Récupération des graphiques après le stream ---
  31. print("\n--- Analyse terminée : Récupération des visuels ---")
  32. current_plots = glob.glob(os.path.join(output_dir, "*.png"))
  33. if current_plots:
  34. print(f"Graphiques générés pour cette requête : {current_plots}")
  35. else:
  36. print("Aucun graphique n'a été généré.")
  37. import matplotlib
  38. matplotlib.use('Agg') # À placer AVANT d'importer pyplot
  39. import matplotlib.pyplot as plt