b4ca0cf600
- Removed unused security module and updated import paths. - Enhanced OpenAI client with streaming capabilities for chat completions. - Added new backend API endpoints for health check (ping). - Established a new FastAPI application with CORS configuration. - Created a new Appshell component for the frontend with navigation links. - Integrated SVG icons and improved styling for the Appshell component. - Implemented memory management for conversation history using PostgreSQL. - Developed abstract classes for AI agents and models, with OpenAI integration. - Added encryption utilities for secure data handling.
60 lines
2.4 KiB
Python
60 lines
2.4 KiB
Python
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())
|