File size: 6,103 Bytes
3a27f38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6392218
 
 
c476650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6392218
 
c476650
6392218
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3a27f38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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'

# Ensure upload folder exists
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)

# Configure 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 philosophie en respectant ca : 

Introduction : 
Dans son extrait de texte, ………… (Nom de l'auteur) aborde la thématique relative à/au ………… (Thème du texte) ; et répond en substance à la question de savoir si ………… (Question implicite). Sans ambiguïté, il répond en ces termes : "…………" (Thèse de l'auteur). Entendons par là que ………… (Reformulation de la thèse). En effet, si pour l'auteur ………… (Idée de la thèse) ; cependant, ne devons-nous pas aussi/ne pouvons-nous pas aussi affirmer ou dire que ………… (Idée de la nuance) ?
Développement : 
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).
Alinéa Pour l'auteur, (Explication détaillé de l'idée du mouvement)
Alinéa Plus loin,(Explication détaillé de l'idée du mouvement)
• 1 ligne
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) ?
• 1 ligne
conclusion : 
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,
(Corroboration/Justification de la thèse de l'auteur).
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).
"""


PROMPT_IMAGE = """ 

je souhaite faire mon travail d'anglais qui consiste à de l'analyse de document iconographique . j'aimerais que tu le phase en respectant scrupuleusement la méthodologie suivante. j'aimerais que tu fasses ce travail en anglais en donnant également la traduction française:


voici le plan :

1 - Présentation du document

Présenter le document,  titre, type, date, autheur , etc...

2- Description générale. 

Fais une description générale de du document en le présentant. Bref décris tout ce que tu vois sur le document 

3- commentaire 
Voici le texte extrait des sections 3 et 4 :

Commencez par l'élément principal du document. Dans votre "présentation-résumé", vous avez signalé sa présence et précisé son emplacement. À présent, faites-en une description plus détaillée, et parlez de sa fonction : pourquoi est-il là ? À quoi sert-il ? Comme pour un texte, ne séparez pas le fond de la forme : traitez globalement emplacement, forme, couleur et fonction.
L'étude d'un document visuel doit être aussi rigoureuse que celle d'un texte : dessins, tableaux, sculptures, publicités, photos de films, sont faits d'explicite et d'implicite. Vous devez donc chercher cet implicite. Mais, comme pour les textes : pas de délire interprétatif.  Répétez cette opération avec les autres éléments. Montrez bien les liens qui existent entre ces différents éléments : tout tableau, photographie (surtout artistique), publicité est un ensemble.


4. La synthèse / l’évaluation et la conclusion (the evaluation)

Parlez de l’atmosphère qui se dégage du document : "comment" et "pourquoi" (synthèse de ce qui a été vu en 3). Cela vous amène à parler du but que s’était fixé l’auteur du document. Donnez votre point de vue en argumentant bien votre opinion, qu’elle soit favorable ou défavorable, notamment les critiques (GIVING ONE’S OPINION: LIKES, DISLIKES, APPROVAL, DISAPPROVAL; SUMMING UP ONE’S IDEAS).

5. Le branching-out 

Servez vous du document étudié pour parler d'un sujet en rapport avec ce document 






"""
@app.route('/')
def index():
    return render_template('index.html')

@app.route('/analyze', methods=['POST'])
def analyze():
    try:
        analysis_type = request.form.get('analysis_type')
        files = request.files.getlist('images')
        
        if not files:
            return jsonify({'error': 'No files uploaded'}), 400

        image_parts = []
        for file in files:
            if file.filename:
                # Save file temporarily
                filename = secure_filename(file.filename)
                filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
                file.save(filepath)
                
                # Process image
                image = PIL.Image.open(filepath)
                image_parts.append(image)
                
                # Clean up
                os.remove(filepath)

        # Select prompt based on analysis type
        prompt = PROMPT_TEXT if analysis_type == 'text' else PROMPT_IMAGE

        # Generate content
        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)