MathieuGAL commited on
Commit
e2ec423
·
verified ·
1 Parent(s): 93f1781

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -12
app.py CHANGED
@@ -7,6 +7,7 @@ from typing import List, Dict
7
  from flask import Flask, request, jsonify
8
  from flask_cors import CORS
9
  from datetime import datetime
 
10
 
11
  # ======================================================================
12
  # CONFIGURATION
@@ -41,6 +42,10 @@ MAX_CONVERSATION_HISTORY = 10
41
  API_HOST = '0.0.0.0'
42
  API_PORT = 1212 # Le port 1212 est conservé, il doit être configuré dans le README.md
43
 
 
 
 
 
44
  # ======================================================================
45
  # VARIABLES GLOBALES
46
  # ======================================================================
@@ -270,20 +275,34 @@ def clear_history(session_id):
270
  conversation_histories[session_id] = []
271
 
272
  # ======================================================================
273
- # CALL GEMINI
274
  # ======================================================================
275
 
276
  def call_gemini(rag_prompt, system_prompt, gemini_client):
277
- """Appelle Google Gemini."""
278
- try:
279
- response = gemini_client.models.generate_content(
280
- model=GEMINI_MODEL,
281
- contents=f"{system_prompt}\n\n{rag_prompt}"
282
- )
283
- return response.text.replace("*", "")
284
- except Exception as e:
285
- print(f"❌ Erreur Gemini: {e}")
286
- return f"Erreur: {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
 
288
  # ======================================================================
289
  # ANSWER PROCESS
@@ -369,7 +388,7 @@ def api_get_answer():
369
  # Génère prompt RAG
370
  rag_prompt = get_answer(query_text, collection, model_paraphrase, model_cross_encoder, history)
371
 
372
- # Appelle Gemini
373
  response = call_gemini(rag_prompt, system_prompt, gemini_client)
374
 
375
  # Sauvegarde réponse
 
7
  from flask import Flask, request, jsonify
8
  from flask_cors import CORS
9
  from datetime import datetime
10
+ import time
11
 
12
  # ======================================================================
13
  # CONFIGURATION
 
42
  API_HOST = '0.0.0.0'
43
  API_PORT = 1212 # Le port 1212 est conservé, il doit être configuré dans le README.md
44
 
45
+ # Configuration retry pour erreur 503
46
+ MAX_RETRIES = 10
47
+ RETRY_DELAY = 1 # secondes entre chaque tentative
48
+
49
  # ======================================================================
50
  # VARIABLES GLOBALES
51
  # ======================================================================
 
275
  conversation_histories[session_id] = []
276
 
277
  # ======================================================================
278
+ # CALL GEMINI AVEC RETRY
279
  # ======================================================================
280
 
281
  def call_gemini(rag_prompt, system_prompt, gemini_client):
282
+ """Appelle Google Gemini avec retry automatique en cas d'erreur 503."""
283
+ for attempt in range(MAX_RETRIES):
284
+ try:
285
+ response = gemini_client.models.generate_content(
286
+ model=GEMINI_MODEL,
287
+ contents=f"{system_prompt}\n\n{rag_prompt}"
288
+ )
289
+ return response.text.replace("*", "")
290
+ except Exception as e:
291
+ error_message = str(e)
292
+ # Vérifie si c'est une erreur 503
293
+ if "503" in error_message or "Service Unavailable" in error_message:
294
+ print(f"⚠️ Erreur 503 détectée (tentative {attempt + 1}/{MAX_RETRIES}). Nouvelle tentative dans {RETRY_DELAY}s...")
295
+ if attempt < MAX_RETRIES - 1: # Pas de sleep à la dernière tentative
296
+ time.sleep(RETRY_DELAY)
297
+ continue
298
+ else:
299
+ # Si ce n'est pas une erreur 503, on arrête et on retourne l'erreur
300
+ print(f"❌ Erreur Gemini (non-503): {e}")
301
+ return f"Erreur: {str(e)}"
302
+
303
+ # Si on arrive ici, c'est qu'on a épuisé toutes les tentatives
304
+ print(f"❌ Échec après {MAX_RETRIES} tentatives")
305
+ return "Erreur: Service temporairement indisponible après plusieurs tentatives"
306
 
307
  # ======================================================================
308
  # ANSWER PROCESS
 
388
  # Génère prompt RAG
389
  rag_prompt = get_answer(query_text, collection, model_paraphrase, model_cross_encoder, history)
390
 
391
+ # Appelle Gemini avec retry automatique
392
  response = call_gemini(rag_prompt, system_prompt, gemini_client)
393
 
394
  # Sauvegarde réponse