datacipen commited on
Commit
3fbdf02
·
verified ·
1 Parent(s): 6f16c17

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -39
app.py CHANGED
@@ -263,22 +263,39 @@ def classify_teachings(state: AgentState, num_bcc: str = "") -> AgentState:
263
 
264
  # Préparer le message pour le LLM
265
  messages = [
266
- SystemMessage(content=f"""Tu es un expert en sciences de l'éducation, chargé de classifier des enseignements académiques.
267
- Ta tâche est de classer chaque enseignement dans l'une des {num_bcc} catégories suivantes:
268
-
269
- {categories_info}
270
-
271
  Chaque enseignement doit être classé dans UNE SEULE catégorie la plus pertinente.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  Réponds UNIQUEMENT au format JSON avec la structure suivante:
273
- {{
274
- "Nom de la catégorie 1": [liste des enseignements classés dans cette catégorie],
275
- "Nom de la catégorie 2": [liste des enseignements classés dans cette catégorie],
276
- "Nom de la catégorie 3": [liste des enseignements classés dans cette catégorie],
277
- "Nom de la catégorie 4": [liste des enseignements classés dans cette catégorie],
 
278
  ...
279
- }}
280
-
281
- Assure-toi que TOUS les enseignements sont classés et qu'aucun n'est oublié.
282
  """),
283
  HumanMessage(content=f"Voici la liste des enseignements à classifier: {json.dumps(unique_teachings, ensure_ascii=False)}")
284
  ]
@@ -298,7 +315,7 @@ def classify_teachings(state: AgentState, num_bcc: str = "") -> AgentState:
298
 
299
  # Parser le JSON
300
  classified_teachings = json.loads(content)
301
-
302
  # Vérifier que toutes les catégories sont présentes
303
  category_names = [cat["nom"] for cat in categories]
304
  for cat_name in category_names:
@@ -556,17 +573,23 @@ def build_workflow(num_bcc,file,pathname) -> StateGraph:
556
  workflow.add_node("load_and_preprocess", lambda state: load_and_preprocess_csv(state, file))
557
  workflow.add_node("create_categories", lambda state: create_thematic_categories(state, num_bcc))
558
  workflow.add_node("classify_teachings", lambda state: classify_teachings(state, num_bcc))
559
- workflow.add_node("create_learning_situations", lambda state: create_learning_situations(state, pathname))
 
 
560
  #workflow.add_node("export_to_excel_1", lambda state: export_to_excel(state))
561
- workflow.add_node("create_academic_competencies", lambda state: create_academic_competencies(state, pathname))
 
 
562
  #workflow.add_node("export_to_excel_2", lambda state: export_to_excel(state, "_BCC"))
563
  #workflow.add_node("process_next_file", get_next_file)
564
 
565
  # Définir les transitions
566
  workflow.add_edge("load_and_preprocess", "create_categories")
567
  workflow.add_edge("create_categories", "classify_teachings")
568
- workflow.add_edge("classify_teachings", "create_learning_situations")
569
- workflow.add_edge("create_learning_situations", "create_academic_competencies")
 
 
570
  #workflow.add_edge("export_to_excel_1", "create_academic_competencies")
571
  #workflow.add_edge("create_academic_competencies", "export_to_excel_2")
572
 
@@ -623,6 +646,8 @@ def init_agent_state(current_url, num, pathname) -> AgentState:
623
  if key == "current_file":
624
  result += f"Traitement du fichier {taskInfo['current_file']} en cours...\n"
625
  if task == "classify_teachings":
 
 
626
  if key == "status":
627
  for key, value in taskInfo['classified_teachings'].items():
628
  result += f"\n\n-**Enseignement classé dans la catégorie '{key}'** : "
@@ -632,27 +657,27 @@ def init_agent_state(current_url, num, pathname) -> AgentState:
632
  if task == "create_categories":
633
  if key == "status":
634
  result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
