Docfile commited on
Commit
5b078cb
·
verified ·
1 Parent(s): 0f81b27

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -45
app.py CHANGED
@@ -1,6 +1,5 @@
1
  from flask import Flask, render_template, request, send_file, jsonify
2
  from google import genai
3
- from google.genai import types
4
  from PIL import Image
5
  import subprocess
6
  import tempfile
@@ -11,7 +10,7 @@ import base64
11
 
12
  app = Flask(__name__)
13
 
14
- # --- Constantes ---
15
  MODEL_SINGLE_GENERATION = "gemini-2.5-pro-exp-03-25" # Modèle avec "thinking" pour la génération complète
16
  LATEX_MENTION = r"\vspace{1cm}\noindent\textit{Ce devoir a été généré par Mariam AI. \url{https://mariam-241.vercel.app}}"
17
 
@@ -79,44 +78,11 @@ def clean_latex(raw_latex_text):
79
 
80
  return cleaned.strip() # Retourne le résultat nettoyé
81
 
82
- def extract_content_from_response(response):
83
- """
84
- Extrait le contenu LaTeX et le raisonnement (thought) de la réponse Gemini.
85
- Prend également en compte les résultats d'exécution de code.
86
- """
87
- latex_content_raw = None
88
- thinking_content = []
89
- code_execution_results = []
90
-
91
- if response.candidates and response.candidates[0].content and response.candidates[0].content.parts:
92
- for part in response.candidates[0].content.parts:
93
- # Extraire le thinking
94
- if getattr(part, 'thought', None):
95
- thinking_content.append(part.text)
96
-
97
- # Extraire le code et les résultats d'exécution
98
- if getattr(part, 'executable_code', None):
99
- thinking_content.append(f"Code généré:\n{part.executable_code.code}")
100
-
101
- if getattr(part, 'code_execution_result', None):
102
- code_execution_results.append(part.code_execution_result.output)
103
- thinking_content.append(f"Résultat d'exécution:\n{part.code_execution_result.output}")
104
-
105
- # Extraire le texte (contenu LaTeX)
106
- if getattr(part, 'text', None) and not latex_content_raw:
107
- latex_content_raw = part.text
108
-
109
- # Combiner les éléments de thinking_content
110
- thinking_content = "\n\n".join(thinking_content)
111
-
112
- return latex_content_raw, thinking_content, code_execution_results
113
-
114
  # --- Fonction Principale (API GenAI) ---
115
 
116
  def generate_complete_latex(client, image_bytes):
117
  """
118
  Génère une solution complète en LaTeX à partir de l'image en une seule étape.
119
- Utilise l'exécution de code pour améliorer les réponses mathématiques.
120
  """
121
  try:
122
  # Convertir les bytes en image PIL
@@ -134,8 +100,7 @@ Agis en tant qu'expert en mathématiques et tuteur pédagogue. Ton objectif est
134
  # TÂCHE PRINCIPALE
135
  1. Analyse l'image pour comprendre parfaitement l'énoncé de l'exercice.
136
  2. Résous l'exercice de manière rigoureuse, étape par étape.
137
- 3. Utilise l'exécution de code Python quand nécessaire pour vérifier tes calculs, résoudre des équations ou générer des visualisations.
138
- 4. Rédige la solution complète directement en code LaTeX, en respectant **toutes** les spécifications ci-dessous.
139
 
140
  # SPÉCIFICATIONS TECHNIQUES DU CODE LATEX
141
  1. **Structure du Document:** Commence **strictement** par `\\documentclass{{article}}` et se termine **strictement** par `\\end{{document}}`.
@@ -153,11 +118,6 @@ Agis en tant qu'expert en mathématiques et tuteur pédagogue. Ton objectif est
153
  5. **Mention Obligatoire:** Insère la ligne suivante **exactement** telle quelle, juste avant la ligne `\\end{{document}}`:
154
  {LATEX_MENTION}
155
 
