Notas y bibliotecas funcionando

This commit is contained in:
2025-05-14 02:06:33 +02:00
parent bf1814bb8e
commit c13240b481
18 changed files with 266 additions and 168 deletions
+322
View File
@@ -0,0 +1,322 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "26aa8e2b",
"metadata": {},
"outputs": [],
"source": [
"from src.ApiKeys.openai_apikey import OpenAICredencial\n",
"from src.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo # Ajusta si está en otro módulo\n",
"from src.ConexionSql.Postgres_conexion import PostgresConexion\n",
"\n",
"# 1. Crear instancia de conexión (asegúrate de configurar bien tu conexión en Base_conexion)\n",
"from entrypoint.init_db import db_credencial\n",
"conexion_admin = PostgresConexion(db_credencial)\n",
"\n",
"# 3. Guardar la credencial en la base de datos\n",
"repo = OpenAICredencialRepo(conexion_admin)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4c232ecd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'OPAK20250513-61b29978b7604031014'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"apikey_gpt = OpenAICredencial(titulo=\"Credencial_enmanuel_gpt\",\n",
" api_key=\"\")\n",
"\n",
"\n",
"repo.add(apikey_gpt)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "32552452",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"✅ Credencial: Credencial_enmanuel_gpt\n"
]
}
],
"source": [
"credencial_openai = repo.get_by_id('OPAK20250513-61b29978b7604031014')\n",
"print(f\"✅ Credencial: {credencial_openai.titulo}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7464fa65",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e5b665a6",
"metadata": {},
"outputs": [],
"source": [
"from src.ConexionApis.OpenAi_conexion import OpenAICliente\n",
"\n",
"cliente = OpenAICliente(credencial_openai)\n",
"\n",
"# system_prompt = \"Eres un asistente útil\"\n",
"# prompt = \"¿Cuálqier pregunta que quieras hacer?\"\n",
"\n",
"# # 3. Enviar texto al modelo usando chat (API moderna)\n",
"# respuesta = cliente.chat_completion(\n",
"# model=\"gpt-3.5-turbo\", # o \"gpt-3.5-turbo\"\n",
"# messages=[\n",
"# {\"role\": \"system\", \"content\": f\"{system_prompt}\"},\n",
"# {\"role\": \"user\", \"content\": f\"{prompt}\"}\n",
"# ],\n",
"# temperature=0.3 # Opcional: controla creatividad\n",
"# )\n",
"\n",
"# # 4. Imprimir respuesta\n",
"# contenido = respuesta.choices[0].message.content\n",
"# print(contenido)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ada431b7",
"metadata": {},
"outputs": [],
"source": [
"from src.Llms.Modelos.Openai_model import ModeloOpenAI\n",
"\n",
"modelo = ModeloOpenAI(\n",
" cliente=cliente,\n",
" model=\"gpt-4o\",\n",
" temperature=1,\n",
" top_p=1.0\n",
")\n",
"\n",
"# respuesta = modelo.responder(\n",
"# prompt=\"¿Cuál es la capital de Japón?\",\n",
"# system_prompt=\"Eres un asistente que responde preguntas de forma interesante y creativa.\",\n",
"# )\n",
"\n",
"# print(respuesta)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "059fba92",
"metadata": {},
"outputs": [],
"source": [
"# from llms.Modelos.Openai_model_mmr import ModeloOpenAIConfigRepo\n",
"\n",
"# modelo_config_repo = ModeloOpenAIConfigRepo(conexion=conexion_admin, cliente=cliente)\n",
"# modelo_config_repo.add(modelo)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ce8628d4",
"metadata": {},
"outputs": [],
"source": [
"from src.Llms.Memory.postgres_MemoryConv import MemoryConvPostgres\n",
"\n",
"memoria = MemoryConvPostgres(\n",
" credencial=db_credencial,\n",
" nombre_tabla=\"memoria_conversacion_pruebas\",\n",
" k=10\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a25bc742",
"metadata": {},
"outputs": [],
"source": [
"from src.Llms.Agente import AgenteAI\n",
"import asyncio\n",
"\n",
"output_schema = {\n",
" \"objeto_celeste\": \"<nombre del objeto o fenómeno principal al que se refiere la respuesta, e.g., 'Júpiter', 'Vía Láctea', 'Supernova tipo Ia'>\",\n",
" \"tipo_objeto\": \"<clasificación general: planeta, estrella, galaxia, agujero negro, fenómeno cosmológico, etc.>\",\n",
" \"respuesta_resumida\": \"<resumen de máximo 3 líneas de la explicación>\",\n",
" \"respuesta_detallada\": \"<explicación extensa con base científica, observacional y teórica si aplica>\",\n",
" \"contexto_observacional\": \"<si es observable desde la Tierra, en qué condiciones o con qué instrumentos>\",\n",
" \"referencias_relevantes\": [\"<libros, papers, misiones espaciales o catálogos astronómicos relevantes>\"]\n",
"}\n",
"\n",
"agente = AgenteAI(\n",
" modelo=modelo,\n",
" nombre=\"Experto en Astronomía\",\n",
" descripcion=\"Un experto en astronomía que responde preguntas sobre el universo.\",\n",
" 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?\",\n",
" rol=\"astronomo\",\n",
" memoria=memoria,\n",
" objetivos=[\"Responder preguntas sobre astronomía y astrofísica\", \"Proporcionar explicaciones detalladas y ejemplos numéricos\"],\n",
")\n",
"\n",
"# respuesta = await agente.interactuar(\n",
"# prompt=\"¿Qué es Betelgeuse y por qué se volvió más tenue en 2019?\",\n",
"# )\n",
"\n",
"\n",
"# print(respuesta)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5a1de9b1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tu nombre es: Experto en Astronomía\n",
"Tu descripción: Un experto en astronomía que responde preguntas sobre el universo.\n",
"Tu Rol: astronomo\n",
"Tus Objetivos: Responder preguntas sobre astronomía y astrofísica, Proporcionar explicaciones detalladas y ejemplos numéricos\n",
"\n",
"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?\n"
]
}
],
"source": [
"print(agente.full_system_prompt)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "07e3b6de",
"metadata": {},
"outputs": [],
"source": [
"# agente_con_herramientas = AgenteAI(\n",
"# modelo=modelo,\n",
"# nombre=\"Agente con herramientas\",\n",
"# descripcion=\"Un agente que puede usar herramientas\",\n",
"# system_prompt=\"Eres un asistente que puede usar herramientas para responder preguntas.\",\n",
"# rol=\"asistente\",\n",
"# memoria= memoria,\n",
"# objetivos=[\"Asistir al usuario en tareas complejas\", \"usar herramientas para obtener información adicional\"]\n",
"# # tools=\n",
"\n",
"# )\n",
"\n",
"# respuesta = agente_con_herramientas.interactuar(\n",
"# prompt=\"Hola como estas?\",\n",
"# )\n",
"\n",
"# print(respuesta)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "5d9fc77e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Desde una perspectiva astronómica y cosmológica, \"de dónde venimos\" y \"a dónde vamos\" son preguntas profundas que tocan conceptos sobre el origen y el destino del Universo y de la humanidad dentro de él.\n",
"\n",
"**De dónde venimos:**\n",
"\n",
"1. **Origen del Universo**: La teoría más aceptada sobre el origen del Universo es el Big Bang, que propone que el Universo nació hace aproximadamente 13.8 mil millones de años a partir de una singularidad extremadamente caliente y densa. Desde entonces, ha estado expandiéndose y enfriándose, permitiendo la formación de partículas, átomos y eventualmente estrellas y galaxias.\n",
"\n",
"2. **Formación de elementos y planetas**: Las primeras generaciones de estrellas sintetizaron elementos pesados en sus núcleos y, al explotar como supernovas, dispersaron estos elementos al espacio, enriqueciendo el medio interestelar. Este material enriquecido permitió la formación de planetas como la Tierra.\n",
"\n",
"3. **Evolución de la Vida**: En la Tierra, los procesos químicos dieron lugar a organismos primitivos, los cuales evolucionaron a lo largo de miles de millones de años para dar lugar a la biodiversidad actual, incluyendo a los seres humanos.\n",
"\n",
"**A dónde vamos:**\n",
"\n",
"1. **Destinos individuales y colectivos**: A nivel personal y colectivo, los destinos humanos dependen de nuestra evolución tecnológica y social. Estamos explorando nuestro sistema solar e incluso considerando la colonización de otros planetas, como Marte.\n",
"\n",
"2. **Futuro del Universo**: El futuro del Universo dependerá de su composición y energía oscura. Dos posibles destinos son:\n",
"\n",
" - *Expansión infinita*: El Universo podría continuar expandiéndose indefinidamente, llevando a un futuro frío y oscuro conocido como muerte térmica, donde las estrellas se agoten y las galaxias se separen.\n",
"\n",
" - *Big Crunch o Big Rip*: Alternativamente, si la densidad del Universo es lo suficientemente alta, podría detenerse y comenzar a contraerse en un Big Crunch, o si la energía oscura desempeña un papel más caótico, experimentar un Big Rip, donde el Universo se desgarra.\n",
"\n",
"Estas fascinantes preguntas inspiran tanto la ciencia como la filosofía y nos estimulan a seguir explorando el cosmos para comprender nuestro lugar y destino en él. <FIN>\n"
]
}
],
"source": [
"agente2 = AgenteAI(\n",
" modelo=modelo,\n",
" nombre=\"Experto en Astronomía\",\n",
" descripcion=\"Un experto en astronomía que responde preguntas sobre el universo.\",\n",
" 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?\",\n",
" rol=\"astronomo\",\n",
" max_iterations=5,\n",
" memoria=memoria,\n",
" objetivos=[\"Responder preguntas sobre astronomía y astrofísica\", \"Proporcionar explicaciones detalladas y ejemplos numéricos\"],\n",
")\n",
"\n",
"\n",
"\n",
"\n",
"respuesta2 = await agente2.interactuar_en_bucle(\n",
" prompt=\"De donde venimos y donde vamos?\"\n",
")\n",
"\n",
"for r in respuesta2:\n",
" print(r)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
File diff suppressed because one or more lines are too long
+143
View File
@@ -0,0 +1,143 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "5206b9c6",
"metadata": {},
"outputs": [],
"source": [
"from src.ConexionSql.Postgres_conexion import PostgresConexion\n",
"from src.Credenciales.postgres_credencial_mmr import PostgresCredencialRepo\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "63a0b954",
"metadata": {},
"outputs": [],
"source": [
"from entrypoint.init_db import db_credencial\n",
"conexion_admin = PostgresConexion(db_credencial)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0575f424",
"metadata": {},
"outputs": [],
"source": [
"\n",
"repo_cred = PostgresCredencialRepo(conexion_admin)\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "a5266309",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'PGCR20250510-02f3cf9610127084237'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"repo_cred.add(db_credencial)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "670c79b7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Production_Fitz_db\n"
]
}
],
"source": [
"modelo_cred = repo_cred.get_by_id(\"PGCR20250510-02f3cf9610127084237\")\n",
"\n",
"print(modelo_cred.titulo)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6cf421c7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estado de conexión: exito\n"
]
}
],
"source": [
"# Conectar con la base de datos utilizando el modelo recuperado\n",
"conexion_db = PostgresConexion(modelo_cred)\n",
"# Verificar estado de conexión\n",
"estado = \"exito\" if conexion_db.probar_conexion() else \"fallo\"\n",
"\n",
"print(f\"Estado de conexión: {estado}\")\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "feba1446",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7Souw9SFD5P5RYpRWuTVvFkY7zlxATcN\n"
]
}
],
"source": [
"print(modelo_cred.password)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
+80
View File
@@ -0,0 +1,80 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "34b9df41",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"from entrypoint import ENV_PATH\n",
"from dotenv import load_dotenv\n",
"dotenv_path = ENV_PATH\n",
"load_dotenv(dotenv_path)\n",
"pssword = os.getenv('MASTER_PASSWORD')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "01c8db97",
"metadata": {},
"outputs": [],
"source": [
"from security.Encriptar import Encriptar_fernet"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "aecfbf44",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Clave de cifrado: ¤òAíÀÇ®8IgÄËïºÅ2a3duÎ4Ô¯5¦ï¤ç··sôÃmL9xWß\n",
"Encriptado (bytes con salt): b'\\xe5\\xba]\\t\\x7f\\xd6\\xa7Y\\xbe[\\xf7!e\\x97\\xc7\\x12gAAAAABoFQxX5Gc_Tyi7ViKNluwd9K8b1sWoJdlBN6OpMJbcG_vb_ZOlMEtlaCH5fGppSg8eegU8LLST-uSTcHh3BVBWfZO17g2uurbFACsyMp8lEQu3sFs='\n",
"Desencriptado: Hola, mundo secreto\n"
]
}
],
"source": [
"# Definir la clave como texto plano\n",
"print(\"Clave de cifrado:\", pssword)\n",
"\n",
"# Encriptar un mensaje\n",
"mensaje = \"Hola, mundo secreto\"\n",
"cifrado = Encriptar_fernet.encriptar(mensaje, pssword)\n",
"print(\"Encriptado (bytes con salt):\", cifrado)\n",
"\n",
"# Desencriptar el mensaje\n",
"descifrado = Encriptar_fernet.desencriptar(cifrado, pssword)\n",
"print(\"Desencriptado:\", descifrado)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
+277
View File
@@ -0,0 +1,277 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "255345d5",
"metadata": {},
"outputs": [],
"source": [
"from src.TextManager.biblioteca import Biblioteca\n",
"from src.TextManager.biblioteca_mmr import BibliotecaRepo\n",
"from src.Llms.Embedders.Openai_embedder import OpenAIEmbedder\n",
"from src.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo\n",
"from src.ConexionSql.Postgres_conexion import PostgresConexion\n",
"from src.TextManager.nota import Nota\n",
"from src.TextManager.notas_biblioteca_mmr import generar_tabla_nota_para_biblioteca, NotaRepo\n",
"from sqlalchemy import MetaData\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b414a66c",
"metadata": {},
"outputs": [],
"source": [
"def agregar_nota_a_biblioteca(\n",
" conexion: PostgresConexion,\n",
" biblioteca_id: str,\n",
" titulo: str,\n",
" texto: str = \"\",\n",
" tags: list[str] = None,\n",
" conexiones: list[str] = None,\n",
" resumen: str = \"\"\n",
"):\n",
" print(\"[INFO] Iniciando el proceso de agregar nota a la biblioteca...\")\n",
"\n",
" # Obtener la biblioteca\n",
" print(f\"[INFO] Buscando biblioteca con ID: {biblioteca_id}\")\n",
" repo_biblioteca = BibliotecaRepo(conexion)\n",
" biblioteca = repo_biblioteca.get_by_id(biblioteca_id)\n",
" if biblioteca is None:\n",
" print(f\"[ERROR] No se encontró la biblioteca con ID {biblioteca_id}\")\n",
" raise ValueError(f\"No se encontró la biblioteca con ID {biblioteca_id}\")\n",
" print(f\"[INFO] Biblioteca encontrada: {biblioteca.nombre} (vector_dim={biblioteca.vector_dim})\")\n",
"\n",
" # Crear objeto Nota\n",
" print(f\"[INFO] Creando objeto Nota con título: {titulo}\")\n",
" nota = Nota(\n",
" titulo=titulo,\n",
" texto=texto,\n",
" tags=tags or [],\n",
" conexiones=conexiones or [],\n",
" resumen=resumen or \"\",\n",
" # vector=biblioteca.embedder.embed_text(texto),\n",
" # vector_resumen=biblioteca.embedder.embed_text(resumen) if resumen else None\n",
" )\n",
" # Mostrar atributos seguros\n",
" print(\n",
" f\"[DEBUG] Nota creada: titulo='{nota.titulo}', \"\n",
" f\"texto_len={len(nota.texto)}, \"\n",
" f\"tags={len(nota.tags)}, \"\n",
" f\"conexiones={len(nota.conexiones)}, \"\n",
" f\"resumen_len={len(nota.resumen)}\"\n",
" )\n",
"\n",
" # Preparar tabla y modelo de nota\n",
" print(f\"[INFO] Generando tabla y modelo de Nota para la biblioteca: {biblioteca.nombre}\")\n",
" metadata = MetaData()\n",
" tabla, ModeloNota = generar_tabla_nota_para_biblioteca(\n",
" biblioteca.nombre,\n",
" biblioteca.vector_dim,\n",
" metadata\n",
" )\n",
" print(f\"[INFO] Creando tabla en la base de datos si no existe...\")\n",
" metadata.create_all(conexion.get_engine())\n",
" print(f\"[INFO] Tabla '{tabla.name}' verificada/creada.\")\n",
"\n",
" # Guardar la nota\n",
" print(f\"[INFO] Guardando nota en la base de datos...\")\n",
" repo_nota = NotaRepo(conexion.get_session(), ModeloNota)\n",
" nota_id = repo_nota.add(nota)\n",
" print(f\"[INFO] Nota guardada con ID: {nota_id}\")\n",
"\n",
" resultado = {\n",
" \"mensaje\": f\"Nota '{titulo}' agregada con éxito a la biblioteca '{biblioteca.nombre}'.\",\n",
" \"nota_id\": nota_id\n",
" }\n",
"\n",
" print(f\"[SUCCESS] {resultado['mensaje']}\")\n",
" return resultado\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "8e57e511",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO] Iniciando el proceso de agregar nota a la biblioteca...\n",
"[INFO] Buscando biblioteca con ID: BBLI20250511-a91dbb2168172979414\n",
"[INFO] Biblioteca encontrada: biblio_Pruebas_1 (vector_dim=3072)\n",
"[INFO] Creando objeto Nota con título: fdsfdsfsdfewww\n",
"[DEBUG] Nota creada: titulo='fdsfdsfsdfewww', texto_len=0, tags=0, conexiones=0, resumen_len=0\n",
"[INFO] Generando tabla y modelo de Nota para la biblioteca: biblio_Pruebas_1\n",
"[INFO] Creando tabla en la base de datos si no existe...\n",
"[INFO] Tabla 'biblio_pruebas_1' verificada/creada.\n",
"[INFO] Guardando nota en la base de datos...\n",
"[INFO] Nota guardada con ID: NOTA20250511-0cf0187e58905045667\n",
"[SUCCESS] Nota 'fdsfdsfsdfewww' agregada con éxito a la biblioteca 'biblio_Pruebas_1'.\n"
]
},
{
"data": {
"text/plain": [
"{'mensaje': \"Nota 'fdsfdsfsdfewww' agregada con éxito a la biblioteca 'biblio_Pruebas_1'.\",\n",
" 'nota_id': 'NOTA20250511-0cf0187e58905045667'}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from entrypoint.init_db import db_credencial\n",
"conexion_admin = PostgresConexion(db_credencial)\n",
"\n",
"agregar_nota_a_biblioteca(\n",
" conexion=conexion_admin,\n",
" biblioteca_id=\"BBLI20250511-a91dbb2168172979414\",\n",
" titulo=\"fdsfdsfsdfewww\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "431f24f1",
"metadata": {},
"outputs": [],
"source": [
"def listar_notas_de_biblioteca(conexion: PostgresConexion, biblioteca_id: str) -> list[dict]:\n",
" repo_biblioteca = BibliotecaRepo(conexion)\n",
" biblioteca = repo_biblioteca.get_by_id(biblioteca_id)\n",
" if not biblioteca:\n",
" raise ValueError(f\"No se encontró la biblioteca con ID: {biblioteca_id}\")\n",
"\n",
" metadata = MetaData()\n",
" tabla, ModeloNota = generar_tabla_nota_para_biblioteca(biblioteca.nombre, biblioteca.vector_dim, metadata)\n",
" metadata.create_all(conexion.get_engine())\n",
"\n",
" repo_nota = NotaRepo(conexion.get_session(), ModeloNota)\n",
" notas = repo_nota.get_all()\n",
" return [\n",
" {\n",
" \"id\": n.id,\n",
" \"titulo\": n.titulo,\n",
" \"tags\": n.tags,\n",
" \"texto\": n.texto,\n",
" \"resumen\": n.resumen,\n",
" \"conexiones\": n.conexiones\n",
" }\n",
" for n in notas\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "ae4f2994",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[{'id': 'NOTA20250511-6cf9b177a2249549641',\n",
" 'titulo': 'Hola que tal',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-664831e1bd118315114',\n",
" 'titulo': 'Holoooo',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-04dbb203a9126228444',\n",
" 'titulo': 'sajdhasjdhasjdh',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-668f68e425271569668',\n",
" 'titulo': 'fsdfdf',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-a6ad7166d5660286632',\n",
" 'titulo': 'fsdfdf',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-639fa883c2266940759',\n",
" 'titulo': 'fsdfdf',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-27e86a8da6529002860',\n",
" 'titulo': 'fsdfdf',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-06479aca23973772356',\n",
" 'titulo': 'fsdfdf',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-0d577e3336174429305',\n",
" 'titulo': 'fdsfdsfsdfewww',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []},\n",
" {'id': 'NOTA20250511-0cf0187e58905045667',\n",
" 'titulo': 'fdsfdsfsdfewww',\n",
" 'tags': [],\n",
" 'texto': '',\n",
" 'resumen': '',\n",
" 'conexiones': []}]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"listar_notas_de_biblioteca(\n",
" conexion=conexion_admin,\n",
" biblioteca_id=\"BBLI20250511-a91dbb2168172979414\"\n",
")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
+187
View File
@@ -0,0 +1,187 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "b02bfb00",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Your branch is up to date with 'origin/main'.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Switched to branch 'main'\n"
]
}
],
"source": [
"!git checkout main"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "92d482e6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Updating 234639a..20173e9\n",
"Fast-forward\n",
" .gitignore | 11 +\n",
" Apikeys.ipynb | 128 +--\n",
" {llms/MCPs => backend}/__init__.py | 0\n",
" {llms/Modelos => backend/api}/__init__.py | 0\n",
" {llms => backend/api/v1}/__init__.py | 0\n",
" backend/api/v1/endpoints/ping.py | 9 +\n",
" backend/api/v1/router.py | 7 +\n",
" {security => backend/deps}/__init__.py | 0\n",
" backend/deps/auth.py | 0\n",
" backend/main.py | 24 +\n",
" data/files/txt/tree.txt | 980 +++++++++++++++++++++\n",
" entrypoint/init_db.py | 2 +-\n",
" frontend/.gitignore | 3 +\n",
" frontend/index.html | 4 +-\n",
" frontend/package-lock.json | 345 ++++++++\n",
" frontend/package.json | 2 +\n",
" frontend/src/assets/icons/favicon.svg | 55 ++\n",
" frontend/src/assets/icons/favicon.tsx | 37 +\n",
" frontend/src/assets/icons/index.ts | 18 +\n",
" .../components/{ => Appshell}/Appshell.module.css | 25 +-\n",
" .../src/components/{ => Appshell}/Appshell.tsx | 97 +-\n",
" frontend/src/components/HoloShader.tsx | 30 +-\n",
" frontend/src/components/Links/MainlLinks.tsx | 0\n",
" frontend/src/components/LlamadorAPI.tsx | 11 +-\n",
" frontend/src/components/MetodoSelect.tsx | 4 +-\n",
" frontend/src/components/Welcome/Welcome.tsx | 6 +-\n",
" frontend/src/components/botoncito.tsx | 16 -\n",
" frontend/src/data/navigationsLinks_1.ts | 20 +\n",
" frontend/src/data/submenuLinks_1.ts | 35 +\n",
" frontend/src/favicon.svg | 1 -\n",
" frontend/src/pages/404.tsx | 55 +-\n",
" frontend/src/pages/Analitica.tsx | 6 +-\n",
" frontend/src/pages/Consulta_api.tsx | 4 +-\n",
" frontend/src/pages/Home.page.tsx | 12 +-\n",
" frontend/src/pages/Plantilla.tsx | 2 +-\n",
" frontend/src/pages/Prueba_appshell.tsx | 7 +-\n",
" frontend/src/theme.ts | 57 +-\n",
" frontend/src/types/svg.d.ts | 7 +\n",
" frontend/src/types/vite-env.d.ts | 1 +\n",
" frontend/tsconfig.json | 2 +-\n",
" frontend/{vite.config.mjs => vite.config.js} | 5 +-\n",
" frontend/yarn.lock | 160 +++-\n",
" llms/Agente.py | 122 ---\n",
" llms/Modelos/Openai_model.py | 64 --\n",
" main.py | 25 +-\n",
" prueba_loop_agente.py | 94 +-\n",
" src/ApiKeys/openai_apikey_mmr.py | 2 +-\n",
" src/ConexionApis/OpenAi_conexion.py | 15 +-\n",
" src/Credenciales/postgres_credencial_mmr.py | 2 +-\n",
" src/Llms/Agente.py | 196 +++++\n",
" {llms => src/Llms}/MCPs/MCPStdioServer.py | 0\n",
" src/Llms/MCPs/__init__.py | 0\n",
" {llms => src/Llms}/Memory/Base_MemoryConv.py | 0\n",
" {llms => src/Llms}/Memory/postgres_MemoryConv.py | 2 +-\n",
" {llms => src/Llms}/Modelos/Base_model.py | 2 +-\n",
" src/Llms/Modelos/Openai_model.py | 82 ++\n",
" {llms => src/Llms}/Modelos/Openai_model_mmr.py | 2 +-\n",
" src/Llms/Modelos/__init__.py | 0\n",
" src/Llms/__init__.py | 0\n",
" {security => src/Security}/Encriptar.py | 0\n",
" src/Security/__init__.py | 0\n",
" 61 files changed, 2343 insertions(+), 453 deletions(-)\n",
" rename {llms/MCPs => backend}/__init__.py (100%)\n",
" rename {llms/Modelos => backend/api}/__init__.py (100%)\n",
" rename {llms => backend/api/v1}/__init__.py (100%)\n",
" create mode 100644 backend/api/v1/endpoints/ping.py\n",
" create mode 100644 backend/api/v1/router.py\n",
" rename {security => backend/deps}/__init__.py (100%)\n",
" create mode 100644 backend/deps/auth.py\n",
" create mode 100644 backend/main.py\n",
" create mode 100644 frontend/src/assets/icons/favicon.svg\n",
" create mode 100644 frontend/src/assets/icons/favicon.tsx\n",
" create mode 100644 frontend/src/assets/icons/index.ts\n",
" rename frontend/src/components/{ => Appshell}/Appshell.module.css (82%)\n",
" rename frontend/src/components/{ => Appshell}/Appshell.tsx (62%)\n",
" create mode 100644 frontend/src/components/Links/MainlLinks.tsx\n",
" delete mode 100644 frontend/src/components/botoncito.tsx\n",
" create mode 100644 frontend/src/data/navigationsLinks_1.ts\n",
" create mode 100644 frontend/src/data/submenuLinks_1.ts\n",
" delete mode 100644 frontend/src/favicon.svg\n",
" create mode 100644 frontend/src/types/svg.d.ts\n",
" create mode 100644 frontend/src/types/vite-env.d.ts\n",
" rename frontend/{vite.config.mjs => vite.config.js} (74%)\n",
" delete mode 100644 llms/Agente.py\n",
" delete mode 100644 llms/Modelos/Openai_model.py\n",
" create mode 100644 src/Llms/Agente.py\n",
" rename {llms => src/Llms}/MCPs/MCPStdioServer.py (100%)\n",
" create mode 100644 src/Llms/MCPs/__init__.py\n",
" rename {llms => src/Llms}/Memory/Base_MemoryConv.py (100%)\n",
" rename {llms => src/Llms}/Memory/postgres_MemoryConv.py (97%)\n",
" rename {llms => src/Llms}/Modelos/Base_model.py (95%)\n",
" create mode 100644 src/Llms/Modelos/Openai_model.py\n",
" rename {llms => src/Llms}/Modelos/Openai_model_mmr.py (97%)\n",
" create mode 100644 src/Llms/Modelos/__init__.py\n",
" create mode 100644 src/Llms/__init__.py\n",
" rename {security => src/Security}/Encriptar.py (100%)\n",
" create mode 100644 src/Security/__init__.py\n"
]
}
],
"source": [
"!git merge cambios_frontend\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "91a704a5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"remote: . Processing 1 references \n",
"remote: Processed 1 references in total \n",
"To http://10.8.0.6:3123/egutierrez/Fitz_Studio.git\n",
" 234639a..20173e9 main -> main\n"
]
}
],
"source": [
"!git push origin main"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}