635
- if task == "create_learning_situations":
636
- if key == "status":
637
- if taskInfo['learning_situations'].items():
638
- for key, value in taskInfo['learning_situations'].items():
639
- result += f"\n\n-**Situation d'apprentissage créée pour la catégorie '{key}'** : {value}\n"
640
- result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
641
- else:
642
- result += f"\n\nTraitement de la tâche : pas de situations d'apprentissage créées\n"
643
- if task == "create_academic_competencies":
644
- if key == "dataframe":
645
- df = taskInfo['dataframe']
646
- if key == "status":
647
- if taskInfo['academic_competencies'].items():
648
- for key, value in taskInfo['academic_competencies'].items():
649
- result += f"\n\n-**Compétence académique créée pour la catégorie '{key}'** : {value}\n"
650
- result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
651
- else:
652
- result += f"\n\nTraitement de la tâche : pas de BCC créés\n"
653
- if task == "export_to_excel_2":
654
- if key == "status":
655
- result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
656
 
657
  except Exception as e:
658
  print(f"Erreur lors de l'exécution du workflow: {e}")
 
263
 
264
  # Préparer le message pour le LLM
265
  messages = [
266
+ SystemMessage(content=f"""Tu es un expert en sciences de l'éducation, chargé de classifier des enseignements académiques, de créer des situations d'apprentissage puis de formuler de compétences académiques.
267
+
268
+ Tu es en capacité de comprendre et de traiter des processus pédagogiques complexes, en passant OBLIGATOIREMENT par les 3 tâches suivantes:
269
+
270
+ 1. Ta première tâche est de classer chaque enseignement dans l'une des {num_bcc} catégories suivantes : {categories_info}.
271
  Chaque enseignement doit être classé dans UNE SEULE catégorie la plus pertinente.
272
+ Assure-toi que TOUS les enseignements sont classés et qu'aucun n'est oublié.
273
+
274
+ 2. Ta deuxième tâche est de créer UNE situation d'apprentissage pour chaque catégorie, en intégrant les enseignements classés dans cette catégorie.
275
+ Pour chaque situation d'apprentissage :
276
+ - tu t'appuies sur la définition d'une situation d'apprentissage qui est un scénario pédagogique contextualisé qui place l'apprenant face à un défi concret nécessitant la mobilisation de savoirs, savoir-faire et savoir-être. Elle s'articule autour d'une problématique réelle, favorise l'interdisciplinarité et vise le développement de compétences transversales.
277
+ - tu appliques la méthode cohérente et détaillée qui : Intègre l'ensemble des enseignements de la catégorie fournie. Soit adaptée au niveau d'études supérieures. Comprenne un contexte, des objectifs, des activités et des modalités d'évaluation. Soit rédigée en 150-250 mots.
278
+ - Assure-toi qu'une situation d'apprentissage soit créée pour chaque catégorie et qu'aucune ne soit oubliée.
279
+ Tu Réponds en français avec un texte continu, bien structuré, sans titre ni puces.
280
+
281
+ 3. Ta troisième tâche est de formuler UNE compétence académique pour chaque catégorie, en lien avec la situation d'apprentissage créée.
282
+ Pour chaque compétence académique :
283
+ - tu t'appuies sur la définition d'une compétence académique qui est une capacité avérée à mobiliser des ressources (savoirs, savoir-faire, savoir-être) dans une famille de situations complexes, pour résoudre des problèmes ou réaliser des tâches. Elle est formulée avec un verbe d'action, un objet, un contexte et un niveau de performance attendu. Elle s'inscrit dans une taxonomie (comme celle de Bloom) et peut être évaluée à travers des indicateurs observables.
284
+ - tu prends comme exemple les formulations suivantes : "Analyser des problèmes complexes en mobilisant des approches multidisciplinaires pour proposer des solutions innovantes", "Concevoir et mettre en œuvre des projets de recherche en respectant les normes éthiques et méthodologiques du domaine", "Interpréter des données scientifiques pour prendre des décisions éclairées dans un contexte d'incertitude".
285
+ - tu utilises les niveaux taxonomiques de Bloom appropriés au niveau d'étude : Licence 1-2 (se concentrer sur "se rappeler", "comprendre", "appliquer"), Licence 3/BUT (privilégier "appliquer", "analyser"), Master (privilégier "analyser", "évaluer", "créer").
286
+ - tu appliques la méthode cohérente et détaillée qui : Synthétise l'ensemble des enseignements de la catégorie fournie. S'articule avec la situation d'apprentissage associée. Soit précise, mesurable et pertinente pour le domaine d'études. Comporte entre 15 et 25 mots.
287
+ - tu réponds avec une seule phrase complète, sans préambule ni explications.
288
+ - Assure-toi qu'une compétence académique soit formulée pour chaque catégorie et qu'aucune ne soit oubliée.
289
+
290
  Réponds UNIQUEMENT au format JSON avec la structure suivante:
291
+ [
292
+ {{
293
+ "catégorie": "Nom de la catégorie 1",
294
+ "situation": "Texte de la situation d'apprentissage associée à la catégorie 1 (150-250 mots)",
295
+ "compétence": "Texte de la compétence académique associée à la catégorie 1 (15-25 mots)"
296
+ }},
297
  ...
298
+ ]
 
 
299
  """),
300
  HumanMessage(content=f"Voici la liste des enseignements à classifier: {json.dumps(unique_teachings, ensure_ascii=False)}")
301
  ]
 