156
- # UTILISATION DU CODE PYTHON
157
- 1. Utilise Python pour vérifier tes calculs, résoudre des équations complexes ou générer des visualisations.
158
- 2. Lorsque tu utilises l'exécution de code, assure-toi que les résultats sont correctement intégrés dans ta solution LaTeX.
159
- 3. N'affiche pas le code Python lui-même dans le document LaTeX final, utilise-le uniquement comme outil pour améliorer la qualité de ta correction.
160
-
161
  # PROCESSUS INTERNE RECOMMANDÉ (Pour l'IA)
162
  1. **Analyse Approfondie:** Décompose le problème en sous-étapes logiques.
163
  2. **Résolution Étape par Étape:** Effectue la résolution mathématique complète en interne.
@@ -169,11 +129,23 @@ Agis en tant qu'expert en mathématiques et tuteur pédagogue. Ton objectif est
169
  contents=[image, prompt],
170
  config=genai.types.GenerateContentConfig(
171
  temperature=0.3,
172
- tools=[types.Tool(code_execution=types.ToolCodeExecution)]
173
- )
 
 
 
174
  )
175
 
176
- latex_content_raw, thinking_content, code_execution_results = extract_content_from_response(response)
 
 
 
 
 
 
 
 
 
177
 
178
  if latex_content_raw:
179
  latex_content_cleaned = clean_latex(latex_content_raw)
 
1
  from flask import Flask, render_template, request, send_file, jsonify
2
  from google import genai
 
3
  from PIL import Image
4
  import subprocess
5
  import tempfile
 
10
 
11
  app = Flask(__name__)
12
 
13
+ # --- Convstantes ---
14
  MODEL_SINGLE_GENERATION = "gemini-2.5-pro-exp-03-25" # Modèle avec "thinking" pour la génération complète
15
  LATEX_MENTION = r"\vspace{1cm}\noindent\textit{Ce devoir a été généré par Mariam AI. \url{https://mariam-241.vercel.app}}"
16
 
 
78
 
79
  return cleaned.strip() # Retourne le résultat nettoyé
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  # --- Fonction Principale (API GenAI) ---
82
 
83
  def generate_complete_latex(client, image_bytes):
84
  """
85
  Génère une solution complète en LaTeX à partir de l'image en une seule étape.
 
86
  """
87
  try:
88
  # Convertir les bytes en image PIL
 
100
  # TÂCHE PRINCIPALE
101
  1. Analyse l'image pour comprendre parfaitement l'énoncé de l'exercice.
102
  2. Résous l'exercice de manière rigoureuse, étape par étape.
103
+ 3. Rédige la solution complète directement en code LaTeX, en respectant **toutes** les spécifications ci-dessous.
 
104
 
105
  # SPÉCIFICATIONS TECHNIQUES DU CODE LATEX
106
  1. **Structure du Document:** Commence **strictement** par `\\documentclass{{article}}` et se termine **strictement** par `\\end{{document}}`.
 
118
  5. **Mention Obligatoire:** Insère la ligne suivante **exactement** telle quelle, juste avant la ligne `\\end{{document}}`:
119
  {LATEX_MENTION}
120
 
 
 
 
 
 
121
  # PROCESSUS INTERNE RECOMMANDÉ (Pour l'IA)
122
  1. **Analyse Approfondie:** Décompose le problème en sous-étapes logiques.
123
  2. **Résolution Étape par Étape:** Effectue la résolution mathématique complète en interne.
 
129
  contents=[image, prompt],
130
  config=genai.types.GenerateContentConfig(
131
  temperature=0.3,
132
+ ),
133
+ tools=[types.Tool(
134
+ code_execution=types.ToolCodeExecution
135
+ )]
136
+
137
  )
138
 
139
+ latex_content_raw = None
140
+ thinking_content = None
141
+
142
+ # Extrait le contenu LaTeX et le raisonnement (thought)
143
+ if response.candidates and response.candidates[0].content and response.candidates[0].content.parts:
144
+ for part in response.candidates[0].content.parts:
145
+ if getattr(part, 'thought', None):
146
+ thinking_content = part.text
147
+ else:
148
+ latex_content_raw = part.text
149
 
150
  if latex_content_raw:
151
  latex_content_cleaned = clean_latex(latex_content_raw)