Spaces:
Running
Running
File size: 5,489 Bytes
7755c1f 7f4ad42 7755c1f 7f4ad42 7755c1f 7f4ad42 7755c1f b7f4801 7755c1f 1e9998c 7755c1f 1e9998c 7755c1f ba1ef6a 7755c1f 7f4ad42 7755c1f 0b9d6a6 7755c1f 0b9d6a6 7f4ad42 0b9d6a6 7f4ad42 0b9d6a6 7f4ad42 7755c1f 7f4ad42 0b9d6a6 7755c1f 7f4ad42 7755c1f 0b9d6a6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
from flask import Flask, render_template, request, jsonify
import google.generativeai as genai
from google.generativeai import types
import os
from PIL import Image
import io
app = Flask(__name__)
# Configuration de l'API Gemini
token = os.environ.get("TOKEN")
genai.configure(api_key=token)
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"},
]
# Choose the Gemini model
model = genai.GenerativeModel(
model_name="gemini-2.0-flash",
generation_config=generation_config,
safety_settings=safety_settings
)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/api/francais', methods=['POST'])
def gpt_francais():
"""Handles French questions."""
french_prompt = request.form.get('sujet', '').strip()
choix = request.form.get('choix', '').strip()
style = request.form.get('style', '').strip()
if not french_prompt:
return jsonify({"output": "Veuillez saisir un thème."}), 400
if choix == "discuter":
prompt = f""" Je veux faire mon travail de français de niveau lycée sous la forme d'un travail argumentatif.
La question du travail est la suivante : "{french_prompt}". Tu devras discuter ce thème.
tu utiliseras la méthodologie suivante :
# INTRODUCTION:
- Approche par constat
- Problématique
- Annonce du plan
# DÉVELOPPEMENT:
- Introduction partielle (énonce la thèse)
- Argument 1:
* Explications
* Illustration (exemple + explication)
- Argument 2:
* Explications
* Illustration (exemple + explication)
- Argument 3:
* Explications
* Illustration (exemple + explication)
# phrase de Transiton vers la deuxieme partie :
- Introduction partielle (énonce l'antithèse)
- Argument 1:
* Explications
* Illustration (exemple + explication)
- Argument 2:
* Explications
* Illustration (exemple + explication)
- Argument 3:
* Explications
* Illustration (exemple + explication)
#Conclusion
* Bilan
* Ouverture du sujet (sous forme de phrase interrogative )
Je veux que tu utilises un style d'écriture {style}."""
else:
prompt = f"""Je veux faire mon travail de français de niveau lycé sous la forme d'un travail argumentatif.
La question du travail est la suivante : "{french_prompt}". Tu devras {choix} ce thème.
tu utiliseras la méthodologie suivante :
# INTRODUCTION:
- Approche par constat
- Problématique
- Annonce du plan
# DÉVELOPPEMENT:
- Phrase chapeau (énonce la thèse)
- Argument 1:
* Explications
* Illustration (exemple + explication)
- Argument 2:
* Explications
* Illustration (exemple + explication)
- Argument 3:
* Explications
* Illustration (exemple + explication)
#Conclusion
* Bilan (thèse + arguments1 + arguments2+arguments3)
* Ouverture du sujet ( sous forme de phrase interrogative )
Je veux que tu utilises un style d'écriture {style}."""
try:
response = model.generate_content(prompt)
return jsonify({"output": response.text}), 200
except Exception as e:
return jsonify({"output": f"Erreur lors de la génération : {str(e)}"}), 500
@app.route('/api/etude-texte', methods=['POST'])
def gpt_francais_cc():
"""Handles text analysis for French with multiple images."""
if 'images' not in request.files:
return jsonify({"output": "Aucune image n'a été téléchargée."}), 400
images = request.files.getlist('images')
if not images:
return jsonify({"output": "Aucune image selectionnée."}), 400
pre_prompt = "Traite entièrement devoir."
# Préparer les images pour l'API Gemini
contents = [pre_prompt]
for image in images:
try:
# Lire l'image avec PIL
img_bytes = image.read()
img = Image.open(io.BytesIO(img_bytes))
# Convertir en format compatible avec Gemini
# L'image PIL peut être directement utilisée avec l'API Gemini
contents.append(img)
except Exception as e:
return jsonify({
"output": f"Erreur lors du traitement de l'image {image.filename}: {str(e)}"
}), 500
try:
# Générer le contenu avec toutes les images
response = model.generate_content(contents)
return jsonify({"output": response.text}), 200
except Exception as e:
return jsonify({
"output": f"Erreur lors de l'analyse des images : {str(e)}"
}), 500
if __name__ == '__main__':
app.run(debug=True) |