File size: 3,609 Bytes
3a27f38
 
 
 
 
 
 
 
 
 
 
 
 
 
f829c48
3a27f38
 
f829c48
3a27f38
 
 
 
 
 
 
 
 
 
6392218
f829c48
c476650
 
f829c48
6392218
f829c48
 
dd03160
 
c476650
f829c48
 
 
6392218
3a27f38
 
 
 
 
 
 
 
 
 
f829c48
3a27f38
 
 
 
f829c48
3a27f38
 
 
 
f829c48
3a27f38
 
 
f829c48
3a27f38
 
f829c48
 
3a27f38
f829c48
3a27f38
 
 
 
 
 
 
 
 
 
f829c48
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
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)