Spaces:
Build error
Build error
| from flask import Flask, request, render_template, jsonify | |
| import PIL.Image | |
| import google.generativeai as genai | |
| import os | |
| from tempfile import NamedTemporaryFile | |
| app = Flask(__name__) | |
| # Configuration de Gemini | |
| generation_config = { | |
| "temperature": 1, | |
| "max_output_tokens": 8192, | |
| } | |
| safety_settings = [ | |
| { | |
| "category": "HARM_CATEGORY_HARASSMENT", | |
| "threshold": "BLOCK_NONE" | |
| }, | |
| { | |
| "category": "HARM_CATEGORY_HATE_SPEECH", | |
| "threshold": "BLOCK_NONE" | |
| }, | |
| { | |
| "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", | |
| "threshold": "BLOCK_NONE" | |
| }, | |
| { | |
| "category": "HARM_CATEGORY_DANGEROUS_CONTENT", | |
| "threshold": "BLOCK_NONE" | |
| }, | |
| ] | |
| GOOGLE_API_KEY = os.environ.get("TOKEN") | |
| genai.configure(api_key=GOOGLE_API_KEY) | |
| def index(): | |
| return render_template('histoire.html') | |
| def rediger_section_histoire(theme, point, contexte_precedent=""): | |
| """Génère une section de dissertation d'histoire.""" | |
| prompt = f""" | |
| Rédige une section détaillée pour une dissertation d'histoire sur le thème "{theme}". | |
| Point à traiter: {point} | |
| Structure à suivre: | |
| 1. Phrase chapeau introduisant l'idée principale | |
| 2. Trois arguments développés: | |
| - Argument + Explication détaillée + Exemple historique précis | |
| - Utiliser des dates et des personnages historiques spécifiques | |
| 3. Phrase de transition vers le point suivant | |
| Format: | |
| - Utilise "## " pour le titre principal | |
| - Utilise "### " pour les sous-parties | |
| - Mets en **gras** les dates et personnages importants | |
| - Utilise des listes numérotées pour les arguments | |
| - Ajoute des citations historiques pertinentes avec ">" | |
| Contexte précédent de la dissertation: {contexte_precedent} | |
| """ | |
| model = genai.GenerativeModel('gemini-1.5-flash') | |
| chat = model.start_chat() | |
| response = chat.send_message(prompt) | |
| return response.text, chat.history | |
| def rediger_section_geographie(theme, point, contexte_precedent=""): | |
| """Génère une section de dissertation de géographie.""" | |
| prompt = f""" | |
| Rédige une section détaillée pour une dissertation de géographie sur le thème "{theme}". | |
| Point à traiter: {point} | |
| Structure à suivre: | |
| 1. Phrase chapeau présentant l'enjeu géographique | |
| 2. Trois aspects à développer: | |
| - Analyse spatiale + Exemple territorial concret + Données chiffrées | |
| - Utiliser des échelles d'analyse variées (locale, régionale, mondiale) | |
| 3. Phrase de transition | |
| Format: | |
| - Utilise "## " pour le titre principal | |
| - Utilise "### " pour les sous-parties | |
| - Mets en **gras** les concepts géographiques clés | |
| - Utilise des listes à puces pour les exemples territoriaux | |
| - Ajoute des données statistiques importantes dans des blocs "`" | |
| Contexte précédent de la dissertation: {contexte_precedent} | |
| """ | |
| model = genai.GenerativeModel('gemini-1.5-flash') | |
| chat = model.start_chat() | |
| response = chat.send_message(prompt) | |
| return response.text, chat.history | |
| def generer_introduction(sujet, type_sujet="histoire"): | |
| """Génère l'introduction de la dissertation.""" | |
| prompt = f""" | |
| Rédige une introduction structurée pour une dissertation de {type_sujet} sur le sujet: | |
| "{sujet}" | |
| Structure: | |
| 1. Accroche (définition ou contextualisation) | |
| 2. Problématique claire | |
| 3. Annonce du plan | |
| Format en Markdown avec paragraphes distincts. | |
| """ | |
| model = genai.GenerativeModel('gemini-1.5-flash') | |
| response = model.generate_content(prompt) | |
| return response.text | |
| def generer_conclusion(sujet, contenu, type_sujet="histoire"): | |
| """Génère la conclusion de la dissertation.""" | |
| prompt = f""" | |
| À partir de cette dissertation de {type_sujet} sur "{sujet}", | |
| rédige une conclusion qui: | |
| 1. Synthétise les points principaux | |
| 2. Répond à la problématique | |
| 3. Propose une ouverture pertinente | |
| Contenu de la dissertation: | |
| {contenu} | |
| """ | |
| model = genai.GenerativeModel('gemini-1.5-flash') | |
| response = model.generate_content(prompt) | |
| return response.text | |
| def submit_histoire(): | |
| # Récupération des données | |
| sujet = request.form.get('sujet-histoire', '').strip() | |
| points = [ | |
| request.form.get('point1-histoire', '').strip(), | |
| request.form.get('point2-histoire', '').strip(), | |
| request.form.get('point3-histoire', '').strip() | |
| ] | |
| if not sujet or not all(points): | |
| return jsonify({"error": "Tous les champs sont obligatoires"}), 400 | |
| try: | |
| # Génération de l'introduction | |
| dissertation = generer_introduction(sujet, "histoire") | |
| dissertation += "\n\n" | |
| # Génération du développement | |
| contexte = dissertation | |
| for point in points: | |
| section_texte, _ = rediger_section_histoire(sujet, point, contexte) | |
| dissertation += section_texte + "\n\n" | |
| contexte = dissertation | |
| # Génération de la conclusion | |
| dissertation += generer_conclusion(sujet, dissertation, "histoire") | |
| return jsonify({"output": dissertation}), 200 | |
| except Exception as e: | |
| return jsonify({"error": str(e)}), 500 | |
| def submit_geographie(): | |
| # Récupération des données | |
| sujet = request.form.get('sujet-geographie', '').strip() | |
| points = [ | |
| request.form.get('point1-geographie', '').strip(), | |
| request.form.get('point2-geographie', '').strip(), | |
| request.form.get('point3-geographie', '').strip() | |
| ] | |
| if not sujet or not all(points): | |
| return jsonify({"error": "Tous les champs sont obligatoires"}), 400 | |
| try: | |
| # Génération de l'introduction | |
| dissertation = generer_introduction(sujet, "géographie") | |
| dissertation += "\n\n" | |
| # Génération du développement | |
| contexte = dissertation | |
| for point in points: | |
| section_texte, _ = rediger_section_geographie(sujet, point, contexte) | |
| dissertation += section_texte + "\n\n" | |
| contexte = dissertation | |
| # Génération de la conclusion | |
| dissertation += generer_conclusion(sujet, dissertation, "géographie") | |
| return jsonify({"output": dissertation}), 200 | |
| except Exception as e: | |
| return jsonify({"error": str(e)}), 500 |