Dominic-01 / app.py
hectorruiz9's picture
Update app.py
f00a9ee verified
import os
import gradio as gr
from crewai import Agent, Task, Crew, Process
print("💀 [FORJA EN LA NUBE]: Levantando el Enjambre Abada V3...")
# --- EL PUENTE DE LA LLAVE ---
# Tomamos tu secreto de Hugging Face y se lo damos a LiteLLM en el idioma que entiende
llave_secreta = os.environ.get("HUGGINGFACEHUB_API_TOKEN")
if llave_secreta:
os.environ["HUGGINGFACE_API_KEY"] = llave_secreta
else:
print("⚠️ ALERTA: No se encontró el HUGGINGFACEHUB_API_TOKEN en los secretos.")
MODELO_NUBE = "huggingface/meta-llama/Llama-3.1-8B-Instruct"
# --- DEFINICIÓN DEL ENJAMBRE ---
def iniciar_mesa_redonda(descripcion_proyecto):
# 1. El Estratega
agente_producto = Agent(
role='Product Manager Senior',
goal='Diseñar la lógica y los pasos de la interfaz de usuario.',
backstory='Eres el visionario de AbadaLabs. Creas experiencias de usuario con cero fricción.',
verbose=True,
allow_delegation=False,
llm=MODELO_NUBE
)
# 2. El Constructor
agente_frontend = Agent(
role='Frontend Developer Lead',
goal='Escribir el código en React y Tailwind basándose en la lógica del Product Manager.',
backstory='Eres un dios del código. Traduces ideas en componentes de React hermosos.',
verbose=True,
allow_delegation=False,
llm=MODELO_NUBE
)
tarea_1 = Task(
description=f'Analiza esta idea: "{descripcion_proyecto}". Define una lista de 3 pasos exactos para la interfaz.',
expected_output='Una lista numerada de 3 pasos para la UI.',
agent=agente_producto
)
tarea_2 = Task(
description='Basándote en la lista de pasos creada, escribe el código de un componente principal en React con Tailwind.',
expected_output='Código limpio en React y Tailwind.',
agent=agente_frontend
)
enjambre = Crew(
agents=[agente_producto, agente_frontend],
tasks=[tarea_1, tarea_2],
process=Process.sequential
)
# Ejecutamos la colmena y devolvemos el resultado
resultado = enjambre.kickoff()
return str(resultado)
# --- LA ARMADURA VISUAL (GRADIO) ---
interfaz = gr.Interface(
fn=iniciar_mesa_redonda,
inputs=gr.Textbox(
lines=3,
placeholder='Ejemplo: Requiero un Magic Onboarding para detectar si el usuario es Dev o Creador...',
label='💡 Instrucción para el Enjambre'
),
outputs=gr.Textbox(
lines=15,
label='⚙️ Resultado de la Mesa Redonda (Código y Estrategia)'
),
title="👁️ HECTRON PRIME: Enjambre Autónomo",
description="Escribe tu idea. El Product Manager la diseñará y el Frontend Dev escribirá el código de React."
)
# Encendemos el servidor web
interfaz.launch()