ernestmindres commited on
Commit
7ee1cf5
·
verified ·
1 Parent(s): 00a0107

Update model_handler.py

Browse files
Files changed (1) hide show
  1. model_handler.py +71 -2
model_handler.py CHANGED
@@ -1,9 +1,8 @@
1
- # model_handler.py
2
  import sys
3
  from google import genai
4
  from google.genai.errors import APIError
5
  from google.genai.types import Part
6
- # Importez os pour lire la variable d'environnement directement ici
7
  import os
8
  from config import GEMINI_MODEL_NAME, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE, SYSTEM_PROMPT
9
 
@@ -12,6 +11,76 @@ from config import GEMINI_MODEL_NAME, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE, S
12
  client = None
13
  MODEL_LOADED_SUCCESSFULLY = False
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  def get_model_instance():
16
  """Initialise ou retourne l'instance du client Gemini."""
17
  global client, MODEL_LOADED_SUCCESSFULLY
 
1
+ # model_handler.py (Version Corrigée et Améliorée)
2
  import sys
3
  from google import genai
4
  from google.genai.errors import APIError
5
  from google.genai.types import Part
 
6
  import os
7
  from config import GEMINI_MODEL_NAME, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE, SYSTEM_PROMPT
8
 
 
11
  client = None
12
  MODEL_LOADED_SUCCESSFULLY = False
13
 
14
+ def run_api_self_test(client_instance):
15
+ """Effectue un test simple pour vérifier si l'API fonctionne."""
16
+ try:
17
+ print("INFO: Exécution du test de connexion à l'API Gemini...", file=sys.stderr)
18
+
19
+ # Test simple de contenu
20
+ test_content = [
21
+ {"role": "user", "parts": [Part.from_text("Dis bonjour")]}
22
+ ]
23
+
24
+ response = client_instance.models.generate_content(
25
+ model=GEMINI_MODEL_NAME,
26
+ contents=test_content,
27
+ config=genai.types.GenerateContentConfig(max_output_tokens=10) # Limiter la réponse
28
+ )
29
+
30
+ if response.text and response.text.strip():
31
+ print("INFO: ✅ Test de connexion API réussi. Le modèle répond.", file=sys.stderr)
32
+ print(f"INFO: Réponse du test (début): {response.text[:30]}...", file=sys.stderr)
33
+ return True
34
+ else:
35
+ print("ALERTE: ❌ Test de connexion API échoué. Réponse vide.", file=sys.stderr)
36
+ return False
37
+
38
+ except APIError as e:
39
+ print(f"ALERTE: ❌ Test de connexion API échoué (APIError). Vérifiez la validité de la clé: {e.message}", file=sys.stderr)
40
+ return False
41
+ except Exception as e:
42
+ print(f"ALERTE: ❌ Test de connexion API échoué (Erreur Générale): {e}", file=sys.stderr)
43
+ return False
44
+
45
+ def get_model_instance():
46
+ """Initialise ou retourne l'instance du client Gemini."""
47
+ global client, MODEL_LOADED_SUCCESSFULLY
48
+
49
+ if client is None:
50
+
51
+ print("INFO: Tentative d'initialisation du client Gemini...", file=sys.stderr)
52
+ api_key = os.environ.get("GEMINI_API_KEY")
53
+
54
+ if not api_key:
55
+ print("ALERTE: ❌ Variable d'environnement 'GEMINI_API_KEY' non trouvée/vide.", file=sys.stderr)
56
+ MODEL_LOADED_SUCCESSFULLY = False
57
+ # Retourne pour s'assurer que 'client' reste None
58
+ return
59
+
60
+ print("INFO: Clé API 'GEMINI_API_KEY' trouvée dans les variables d'environnement.", file=sys.stderr)
61
+
62
+ try:
63
+ # 1. Initialisation du client
64
+ client = genai.Client(api_key=api_key)
65
+ print("INFO: Client Gemini initialisé. Tentative de self-test...", file=sys.stderr)
66
+
67
+ # 2. Exécution du Self-Test
68
+ if run_api_self_test(client):
69
+ MODEL_LOADED_SUCCESSFULLY = True
70
+ print(f"INFO: Configuration API réussie. Modèle LLM prêt. Utilisant {GEMINI_MODEL_NAME}.", file=sys.stderr)
71
+ else:
72
+ # Le self-test a échoué (clé invalide ou autre problème API)
73
+ client = None # Forcer la réinitialisation si nécessaire
74
+ MODEL_LOADED_SUCCESSFULLY = False
75
+ print("ALERTE: ❌ Client Gemini non initialisé. Le self-test a échoué.", file=sys.stderr)
76
+
77
+ except Exception as e:
78
+ # Ceci attrape les erreurs qui ne sont pas des APIError (ex: problème de librairie, etc.)
79
+ print(f"ALERTE: ❌ Échec critique de l'initialisation du client Gemini: {e}", file=sys.stderr)
80
+ client = None
81
+ MODEL_LOADED_SUCCESSFULLY = False
82
+
83
+
84
  def get_model_instance():
85
  """Initialise ou retourne l'instance du client Gemini."""
86
  global client, MODEL_LOADED_SUCCESSFULLY