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)