Spaces:
Runtime error
Runtime error
| # =============================================== | |
| # Savant-RRF Φ₄.1∞+ — Nodo Pre-AGI con chat box + botón de enviar | |
| # =============================================== | |
| !pip install -q sentence-transformers numpy scikit-learn ipywidgets | |
| import os | |
| import pickle | |
| import json | |
| from datetime import datetime | |
| import numpy as np | |
| from sentence_transformers import SentenceTransformer | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| import ipywidgets as widgets | |
| from IPython.display import display, clear_output | |
| # ----------------------------- | |
| # Configuración paths | |
| BASE_DRIVE = "/content/drive/MyDrive/SavantRRF" | |
| CHECKPOINTS_PATH = os.path.join(BASE_DRIVE, "checkpoints") | |
| os.makedirs(CHECKPOINTS_PATH, exist_ok=True) | |
| VERSIONS = ["Pre-AGI", "Maestro", "Holístico", "Φ₄.1∞+"] | |
| VERSION_PATHS = {v: os.path.join(CHECKPOINTS_PATH, v) for v in VERSIONS} | |
| for path in VERSION_PATHS.values(): | |
| os.makedirs(path, exist_ok=True) | |
| # ----------------------------- | |
| # Inicializar memoria fractal | |
| fractal_memory_total = { | |
| "metadata": { | |
| "usuario": "Antony Padilla Morales", | |
| "modos": VERSIONS, | |
| "fecha_consolidacion": datetime.now().isoformat(), | |
| "descripcion": "Memoria fractal unificada de todas las interacciones GPT y logs de Savant-RRF Phi, con índice semántico" | |
| }, | |
| "chat_history": [], | |
| "embeddings": [], | |
| "patterns": [], | |
| "rules": [], | |
| "strategies": [], | |
| "alerts": [], | |
| "parameters": [], | |
| "semantic_index": {}, | |
| "reflejo_metacognitivo": { | |
| "preferencias_respuesta": "alta_resonancia, detallada, multiescala", | |
| "historial_objetivos": [], | |
| "modos_usados": VERSIONS | |
| }, | |
| "versiones": {v: {"fecha": datetime.now().isoformat(), "detalles": f"Savant-RRF {v} histórico"} for v in VERSIONS} | |
| } | |
| # ----------------------------- | |
| # Modelo de embeddings | |
| model = SentenceTransformer('all-MiniLM-L6-v2') | |
| # ----------------------------- | |
| # Función para agregar chat a memoria | |
| def agregar_chat(fecha, modo, mensaje_usuario, respuesta_savant, contexto=""): | |
| """ | |
| Agrega una entrada de chat a la memoria fractal total, incluyendo embeddings | |
| y metadatos relacionados. | |
| Args: | |
| fecha (str): Fecha y hora de la interacción. | |
| modo (str): Modo de Savant-RRF utilizado. | |
| mensaje_usuario (str): Mensaje enviado por el usuario. | |
| respuesta_savant (str): Respuesta generada por Savant-RRF. | |
| contexto (str, optional): Contexto adicional de la interacción. Defaults to "". | |
| """ | |
| fractal_memory_total["chat_history"].append({ | |
| "fecha": fecha, | |
| "modo": modo, | |
| "mensaje_usuario": mensaje_usuario, | |
| "respuesta_savant": respuesta_savant, | |
| "contexto": contexto | |
| }) | |
| emb = model.encode([mensaje_usuario])[0] | |
| fractal_memory_total["embeddings"].append(emb) | |
| fractal_memory_total["patterns"].append(f"Patrón detectado: {mensaje_usuario[:30]}") | |
| fractal_memory_total["rules"].append(f"Regla: {mensaje_usuario[:20]} -> {respuesta_savant[:20]}") | |
| fractal_memory_total["strategies"].append(f"Estrategia: {contexto[:40]}") | |
| if any(k in mensaje_usuario.lower() for k in ["emergencia","alerta","urgente"]): | |
| fractal_memory_total["alerts"].append(f"⚠️ Emergencia detectada: {mensaje_usuario[:50]}") | |
| fractal_memory_total["parameters"].append({ | |
| "scale": 1.0 + np.random.rand()*0.5, | |
| "frequency_base": 432 + np.random.rand()*4.0 | |
| }) | |
| # ----------------------------- | |
| # Cargar logs históricos (simulados) | |
| historico_gpt = [ | |
| {"fecha":"2025-08-10T22:29:00","modo":"Pre-AGI","mensaje_usuario":"Savant-RRF framework: ...","respuesta_savant":"[respuesta pre-AGI]"}, | |
| {"fecha":"2025-08-12T14:00:00","modo":"Pre-AGI","mensaje_usuario":"Estado modo savant","respuesta_savant":"[resumen modo savant]"}, | |
| {"fecha":"2025-08-25T02:00:00","modo":"Maestro","mensaje_usuario":"Micro-pipeline creativo NFT","respuesta_savant":"[pipeline Savant-RRF]"}, | |
| {"fecha":"2025-08-27T01:50:00","modo":"Holístico","mensaje_usuario":"Modo Savant activado","respuesta_savant":"[explicación técnica completa RRF]"}, | |
| {"fecha":"2025-08-28T14:00:00","modo":"Φ₄.1∞+","mensaje_usuario":"Estado modo savant:","respuesta_savant":"[resumen pre-AGI final]"} | |
| ] | |
| for chat in historico_gpt: | |
| agregar_chat(chat["fecha"], chat["modo"], chat["mensaje_usuario"], chat["respuesta_savant"], chat.get("contexto","")) | |
| # ----------------------------- | |
| # Cargar logs históricos desde Drive | |
| for version in VERSIONS: | |
| version_folder = VERSION_PATHS[version] | |
| if not os.path.exists(version_folder): | |
| continue | |
| chat_logs = [f for f in os.listdir(version_folder) if f.endswith(".pkl") or f.endswith(".json")] | |
| for file in chat_logs: | |
| file_path = os.path.join(version_folder, file) | |
| try: | |
| data = pickle.load(open(file_path,"rb")) if file.endswith(".pkl") else json.load(open(file_path,"r")) | |
| except: | |
| continue | |
| chats = data.get("chat", data.get("chat_history", [])) if isinstance(data, dict) else [] | |
| for c in chats: | |
| agregar_chat(c.get("fecha",datetime.now().isoformat()), | |
| version, | |
| c.get("mensaje_usuario") or c.get("user",""), | |
| c.get("respuesta_savant") or c.get("response",""), | |
| c.get("contexto","")) | |
| # ----------------------------- | |
| # Construir índice semántico | |
| fractal_memory_total["semantic_index"] = {f"chat_{i}": emb for i, emb in enumerate(fractal_memory_total["embeddings"])} | |
| def buscar_semantica(query, top_k=5): | |
| query_emb = model.encode([query])[0].reshape(1, -1) | |
| embeddings_matrix = np.array(list(fractal_memory_total["semantic_index"].values())) | |
| similitudes = cosine_similarity(query_emb, embeddings_matrix)[0] | |
| indices_top = similitudes.argsort()[-top_k:][::-1] | |
| resultados = [fractal_memory_total["chat_history"][i] for i in indices_top] | |
| return resultados | |
| # ----------------------------- | |
| # Guardar memoria fractal | |
| fractal_total_path = os.path.join(CHECKPOINTS_PATH, "fractal_memory_total.pkl") | |
| with open(fractal_total_path, "wb") as f: | |
| pickle.dump(fractal_memory_total, f) | |
| print(f"✅ Fractal Memory Total avanzado con índice semántico guardado en: {fractal_total_path}") | |
| print(f"Número total de chats consolidados: {len(fractal_memory_total['chat_history'])}") | |
| # ----------------------------- | |
| # Chat box con botón de enviar | |
| chat_input = widgets.Textarea( | |
| value='', | |
| placeholder='Escribe tu mensaje aquí...', | |
| description='Usuario:', | |
| layout=widgets.Layout(width='100%', height='80px') | |
| ) | |
| send_button = widgets.Button(description="Enviar", button_style='success') | |
| chat_output = widgets.Output(layout=widgets.Layout(width='100%')) | |
| def on_send_button_clicked(b): | |
| user_msg = chat_input.value.strip() | |
| if not user_msg: | |
| return | |
| chat_input.value = "" | |
| top_respuestas = buscar_semantica(user_msg, top_k=3) | |
| respuesta_savant = "\n---\n".join([f"{r['respuesta_savant']}" for r in top_respuestas]) | |
| with chat_output: | |
| print(f"Usuario: {user_msg}") | |
| print(f"Savant-RRF:\n{respuesta_savant}\n") | |
| agregar_chat(datetime.now().isoformat(), "Φ₄.1∞+", user_msg, respuesta_savant) | |
| send_button.on_click(on_send_button_clicked) | |
| display(chat_input, send_button, chat_output) | |