Update app.py
Browse files
app.py
CHANGED
@@ -12,10 +12,10 @@ app = Flask(__name__)
|
|
12 |
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB max file size
|
13 |
app.config['UPLOAD_FOLDER'] = 'uploads'
|
14 |
|
15 |
-
#
|
16 |
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
|
17 |
|
18 |
-
#
|
19 |
GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')
|
20 |
genai.configure(api_key=GOOGLE_API_KEY)
|
21 |
|
@@ -26,28 +26,20 @@ safety_settings = [
|
|
26 |
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
|
27 |
]
|
28 |
|
29 |
-
|
30 |
-
|
31 |
PROMPT_TEXT = """
|
32 |
-
|
33 |
-
traite ce texte philosophie en respectant ca :
|
34 |
|
35 |
Introduction :
|
36 |
-
Dans son extrait
|
37 |
-
Développement :
|
38 |
-
Pour mener à bien sa thèse, ………… (Nom de l'auteur) structure son argumentaire en deux principaux mouvements, à savoir : dans le premier « Premier mot (...) dernier mot », il traite de ………… (Idée du mouvement). Et dans le second « Premier mot (...) dernier mot », il parle de (Idée du mouvement).
|
39 |
-
Alinéa Pour l'auteur, (Explication détaillé de l'idée du mouvement)
|
40 |
-
Alinéa Plus loin,(Explication détaillé de l'idée du mouvement)
|
41 |
-
• 1 ligne
|
42 |
-
Au regard de ce qui précède, nous convenons avec l'auteur que………… (Idée de la thèse). Cependant, (Idée de la nuance prise dans l'introduction) ?
|
43 |
-
• 1 ligne
|
44 |
-
conclusion :
|
45 |
-
Ce texte de ………… (Nom de l'auteur) revêt un intérêt pédagogique dans la mesure où il nous enseigne que………… (Thèse de l'auteur). En effet,
|
46 |
-
(Corroboration/Justification de la thèse de l'auteur).
|
47 |
-
D'un autre auteur qui aborde le même problème dans le sens de l'auteur du texte) ne dit pas le contraire lorsqu'il affirme que : "…………". Ceci pour signifier que (Explication de la citation).
|
48 |
-
"""
|
49 |
|
|
|
|
|
|
|
|
|
50 |
|
|
|
|
|
|
|
51 |
|
52 |
@app.route('/')
|
53 |
def index():
|
@@ -56,31 +48,30 @@ def index():
|
|
56 |
@app.route('/analyze', methods=['POST'])
|
57 |
def analyze():
|
58 |
try:
|
59 |
-
analysis_type = request.form.get('analysis_type')
|
60 |
files = request.files.getlist('images')
|
61 |
|
62 |
if not files:
|
63 |
-
return jsonify({'error': '
|
64 |
|
65 |
image_parts = []
|
66 |
for file in files:
|
67 |
if file.filename:
|
68 |
-
#
|
69 |
filename = secure_filename(file.filename)
|
70 |
filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
|
71 |
file.save(filepath)
|
72 |
|
73 |
-
#
|
74 |
image = PIL.Image.open(filepath)
|
75 |
image_parts.append(image)
|
76 |
|
77 |
-
#
|
78 |
os.remove(filepath)
|
79 |
|
80 |
-
#
|
81 |
-
prompt = PROMPT_TEXT
|
82 |
|
83 |
-
#
|
84 |
model = genai.GenerativeModel(model_name="gemini-2.0-flash-exp", safety_settings=safety_settings)
|
85 |
response = model.generate_content([prompt] + image_parts)
|
86 |
response.resolve()
|
@@ -91,4 +82,4 @@ def analyze():
|
|
91 |
return jsonify({'error': str(e)}), 500
|
92 |
|
93 |
if __name__ == '__main__':
|
94 |
-
app.run(debug=True)
|
|
|
12 |
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB max file size
|
13 |
app.config['UPLOAD_FOLDER'] = 'uploads'
|
14 |
|
15 |
+
# Assurer que le dossier des uploads existe
|
16 |
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
|
17 |
|
18 |
+
# Configuration de Google Generative AI
|
19 |
GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')
|
20 |
genai.configure(api_key=GOOGLE_API_KEY)
|
21 |
|
|
|
26 |
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
|
27 |
]
|
28 |
|
|
|
|
|
29 |
PROMPT_TEXT = """
|
30 |
+
Traite ce texte comme un exercice de philosophie en respectant la structure suivante :
|
|
|
31 |
|
32 |
Introduction :
|
33 |
+
Dans son extrait, ………… (Nom de l'auteur) aborde la thématique relative à ………… (Thème du texte) et répond en substance à la question de savoir si ………… (Question implicite). Sans ambiguïté, il affirme : "…………" (Thèse de l'auteur). Autrement dit, il postule que ………… (Reformulation de la thèse). Toutefois, si l'on admet que ………… (Idée de la thèse), ne peut-on pas aussi soutenir que ………… (Idée de la nuance) ?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
+
Développement :
|
36 |
+
Pour soutenir sa thèse, ………… (Nom de l'auteur) organise son argumentation en deux axes principaux. Dans le premier axe, il examine ………… (Idée du premier axe). Dans le second axe, il développe ………… (Idée du second axe).
|
37 |
+
- Alinéa : Explication détaillée de l'idée.
|
38 |
+
- Alinéa : Complément d'explication.
|
39 |
|
40 |
+
Conclusion :
|
41 |
+
Ainsi, ce texte de ………… (Nom de l'auteur) présente un intérêt pédagogique en nous enseignant que ………… (Thèse de l'auteur). En outre, un autre penseur ayant une approche similaire affirme que : "…………", illustrant ainsi que ………… (Interprétation de la citation).
|
42 |
+
"""
|
43 |
|
44 |
@app.route('/')
|
45 |
def index():
|
|
|
48 |
@app.route('/analyze', methods=['POST'])
|
49 |
def analyze():
|
50 |
try:
|
|
|
51 |
files = request.files.getlist('images')
|
52 |
|
53 |
if not files:
|
54 |
+
return jsonify({'error': 'Aucun fichier n\'a été téléchargé'}), 400
|
55 |
|
56 |
image_parts = []
|
57 |
for file in files:
|
58 |
if file.filename:
|
59 |
+
# Sauvegarde temporaire du fichier
|
60 |
filename = secure_filename(file.filename)
|
61 |
filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
|
62 |
file.save(filepath)
|
63 |
|
64 |
+
# Traitement de l'image
|
65 |
image = PIL.Image.open(filepath)
|
66 |
image_parts.append(image)
|
67 |
|
68 |
+
# Suppression du fichier temporaire
|
69 |
os.remove(filepath)
|
70 |
|
71 |
+
# On utilise toujours le prompt philosophique
|
72 |
+
prompt = PROMPT_TEXT
|
73 |
|
74 |
+
# Génération du contenu par l'IA
|
75 |
model = genai.GenerativeModel(model_name="gemini-2.0-flash-exp", safety_settings=safety_settings)
|
76 |
response = model.generate_content([prompt] + image_parts)
|
77 |
response.resolve()
|
|
|
82 |
return jsonify({'error': str(e)}), 500
|
83 |
|
84 |
if __name__ == '__main__':
|
85 |
+
app.run(debug=True)
|