Update app.py
Browse files
app.py
CHANGED
|
@@ -144,10 +144,10 @@ def upload_file_to_genai_api(file_data, filename, mime_type):
|
|
| 144 |
return None
|
| 145 |
|
| 146 |
def call_gemini_with_fallback(contents, task_id):
|
| 147 |
-
"""Appelle Gemini
|
| 148 |
models_to_try = [
|
| 149 |
-
{"name": "gemini-3-flash
|
| 150 |
-
{"name": "gemini-3-flash
|
| 151 |
]
|
| 152 |
|
| 153 |
last_error = None
|
|
@@ -160,12 +160,12 @@ def call_gemini_with_fallback(contents, task_id):
|
|
| 160 |
logger.info(f"[Task {task_id}] Tentative {i+1}/2: Appel de {model_display}...")
|
| 161 |
|
| 162 |
# Mettre à jour le statut pour indiquer quel modèle est en cours d'utilisation
|
| 163 |
-
if
|
| 164 |
task_results[task_id]['status'] = 'generating_latex_pro'
|
| 165 |
-
task_results[task_id]['current_model'] = 'Gemini
|
| 166 |
else:
|
| 167 |
task_results[task_id]['status'] = 'generating_latex_flash'
|
| 168 |
-
task_results[task_id]['current_model'] = 'Gemini
|
| 169 |
|
| 170 |
# Faire l'appel à l'API
|
| 171 |
gemini_response = client.models.generate_content(
|
|
@@ -250,8 +250,8 @@ def get_system_stats():
|
|
| 250 |
pending_tasks = sum(1 for task in task_results.values() if task['status'] not in ['completed', 'error'])
|
| 251 |
|
| 252 |
# Statistiques d'utilisation des modèles
|
| 253 |
-
pro_usage = sum(1 for task in task_results.values() if task.get('used_model') == 'Gemini
|
| 254 |
-
flash_usage = sum(1 for task in task_results.values() if task.get('used_model') == 'Gemini
|
| 255 |
|
| 256 |
# Compter les fichiers PDF générés
|
| 257 |
pdf_files = 0
|
|
@@ -402,7 +402,7 @@ def process_files_background(task_id, files_data, resolution_style):
|
|
| 402 |
raise ValueError(f"Le fichier de prompt pour le style '{resolution_style}' est introuvable ou vide.")
|
| 403 |
contents.append(prompt_to_use)
|
| 404 |
|
| 405 |
-
# Appeler Gemini avec fallback
|
| 406 |
logger.info(f"[Task {task_id}] Début des appels aux modèles Gemini avec {len(uploaded_file_refs)} fichier(s).")
|
| 407 |
full_latex_response = call_gemini_with_fallback(contents, task_id)
|
| 408 |
|
|
|
|
| 144 |
return None
|
| 145 |
|
| 146 |
def call_gemini_with_fallback(contents, task_id):
|
| 147 |
+
"""Appelle Gemini 3.5 Flash en premier, puis en fallback si échec."""
|
| 148 |
models_to_try = [
|
| 149 |
+
{"name": "gemini-3.5-flash", "display_name": " 3.5 Flash"},
|
| 150 |
+
{"name": "gemini-3.5-flash", "display_name": " 3.5 Flash (fallback)"}
|
| 151 |
]
|
| 152 |
|
| 153 |
last_error = None
|
|
|
|
| 160 |
logger.info(f"[Task {task_id}] Tentative {i+1}/2: Appel de {model_display}...")
|
| 161 |
|
| 162 |
# Mettre à jour le statut pour indiquer quel modèle est en cours d'utilisation
|
| 163 |
+
if i == 0:
|
| 164 |
task_results[task_id]['status'] = 'generating_latex_pro'
|
| 165 |
+
task_results[task_id]['current_model'] = 'Gemini 3.5 Flash'
|
| 166 |
else:
|
| 167 |
task_results[task_id]['status'] = 'generating_latex_flash'
|
| 168 |
+
task_results[task_id]['current_model'] = 'Gemini 3.5 Flash (fallback)'
|
| 169 |
|
| 170 |
# Faire l'appel à l'API
|
| 171 |
gemini_response = client.models.generate_content(
|
|
|
|
| 250 |
pending_tasks = sum(1 for task in task_results.values() if task['status'] not in ['completed', 'error'])
|
| 251 |
|
| 252 |
# Statistiques d'utilisation des modèles
|
| 253 |
+
pro_usage = sum(1 for task in task_results.values() if task.get('used_model') == 'Gemini 3.5 Flash')
|
| 254 |
+
flash_usage = sum(1 for task in task_results.values() if task.get('used_model') == 'Gemini 3.5 Flash (fallback)')
|
| 255 |
|
| 256 |
# Compter les fichiers PDF générés
|
| 257 |
pdf_files = 0
|
|
|
|
| 402 |
raise ValueError(f"Le fichier de prompt pour le style '{resolution_style}' est introuvable ou vide.")
|
| 403 |
contents.append(prompt_to_use)
|
| 404 |
|
| 405 |
+
# Appeler Gemini avec fallback
|
| 406 |
logger.info(f"[Task {task_id}] Début des appels aux modèles Gemini avec {len(uploaded_file_refs)} fichier(s).")
|
| 407 |
full_latex_response = call_gemini_with_fallback(contents, task_id)
|
| 408 |
|