Spaces:
Sleeping
Sleeping
File size: 5,315 Bytes
6165204 10af3d7 50e5a10 f4accca 5054645 f4accca 6165204 f4accca 1f05742 f4accca 6165204 f4accca 6165204 f4accca 6165204 9903381 f4accca 6165204 f4accca 6165204 f4accca 6165204 f4accca 6165204 f4accca 10af3d7 503c790 f4accca 10af3d7 6165204 b86a6cd 6165204 f4accca 50e5a10 f4accca 10af3d7 f4accca 10af3d7 6165204 f4accca 6165204 503c790 f4accca 6165204 50e5a10 f4accca 6165204 f4accca 503c790 6165204 f4accca 10af3d7 f4accca 10af3d7 f4accca 6165204 7939a0c f4accca 50e5a10 10af3d7 7939a0c f4accca 10af3d7 f4accca 6165204 f4accca 6165204 10af3d7 f4accca 50e5a10 f4accca 50e5a10 f4accca 6165204 f4accca 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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
import os
import gradio as gr
import requests
import pandas as pd
from huggingface_hub import login
from dotenv import load_dotenv
import my_tokens
# Cargar variables de entorno
load_dotenv()
# Constantes
API_BASE_URL = "https://my-custom-api.hf.space"
def execute_agent_operations(profile: gr.OAuthProfile | None):
"""
Obtiene preguntas, ejecuta el agente y envía respuestas.
"""
# Obtener el ID de espacio
space_id = os.getenv("MY_SPACE_ID")
if profile:
username = f"{profile.username}"
print(f"Usuario conectado: {username}")
else:
print("No has iniciado sesión.")
return "Inicia sesión en Hugging Face.", None
questions_url = f"{API_BASE_URL}/questions"
attachments_url = f"{API_BASE_URL}/files/"
submit_url = f"{API_BASE_URL}/submit"
try:
print("Iniciando Agente...")
# Aquí puedes instanciar tu agente como se define en agent.py
# agente = MiAgente()
except Exception as e:
print(f"Error al inicializar agente: {e}")
return f"Error al inicializar el agente: {e}", None
# Obtener las preguntas
print(f"Obteniendo preguntas de: {questions_url}")
try:
response = requests.get(questions_url, timeout=15)
response.raise_for_status()
questions = response.json()
if not questions:
print("La lista de preguntas está vacía.")
return "No se encontraron preguntas.", None
print(f"Se obtuvieron {len(questions)} preguntas.")
for q in questions:
file_name = q.get("file_name", "")
task_id = q.get("task_id")
if file_name and task_id:
try:
att_response = requests.get(f"{attachments_url}{task_id}", timeout=15)
att_response.raise_for_status()
q["attachment_b64"] = att_response.text
except Exception as e:
print(f"Error al obtener archivo adjunto para la tarea {task_id}: {e}")
q["attachment_b64"] = None
except requests.exceptions.RequestException as e:
print(f"Error al obtener preguntas: {e}")
return f"Error al obtener preguntas: {e}", None
# Ejecutar el agente
print(f"Ejecutando agente en {len(questions)} preguntas...")
results_log = []
answers_payload = []
for item in questions:
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 not question_text:
print(f"Saltando tarea con información incompleta: {item}")
continue
try:
submitted_answer = "Placeholder" # Aquí llamarías a tu agente para obtener la respuesta
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 al procesar la tarea {task_id}: {e}")
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": f"ERROR: {e}"})
if not answers_payload:
return "El agente no produjo respuestas.", pd.DataFrame(results_log)
submission_data = {"username": username.strip(), "agent_code": f"https://huggingface.co/spaces/{space_id}", "answers": answers_payload}
status_update = f"Enviando respuestas para el usuario '{username}'..."
print(status_update)
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!\nPuntuación: {result_data.get('score', 'N/A')}"
print("Envío exitoso.")
results_df = pd.DataFrame(results_log)
return final_status, results_df
except requests.exceptions.RequestException as e:
error_message = f"Error al enviar: {e}"
print(error_message)
results_df = pd.DataFrame(results_log)
return error_message, results_df
# Interfaz Gradio
with gr.Blocks() as demo:
gr.Markdown("# Evaluador de Agente Básico")
gr.Markdown("""
**Instrucciones:**
1. Modifica el código para ajustar el agente a tus necesidades.
2. Inicia sesión en Hugging Face.
3. Haz clic en 'Ejecutar Evaluación y Enviar Respuestas' para procesar las preguntas.
---
**Avisos:**
Este espacio está diseñado para ser subóptimo con el fin de incentivar la personalización del código.
""")
gr.LoginButton()
run_button = gr.Button("Ejecutar Evaluación y Enviar Respuestas")
status_output = gr.Textbox(label="Estado de Ejecución / Resultado del Envío", lines=5, interactive=False)
results_table = gr.DataFrame(label="Preguntas y Respuestas del Agente", wrap=True)
run_button.click(
fn=execute_agent_operations,
outputs=[status_output, results_table]
)
if __name__ == "__main__":
print("Iniciando aplicación de evaluación de agente...")
demo.launch(debug=True, share=False)
|