from agno.agent import Agent from agno.models.openai import OpenAIChat # Prefect imports ####################################### from prefect import task, flow from prefect.logging import get_run_logger from prefect.filesystems import LocalFileSystem local_file_system_block = LocalFileSystem.load("localfile") # Cargar variables de entorno ########################### import os from dotenv import load_dotenv load_dotenv() openai_api_key = os.getenv("OPENAI_API_KEY") # Definir tareas ############################################### @task(name="Inicializar agente financiero", log_prints=True) def inicializar_agente_financiero(): prefect_logger = get_run_logger() prefect_logger.debug(f"Inicializando el agente financiero") # Aquí se podría agregar la lógica para inicializar el agente return "Agente financiero inicializado" @task(name="Analizar datos financieros", log_prints=True) def analizar_datos_financieros(datos: str): prefect_logger = get_run_logger() prefect_logger.debug(f"Creando el agente con OpenAI") prefect_logger.debug(f"analizando los datos: {datos}") # Crear el agente agente = Agent( model=OpenAIChat(id="gpt-4o-mini", api_key=openai_api_key), name="analista_financiero", description="Agente especializado en análisis financiero y económico" ) prefect_logger.debug(f"Ejecutando el agente") respuesta = agente.run("Da un resumen corto financiero de los siguientes datos: " + datos) prefect_logger.info(f"Respuesta del agente: {respuesta.content}") return respuesta.content # Definir el flujo principal ######################################### @flow(name="Flujo financiero", result_storage=local_file_system_block, log_prints=True) # type: ignore def flujo_principal(): datos_ejemplo = "La bolsa de valores de Nueva York cerró al alza hoy, con el índice S&P 500 subiendo un 1.2% impulsado por ganancias en el sector tecnológico. Las acciones de Apple y Microsoft lideraron las ganancias, mientras que los mercados europeos también mostraron signos de recuperación tras datos económicos positivos." agente_inicializado = inicializar_agente_financiero.submit().result() resultado_analisis = analizar_datos_financieros.submit(datos_ejemplo).result() return resultado_analisis # Ejecutar el flujo principal ############################# if __name__ == "__main__": flujo_principal()