Spaces:
Sleeping
Sleeping
File size: 3,060 Bytes
6165204 10af3d7 50e5a10 7db86c7 5054645 7db86c7 6165204 f4accca 1f05742 7db86c7 f4accca 6165204 7db86c7 6165204 7db86c7 6165204 7db86c7 6165204 7db86c7 6165204 7db86c7 10af3d7 6165204 7db86c7 6165204 7db86c7 6165204 7db86c7 6165204 7db86c7 10af3d7 7db86c7 10af3d7 7db86c7 6165204 7939a0c 7db86c7 f4accca 7db86c7 f4accca 50e5a10 7db86c7 f4accca 7db86c7 f4accca 7db86c7 6165204 7db86c7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
import os
import gradio as gr
import requests
import pandas as pd
from huggingface_hub import login
from dotenv import load_dotenv
from agent import ejecutar_agente
# Cargar token desde secreto y hacer login
hf_token = os.getenv("HF_TOKEN")
if hf_token:
login(token=hf_token)
else:
raise ValueError("No se encontró el token de Hugging Face. Verifica el secreto HF_TOKEN.")
# Constantes
API_BASE_URL = "https://my-custom-api.hf.space"
def ejecutar_y_enviar_respuestas(profile: gr.OAuthProfile | None):
space_id = os.getenv("MY_SPACE_ID")
if profile:
username = profile.username
print(f"Usuario: {username}")
else:
return "Debes iniciar sesión en Hugging Face.", None
# Obtener preguntas
try:
response = requests.get(f"{API_BASE_URL}/questions", timeout=10)
response.raise_for_status()
preguntas = response.json()
except Exception as e:
return f"Error al obtener preguntas: {e}", None
if not preguntas:
return "No hay preguntas disponibles.", None
for p in preguntas:
task_id = p.get("task_id")
if task_id:
try:
archivo = requests.get(f"{API_BASE_URL}/files/{task_id}", timeout=10)
archivo.raise_for_status()
p["attachment_b64"] = archivo.text
except:
p["attachment_b64"] = None
# Ejecutar agente sobre preguntas
resultados = []
respuestas = []
for item in preguntas:
task_id = item.get("task_id")
pregunta = item.get("question", "")
adjunto = item.get("attachment_b64", "")
if adjunto:
pregunta += f"\n\n[ATTACHMENT:]\n{adjunto}"
try:
respuesta = ejecutar_agente(pregunta)
except Exception as e:
respuesta = f"ERROR: {e}"
respuestas.append({"task_id": task_id, "submitted_answer": respuesta})
resultados.append({"Task ID": task_id, "Question": pregunta, "Submitted Answer": respuesta})
# Enviar respuestas
payload = {
"username": username,
"agent_code": f"https://huggingface.co/spaces/{space_id}",
"answers": respuestas,
}
try:
envio = requests.post(f"{API_BASE_URL}/submit", json=payload, timeout=60)
envio.raise_for_status()
resultado_final = envio.json()
return f"¡Envío exitoso! Score: {resultado_final.get('score', 'N/A')}", pd.DataFrame(resultados)
except Exception as e:
return f"Error al enviar: {e}", pd.DataFrame(resultados)
# Interfaz Gradio
with gr.Blocks() as interfaz:
gr.Markdown("# Evaluador de Agente")
gr.Markdown("Inicia sesión, ejecuta el agente y envía tus respuestas.")
gr.LoginButton()
btn = gr.Button("Ejecutar Evaluación y Enviar Respuestas")
salida_estado = gr.Textbox(label="Estado", lines=4)
salida_tabla = gr.DataFrame(label="Resultados")
btn.click(fn=ejecutar_y_enviar_respuestas, outputs=[salida_estado, salida_tabla])
if __name__ == "__main__":
interfaz.launch()
|