smiquensi's picture
Update app.py
9ff6421 verified
import os
import gradio as gr
import requests
import pandas as pd
DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
class BasicAgent:
def __init__(self):
print("Agente básico cargado.")
def __call__(self, question: str) -> str:
print(f"Pregunta recibida: {question}")
return "This is a default answer." # Puedes modificar esta línea luego
def run_and_submit_all(profile: gr.OAuthProfile | None):
if profile:
username = profile.username
else:
return "🔒 Por favor, inicia sesión con Hugging Face.", None
space_id = os.getenv("SPACE_ID", "")
if not space_id:
return "❌ Falta la variable SPACE_ID", None
agent = BasicAgent()
questions_url = f"{DEFAULT_API_URL}/questions"
submit_url = f"{DEFAULT_API_URL}/submit"
try:
response = requests.get(questions_url, timeout=10)
questions = response.json()
except Exception as e:
return f"❌ Error al obtener preguntas: {e}", None
results = []
answers = []
for q in questions:
task_id = q.get("task_id")
question = q.get("question")
if task_id and question:
answer = agent(question)
results.append({"Task ID": task_id, "Question": question, "Submitted Answer": answer})
answers.append({"task_id": task_id, "submitted_answer": answer})
payload = {
"username": username,
"agent_code": f"https://huggingface.co/spaces/{space_id}/tree/main",
"answers": answers
}
try:
res = requests.post(submit_url, json=payload)
res.raise_for_status()
result_data = res.json()
msg = (
f"✅ Envío correcto\n"
f"Usuario: {result_data.get('username')}\n"
f"Puntuación: {result_data.get('score')}% "
f"({result_data.get('correct_count')}/{result_data.get('total_attempted')})"
)
return msg, pd.DataFrame(results)
except Exception as e:
return f"❌ Error al enviar resultados: {e}", pd.DataFrame(results)
with gr.Blocks() as demo:
gr.Markdown("# Evaluación del Agente GAIA")
gr.LoginButton()
btn = gr.Button("Enviar respuestas y evaluar")
output = gr.Textbox(label="Resultado", lines=4)
tabla = gr.DataFrame(label="Respuestas")
btn.click(fn=run_and_submit_all, outputs=[output, tabla])
if __name__ == "__main__":
demo.launch(debug=True)