Mphilo3 / app.py
Docfile's picture
Update app.py
dd03160 verified
from flask import Flask, render_template, request, jsonify
import PIL.Image
import io
import google.generativeai as genai
from werkzeug.utils import secure_filename
import os
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB max file size
app.config['UPLOAD_FOLDER'] = 'uploads'
# Assurer que le dossier des uploads existe
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
# Configuration de Google Generative AI
GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
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"},
]
PROMPT_TEXT = """
Traite ce texte comme un exercice de philosophie en respectant la structure suivante :
Introduction :
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) ?
Développement :
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).
- Alinéa : Explication détaillée de l'idée. (détail bien cette partie )
- Alinéa : Complément d'explication. (détail bien cette partie )
Conclusion :
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).
"""
@app.route('/')
def index():
return render_template('index.html')
@app.route('/analyze', methods=['POST'])
def analyze():
try:
files = request.files.getlist('images')
if not files:
return jsonify({'error': 'Aucun fichier n\'a été téléchargé'}), 400
image_parts = []
for file in files:
if file.filename:
# Sauvegarde temporaire du fichier
filename = secure_filename(file.filename)
filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
file.save(filepath)
# Traitement de l'image
image = PIL.Image.open(filepath)
image_parts.append(image)
# Suppression du fichier temporaire
os.remove(filepath)
# On utilise toujours le prompt philosophique
prompt = PROMPT_TEXT
# Génération du contenu par l'IA
model = genai.GenerativeModel(model_name="gemini-2.0-flash-exp", safety_settings=safety_settings)
response = model.generate_content([prompt] + image_parts)
response.resolve()
return jsonify({'result': response.text})
except Exception as e:
return jsonify({'error': str(e)}), 500
if __name__ == '__main__':
app.run(debug=True)