315
 
316
  # Parser le JSON
317
  classified_teachings = json.loads(content)
318
+ print(classified_teachings)
319
  # Vérifier que toutes les catégories sont présentes
320
  category_names = [cat["nom"] for cat in categories]
321
  for cat_name in category_names:
 
573
  workflow.add_node("load_and_preprocess", lambda state: load_and_preprocess_csv(state, file))
574
  workflow.add_node("create_categories", lambda state: create_thematic_categories(state, num_bcc))
575
  workflow.add_node("classify_teachings", lambda state: classify_teachings(state, num_bcc))
576
+
577
+ #workflow.add_node("create_learning_situations", lambda state: create_learning_situations(state, pathname))
578
+
579
  #workflow.add_node("export_to_excel_1", lambda state: export_to_excel(state))
580
+
581
+ #workflow.add_node("create_academic_competencies", lambda state: create_academic_competencies(state, pathname))
582
+
583
  #workflow.add_node("export_to_excel_2", lambda state: export_to_excel(state, "_BCC"))
584
  #workflow.add_node("process_next_file", get_next_file)
585
 
586
  # Définir les transitions
587
  workflow.add_edge("load_and_preprocess", "create_categories")
588
  workflow.add_edge("create_categories", "classify_teachings")
589
+
590
+ #workflow.add_edge("classify_teachings", "create_learning_situations")
591
+ #workflow.add_edge("create_learning_situations", "create_academic_competencies")
592
+
593
  #workflow.add_edge("export_to_excel_1", "create_academic_competencies")
594
  #workflow.add_edge("create_academic_competencies", "export_to_excel_2")
595
 
 
646
  if key == "current_file":
647
  result += f"Traitement du fichier {taskInfo['current_file']} en cours...\n"
648
  if task == "classify_teachings":
649
+ if key == "dataframe":
650
+ df = taskInfo['dataframe']
651
  if key == "status":
652
  for key, value in taskInfo['classified_teachings'].items():
653
  result += f"\n\n-**Enseignement classé dans la catégorie '{key}'** : "
 
657
  if task == "create_categories":
658
  if key == "status":
659
  result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
660
+ #if task == "create_learning_situations":
661
+ # if key == "status":
662
+ # if taskInfo['learning_situations'].items():
663
+ # for key, value in taskInfo['learning_situations'].items():
664
+ # result += f"\n\n-**Situation d'apprentissage créée pour la catégorie '{key}'** : {value}\n"
665
+ # result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
666
+ # else:
667
+ # result += f"\n\nTraitement de la tâche : pas de situations d'apprentissage créées\n"
668
+ #if task == "create_academic_competencies":
669
+ # if key == "dataframe":
670
+ # df = taskInfo['dataframe']
671
+ # if key == "status":
672
+ # if taskInfo['academic_competencies'].items():
673
+ # for key, value in taskInfo['academic_competencies'].items():
674
+ # result += f"\n\n-**Compétence académique créée pour la catégorie '{key}'** : {value}\n"
675
+ # result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
676
+ # else:
677
+ # result += f"\n\nTraitement de la tâche : pas de BCC créés\n"
678
+ #if task == "export_to_excel_2":
679
+ # if key == "status":
680
+ # result += f"\n\nTraitement de la tâche : {taskInfo['status']}...\n"
681
 
682
  except Exception as e:
683
  print(f"Erreur lors de l'exécution du workflow: {e}")