Implementa un agente financiero que consulta información sobre la inflación en Argentina utilizando OpenAI y herramientas de Wikipedia y Yahoo Finance. Se define un flujo de trabajo en Prefect para gestionar la ejecución y el registro de mensajes enviados al modelo.

This commit is contained in:
2025-10-05 22:00:40 +02:00
commit f1e456ea05
81 changed files with 21591 additions and 0 deletions
+76
View File
@@ -0,0 +1,76 @@
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")
prefect_logger = get_run_logger()
# Definir tareas ###############################################
@task(name="Inicializar agente financiero", log_prints=True)
def inicializar_agente_financiero():
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()