ancien version.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """# 3. Définition des Nœuds
  2. def agent_analyseur(state: AgentState):
  3. # --- PHASE D'INSPECTION AUTOMATIQUE ---
  4. # On récupère le chemin du fichier depuis le state
  5. file_path = state.get("current_df_path")
  6. inspection_info = ""
  7. if file_path and os.path.exists(file_path):
  8. try:
  9. # Lecture des 5 premières lignes pour comprendre la structure
  10. df_temp = pd.read_csv(file_path, nrows=5) if file_path.endswith('.csv') else pd.read_excel(file_path, nrows=5)
  11. columns_list = df_temp.columns.tolist()
  12. sample_data = df_temp.head(2).to_string()
  13. inspection_info = f"\n\n### DONNÉES RÉELLES DU FICHIER :\n- Colonnes détectées : {columns_list}\n- Aperçu des données :\n{sample_data}"
  14. except Exception as e:
  15. inspection_info = f"\n\n⚠️ Erreur lors de l'inspection du fichier : {e}"
  16. # --- CONSTRUCTION DU PROMPT AVEC LES DONNÉES RÉELLES ---
  17. prompt = (
  18. "Tu es l'Analyseur de Dataltist. Réponds exclusivement au format JSON.\n"
  19. "Définis les étapes logiques de l'analyse sans écrire de code.\n"
  20. "### RÈGLES D'OR :\n"
  21. "1. PAS DE CODE : Ne génère JAMAIS de blocs de code Python (```python). C'est le rôle de l'Exécuteur.\n"
  22. "2. PLAN D'ACTION : Liste les étapes logiques en utilisant les noms de colonnes exacts.\n"
  23. "3. INSPECTION : Base-toi uniquement sur les colonnes détectées ci-dessous.\n"
  24. "4. CONCISION : Sois une tour de contrôle, donne des ordres clairs et précis.\n"
  25. f"{inspection_info}"
  26. )
  27. config_analyseur = {
  28. "callbacks": [langfuse_handler],
  29. "metadata": {"agent_name": "Analyseur"},
  30. "tags": ["Dataltist", "Planning"]
  31. }
  32. msg = [SystemMessage(content=prompt)] + state["messages"]
  33. response = local_llm.invoke(msg , config=config_analyseur)
  34. # On retourne la réponse de l'IA qui contient maintenant le plan basé sur les vraies colonnes
  35. return {"messages": [response]}
  36. ⚠️ IMPORTANT :
  37. - Ta réponse doit commencer par { et finir par }
  38. - Aucun texte avant ou après
  39. - Aucun markdown (```json interdit)
  40. """