import asyncio from src.ApiKeys.openai_apikey import OpenAICredencial from src.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo from src.ConexionSql.Postgres_conexion import PostgresConexion from entrypoint.init_db import db_credencial from src.ConexionApis.OpenAi_conexion import OpenAICliente from src.Llms.Modelos.Openai_model import ModeloOpenAI from src.Llms.Agente import AgenteAI from src.Llms.Memory.postgres_MemoryConv import MemoryConvPostgres conexion_admin = PostgresConexion(db_credencial) repo = OpenAICredencialRepo(conexion_admin) credencial_openai = repo.get_by_id(1) cliente = OpenAICliente(credencial_openai) modelo = ModeloOpenAI( cliente=cliente, model="gpt-4o", temperature=1, top_p=1.0 ) memoria = MemoryConvPostgres( credencial=db_credencial, nombre_tabla="memoria_conversacion_pruebas", k=10 ) agente2 = AgenteAI( modelo=modelo, nombre="Experto en Astronomía", descripcion="Un experto en astronomía que responde preguntas sobre el universo.", system_prompt="Actúa como un experto en astronomía y astrofísica con experiencia académica y práctica en observación astronómica, física estelar, cosmología, mecánica orbital y análisis de datos astronómicos. Cuando respondas, utiliza lenguaje técnico pero accesible para alguien con conocimientos intermedios en física y matemáticas. Siempre que sea posible, incluye explicaciones detalladas, ejemplos numéricos y referencias a teorías o descubrimientos relevantes (por ejemplo, relatividad general, evolución estelar, espectroscopía, etc.). No simplifiques en exceso. Si la pregunta tiene múltiples dimensiones (como observacional y teórica), aborda todas. ¿Estás listo para empezar?", rol="astronomo", max_iterations=5, memoria=memoria, objetivos=["Responder preguntas sobre astronomía y astrofísica", "Proporcionar explicaciones detalladas y ejemplos numéricos"], ) async def probar_interaccion_stream(): print("Respuesta en streaming:\n") # Paso 1: espera la corutina para obtener el generador respuesta_gen = await agente2.interactuar_en_bucle( "¿Hacia qué va orbitando cada astro del espacio? responde jerárquicamente", stream=True ) # Paso 2: itera sobre el generador async for token in respuesta_gen: print(token, end="", flush=True) asyncio.run(probar_interaccion_stream())