Spaces:
Sleeping
Sleeping
File size: 4,504 Bytes
6165204 50e5a10 5054645 50e5a10 6165204 50e5a10 1f05742 50e5a10 e4f42cb 6165204 50e5a10 6165204 50e5a10 6165204 9903381 50e5a10 6165204 50e5a10 6165204 5054645 6165204 50e5a10 503c790 6165204 50e5a10 6165204 50e5a10 6165204 50e5a10 503c790 50e5a10 6165204 b86a6cd 6165204 50e5a10 6165204 50e5a10 6165204 503c790 50e5a10 6165204 50e5a10 6165204 50e5a10 6165204 50e5a10 503c790 6165204 50e5a10 6165204 50e5a10 7939a0c 50e5a10 7939a0c 50e5a10 6165204 50e5a10 6165204 50e5a10 6165204 50e5a10 1f05742 50e5a10 6165204 50e5a10 6165204 50e5a10 |
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 99 100 101 102 103 104 105 106 107 108 |
import os
import gradio as gr
import requests
import pandas as pd
from dotenv import load_dotenv
load_dotenv() # Cargar variables de entorno
DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
# Función para ejecutar y enviar todas las respuestas
def run_and_submit_all(profile: gr.OAuthProfile | None):
"""
Recoge todas las preguntas, ejecuta el agente sobre ellas, envía las respuestas y muestra los resultados.
"""
space_id = os.getenv("SPACE_ID") # ID del espacio para enlaces al código
if profile:
username = f"{profile.username}"
print(f"Usuario logueado: {username}")
else:
print("Usuario no logueado.")
return "Por favor, inicia sesión en Hugging Face.", None
api_url = DEFAULT_API_URL
questions_url = f"{api_url}/questions"
attachments_url = f"{api_url}/files/"
submit_url = f"{api_url}/submit"
# Crear agente (modificado)
try:
print("Iniciando agente...")
agent = agent.BasicAgent() # Usar el agente principal
except Exception as e:
print(f"Error al iniciar el agente: {e}")
return f"Error al iniciar el agente: {e}", None
# 2. Recoger las preguntas
print(f"Recogiendo preguntas desde: {questions_url}")
try:
response = requests.get(questions_url, timeout=15)
response.raise_for_status()
questions_data = response.json()
if not questions_data:
print("La lista de preguntas está vacía.")
return "La lista de preguntas está vacía.", None
print(f"Se recogieron {len(questions_data)} preguntas.")
except Exception as e:
print(f"Error recogiendo preguntas: {e}")
return f"Error recogiendo preguntas: {e}", None
# 3. Ejecutar el agente
results_log = []
answers_payload = []
print(f"Ejecutando el agente sobre {len(questions_data)} preguntas...")
for item in questions_data:
task_id = item.get("task_id")
question_text = item.get("question", "")
attachment_b64 = item.get("attachment_b64", "")
if attachment_b64:
question_text = f"{question_text}\n\n[ATTACHMENT:]\n{attachment_b64}"
if not task_id or question_text is None:
print(f"Saltando tarea con ID o pregunta faltante: {item}")
continue
try:
submitted_answer = agent.forward(question_text) # Respuesta del agente
answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
except Exception as e:
print(f"Error ejecutando agente en tarea {task_id}: {e}")
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": f"ERROR: {e}"})
# 4. Enviar las respuestas
submission_data = {"username": username.strip(), "agent_code": "agent_code_placeholder", "answers": answers_payload}
try:
response = requests.post(submit_url, json=submission_data, timeout=60)
response.raise_for_status()
result_data = response.json()
final_status = f"¡Envío exitoso!\nUsuario: {result_data.get('username')}\nPuntaje final: {result_data.get('score', 'N/A')}%"
print("Envío exitoso.")
return final_status, pd.DataFrame(results_log)
except requests.exceptions.RequestException as e:
print(f"Error al enviar respuestas: {e}")
return f"Error al enviar respuestas: {e}", pd.DataFrame(results_log)
# Interfaz Gradio
with gr.Blocks() as demo:
gr.Markdown("# Evaluación Básica del Agente")
gr.Markdown("""
**Instrucciones:**
1. Modifica este espacio con tu lógica de agente y las herramientas necesarias.
2. Inicia sesión en Hugging Face con el botón abajo.
3. Haz clic en 'Ejecutar Evaluación y Enviar Todas las Respuestas' para obtener resultados.
**Aviso:**
Puede tomar tiempo procesar las respuestas, así que ten paciencia.
""")
gr.LoginButton()
run_button = gr.Button("Ejecutar Evaluación y Enviar Todas las Respuestas")
status_output = gr.Textbox(label="Resultado de Ejecución / Envío", lines=5, interactive=False)
results_table = gr.DataFrame(label="Preguntas y Respuestas del Agente", wrap=True)
run_button.click(fn=run_and_submit_all, outputs=[status_output, results_table])
if __name__ == "__main__":
demo.launch(debug=True, share=False)
|