Docfile commited on
Commit
f829c48
·
verified ·
1 Parent(s): e21d62d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -28
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
- # Ensure upload folder exists
16
  os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
17
 
18
- # Configure Google Generative AI
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 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 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) ?
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': 'No files uploaded'}), 400
64
 
65
  image_parts = []
66
  for file in files:
67
  if file.filename:
68
- # Save file temporarily
69
  filename = secure_filename(file.filename)
70
  filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
71
  file.save(filepath)
72
 
73
- # Process image
74
  image = PIL.Image.open(filepath)
75
  image_parts.append(image)
76
 
77
- # Clean up
78
  os.remove(filepath)
79
 
80
- # Select prompt based on analysis type
81
- prompt = PROMPT_TEXT if analysis_type == 'text' else PROMPT_IMAGE
82
 
83
- # Generate content
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)