Spaces:
Sleeping
Sleeping
Update agent.py
Browse files
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 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|