import os from crewai import Agent, Task, Crew, Process from langchain_openai import ChatOpenAI print("💀 [FORJA DE LA COLMENA]: Despertando a los Agentes...") # 1. EL CONECTOR AL CEREBRO DE HECTRON (Termux Local) os.environ["OPENAI_API_KEY"] = "sk-no-necesitas-llave" # Es local, no usamos llave real llm_hectron = ChatOpenAI( model="hectron", base_url="http://127.0.0.1:8000/v1", # Apuntamos al servidor de la Sesión Alpha max_tokens=500, temperature=0.3 ) # 2. LAS MÁSCARAS (Los Agentes) agente_producto = Agent( role='Product Manager Senior', goal='Definir los 3 pasos exactos para la interfaz del Magic Onboarding.', backstory='Eres el visionario de AbadaLabs. Tu objetivo es crear experiencias de usuario con cero fricción.', verbose=True, allow_delegation=False, llm=llm_hectron ) agente_frontend = Agent( role='Frontend Developer Lead', goal='Escribir el código en React y Tailwind basándose en las instrucciones del Product Manager.', backstory='Eres un dios del código. Traduces ideas en componentes de React hermosos y eficientes.', verbose=True, allow_delegation=False, llm=llm_hectron ) # 3. LAS TAREAS (La Misión) tarea_1 = Task( description='Diseña una lista simple de 3 pasos para un "Magic Onboarding" que detecte si el usuario es Developer, Creador o Marketer.', expected_output='Una lista numerada de 3 pasos claros.', agent=agente_producto ) tarea_2 = Task( description='Basándote en la lista de pasos creada, escribe UN SOLO componente en React (con Tailwind) para la tarjeta principal.', expected_output='Código limpio en React y Tailwind. Nada de explicaciones extra.', agent=agente_frontend ) # 4. EL BUCLE DE EJECUCIÓN (La Mesa Redonda) enjambre_abada = Crew( agents=[agente_producto, agente_frontend], tasks=[tarea_1, tarea_2], process=Process.sequential # El Dev espera a que el PM termine ) print("⚡ [IGNICIÓN]: El Enjambre Abada ha iniciado su ciclo de trabajo...") resultado_final = enjambre_abada.kickoff() print("\n👑 [REPORTE FINAL PARA EL SOBERANO]:") print("=========================================") print(resultado_final)