jjvelezo commited on
Commit
5bafa85
·
verified ·
1 Parent(s): 80a9980

Update agent.py

Browse files
Files changed (1) hide show
  1. agent.py +40 -18
agent.py CHANGED
@@ -9,9 +9,10 @@ MODEL_NAME = os.getenv("MODEL_NAME", "google/gemma-2b-it")
9
  print("HF_TOKEN desde agent.py:", HF_TOKEN[:10] if HF_TOKEN else "NO DEFINIDO")
10
 
11
  # Función para llamar al modelo y obtener respuesta
12
- def call_model(prompt):
13
  """
14
  Llama al modelo de Hugging Face y devuelve la respuesta generada.
 
15
  """
16
  headers = {
17
  "Authorization": f"Bearer {HF_TOKEN}",
@@ -22,23 +23,44 @@ def call_model(prompt):
22
  "parameters": {"max_new_tokens": 512}
23
  }
24
 
25
- try:
26
- response = requests.post(
27
- f"https://api-inference.huggingface.co/models/{MODEL_NAME}",
28
- headers=headers,
29
- json=payload,
30
- timeout=60
31
- )
32
- result = response.json()
33
- if isinstance(result, dict) and result.get("error"):
34
- raise ValueError(f"Error al procesar la solicitud: {result['error']}")
35
- return result[0]["generated_text"] if isinstance(result, list) else result
36
- except requests.exceptions.RequestException as e:
37
- raise ValueError(f"Error de conexión con el modelo: {str(e)}")
38
- except Exception as e:
39
- raise ValueError(f"Error al obtener respuesta del modelo: {str(e)}")
40
-
41
- # Función para esperar que el modelo esté listo
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  def wait_for_model():
43
  """
44
  Espera hasta que el modelo esté completamente cargado y disponible para hacer solicitudes.
 
9
  print("HF_TOKEN desde agent.py:", HF_TOKEN[:10] if HF_TOKEN else "NO DEFINIDO")
10
 
11
  # Función para llamar al modelo y obtener respuesta
12
+ def call_model(prompt, max_retries=5, wait_seconds=10):
13
  """
14
  Llama al modelo de Hugging Face y devuelve la respuesta generada.
15
+ Reintenta si el modelo aún se está cargando.
16
  """
17
  headers = {
18
  "Authorization": f"Bearer {HF_TOKEN}",
 
23
  "parameters": {"max_new_tokens": 512}
24
  }
25
 
26
+ for attempt in range(1, max_retries + 1):
27
+ try:
28
+ response = requests.post(
29
+ f"https://api-inference.huggingface.co/models/{MODEL_NAME}",
30
+ headers=headers,
31
+ json=payload,
32
+ timeout=60
33
+ )
34
+ result = response.json()
35
+
36
+ # Verificar si hay un error
37
+ if isinstance(result, dict) and result.get("error"):
38
+ error_msg = result["error"]
39
+ print(f"[Intento {attempt}] Error del modelo: {error_msg}")
40
+
41
+ if "is currently loading" in error_msg and attempt < max_retries:
42
+ print(f"🔁 Esperando {wait_seconds} segundos antes de reintentar...")
43
+ time.sleep(wait_seconds)
44
+ continue
45
+ else:
46
+ raise ValueError(f"Error al procesar la solicitud: {error_msg}")
47
+
48
+ # Respuesta válida
49
+ return result[0]["generated_text"] if isinstance(result, list) else result
50
+
51
+ except requests.exceptions.RequestException as e:
52
+ print(f"[Intento {attempt}] Error de red: {e}")
53
+ if attempt < max_retries:
54
+ time.sleep(wait_seconds)
55
+ continue
56
+ else:
57
+ raise ValueError(f"Error de conexión con el modelo: {str(e)}")
58
+
59
+ except Exception as e:
60
+ raise ValueError(f"Error al obtener respuesta del modelo: {str(e)}")
61
+
62
+
63
+
64
  def wait_for_model():
65
  """
66
  Espera hasta que el modelo esté completamente cargado y disponible para hacer solicitudes.