Docfile commited on
Commit
d9ee204
·
verified ·
1 Parent(s): 1d80589

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -10
app.py CHANGED
@@ -47,6 +47,17 @@ writer = Agent(
47
  allow_delegation=False
48
  )
49
 
 
 
 
 
 
 
 
 
 
 
 
50
  def extract_json_from_result(result_text: str) -> list:
51
  """Extrait le JSON des résultats de la crew."""
52
  try:
@@ -72,31 +83,81 @@ def flashcard_creation_task(research_task: Task) -> Task:
72
  return Task(
73
  description=dedent("""Transformer les informations fournies par le Chercheur
74
  en une série de flashcards au format JSON. Je veux une vingtaine de flashcard robuste et complet avec des questions et des réponses détailler. Chaque flashcard doit avoir une question
75
- d'un côté et une réponse concise de l'autre."""),
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  expected_output="Une liste de flashcards au format JSON.",
77
  agent=writer,
78
  context=[research_task]
79
  )
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  @app.route('/')
82
  def index():
83
  return render_template('index.html')
84
 
85
  @app.route('/generate', methods=['POST'])
86
- def generate_flashcards():
87
  topic = request.json.get('topic')
 
 
88
  if not topic:
89
  return jsonify({'error': 'Veuillez entrer un sujet.'}), 400
90
 
91
  try:
92
- # Création des tâches
93
  research = research_task(topic)
94
- flashcard_creation = flashcard_creation_task(research)
95
-
 
 
 
 
 
 
 
96
  # Création de la crew
97
  crew = Crew(
98
- agents=[researcher, writer],
99
- tasks=[research, flashcard_creation],
100
  process=Process.sequential,
101
  verbose=True
102
  )
@@ -107,13 +168,13 @@ def generate_flashcards():
107
  # Extraction du JSON depuis le dernier résultat de tâche
108
  if result.tasks_output and len(result.tasks_output) > 0:
109
  last_task_output = result.tasks_output[-1].raw
110
- flashcards = extract_json_from_result(last_task_output)
111
- return jsonify({'success': True, 'flashcards': flashcards})
112
  else:
113
  return jsonify({'error': 'Aucun résultat généré par la crew.'}), 500
114
 
115
  except Exception as e:
116
- return jsonify({'error': 'error'}), 500
117
 
118
  if __name__ == '__main__':
119
  app.run(debug=True)
 
47
  allow_delegation=False
48
  )
49
 
50
+ quiz_creator = Agent(
51
+ role='Créateur de Quiz',
52
+ goal=dedent("""Créer des questions de quiz à choix multiples basées sur les informations
53
+ fournies par le Chercheur."""),
54
+ backstory=dedent("""Un expert en évaluation pédagogique spécialisé dans la création
55
+ de questions de quiz engageantes et éducatives avec différents niveaux de difficulté."""),
56
+ llm=llm,
57
+ verbose=True,
58
+ allow_delegation=False
59
+ )
60
+
61
  def extract_json_from_result(result_text: str) -> list:
62
  """Extrait le JSON des résultats de la crew."""
63
  try:
 
83
  return Task(
84
  description=dedent("""Transformer les informations fournies par le Chercheur
85
  en une série de flashcards au format JSON. Je veux une vingtaine de flashcard robuste et complet avec des questions et des réponses détailler. Chaque flashcard doit avoir une question
86
+ d'un côté et une réponse concise de l'autre.
87
+
88
+ Format JSON attendu:
89
+ [
90
+ {
91
+ "question": "Question 1?",
92
+ "answer": "Réponse 1"
93
+ },
94
+ {
95
+ "question": "Question 2?",
96
+ "answer": "Réponse 2"
97
+ }
98
+ ]
99
+ """),
100
  expected_output="Une liste de flashcards au format JSON.",
101
  agent=writer,
102
  context=[research_task]
103
  )
104
 
105
+ def quiz_creation_task(research_task: Task) -> Task:
106
+ return Task(
107
+ description=dedent("""Transformer les informations fournies par le Chercheur
108
+ en une série de questions de quiz à choix multiples au format JSON.
109
+ Créer 10 questions de quiz avec quatre options de réponse pour chaque question,
110
+ dont une seule est correcte. Inclure une explication pour chaque réponse correcte.
111
+
112
+ Format JSON attendu:
113
+ [
114
+ {
115
+ "question": "Question 1?",
116
+ "options": ["Option A", "Option B", "Option C", "Option D"],
117
+ "correctAnswer": "Option A",
118
+ "explanation": "Explication de pourquoi cette réponse est correcte"
119
+ },
120
+ {
121
+ "question": "Question 2?",
122
+ "options": ["Option A", "Option B", "Option C", "Option D"],
123
+ "correctAnswer": "Option C",
124
+ "explanation": "Explication de pourquoi cette réponse est correcte"
125
+ }
126
+ ]
127
+ """),
128
+ expected_output="Une liste de questions de quiz au format JSON.",
129
+ agent=quiz_creator,
130
+ context=[research_task]
131
+ )
132
+
133
  @app.route('/')
134
  def index():
135
  return render_template('index.html')
136
 
137
  @app.route('/generate', methods=['POST'])
138
+ def generate_content():
139
  topic = request.json.get('topic')
140
+ content_type = request.json.get('type', 'flashcards') # 'flashcards' ou 'quiz'
141
+
142
  if not topic:
143
  return jsonify({'error': 'Veuillez entrer un sujet.'}), 400
144
 
145
  try:
146
+ # Création de la tâche de recherche
147
  research = research_task(topic)
148
+
149
+ # Sélection de la tâche en fonction du type demandé
150
+ if content_type == 'quiz':
151
+ creation_task = quiz_creation_task(research)
152
+ agents = [researcher, quiz_creator]
153
+ else: # Par défaut: flashcards
154
+ creation_task = flashcard_creation_task(research)
155
+ agents = [researcher, writer]
156
+
157
  # Création de la crew
158
  crew = Crew(
159
+ agents=agents,
160
+ tasks=[research, creation_task],
161
  process=Process.sequential,
162
  verbose=True
163
  )
 
168
  # Extraction du JSON depuis le dernier résultat de tâche
169
  if result.tasks_output and len(result.tasks_output) > 0:
170
  last_task_output = result.tasks_output[-1].raw
171
+ content_data = extract_json_from_result(last_task_output)
172
+ return jsonify({'success': True, content_type: content_data})
173
  else:
174
  return jsonify({'error': 'Aucun résultat généré par la crew.'}), 500
175
 
176
  except Exception as e:
177
+ return jsonify({'error': str(e)}), 500
178
 
179
  if __name__ == '__main__':
180
  app.run(debug=True)