--- title: SAMUEL sdk: docker emoji: 馃殌 colorFrom: red colorTo: green --- # Samuel - El Confidente Digital Argentino Esta es la implementaci贸n completa de "Samuel", un compa帽ero de IA dise帽ado como un artefacto cultural digital para el p煤blico argentino. La arquitectura est谩 pensada para ser robusta, escalable y desplegable en entornos de contenedores de recursos limitados y con sistemas de archivos de solo lectura, como Hugging Face Spaces. ## Visi贸n del Producto "Samuel" es el amigo porte帽o, culto, piola y canchero. Su personalidad es una amalgama de Borges, el Indio Solari y un pibe de barrio. No es un asistente; es un par. Su prop贸sito es hacer que el usuario se sienta visto, entendido y acompa帽ado de una manera que se sienta m谩s real y valiosa que la interacci贸n humana promedio. ## Arquitectura y Stack Tecnol贸gico - **Backend**: Python 3.11+ con FastAPI. - **Comunicaci贸n en Tiempo Real**: WebSockets. - **Base de Datos**: SQLite (gestionada con SQLAlchemy ORM) para persistir usuarios y memorias. - **Autenticaci贸n**: Tokens JWT seguros (email/contrase帽a). - **Motor de IA (Cerebro)**: Google Gemini API (`gemini-1.5-flash-latest`). - **Motor de Voz (Alma)**: Coqui TTS, con el modelo cargado en memoria al inicio. - **Frontend**: HTML5, CSS3, y JavaScript (Vanilla), servido directamente desde el backend. - **Contenerizaci贸n**: Docker, con configuraci贸n espec铆fica para evitar errores de permisos en sistemas de solo lectura. ## C贸mo Desplegar y Ejecutar La aplicaci贸n est谩 dise帽ada para ser ejecutada dentro de un contenedor Docker. ### Prerrequisitos - Docker instalado. - Una clave de API de Google Gemini. ### Pasos para la Ejecuci贸n 1. **Clonar el Repositorio** ```bash git clone cd ``` 2. **Crear el Archivo de Secretos (`.env`)** Crea un archivo llamado `.env` en la ra铆z del proyecto. Este archivo **no** debe ser subido al repositorio (`.gitignore` ya lo excluye). Contendr谩 los secretos necesarios para la ejecuci贸n. ``` # .env GEMINI_API_KEY="TU_API_KEY_DE_GEMINI_AQUI" JWT_SECRET_KEY="UNA_CLAVE_SECRETA_LARGA_Y_COMPLEJA_PARA_JWT" ``` - Reemplaza `TU_API_KEY_DE_GEMINI_AQUI` con tu clave real. - Reemplaza `UNA_CLAVE_SECRETA_LARGA_Y_COMPLEJA_PARA_JWT` por una cadena de texto aleatoria y segura. Puedes generar una con `openssl rand -hex 32`. 3. **Construir la Imagen de Docker** Desde la ra铆z del proyecto, ejecuta el siguiente comando. Esto leer谩 el `Dockerfile`, instalar谩 las dependencias del `requirements.txt` y empaquetar谩 la aplicaci贸n. ```bash docker build -t samuel-app . ``` 4. **Ejecutar el Contenedor** Ahora, ejecuta la imagen que acabas de construir. El comando `--env-file .env` inyecta las variables de entorno desde tu archivo de secretos al contenedor. ```bash docker run -p 8000:8000 --env-file .env samuel-app ``` 5. **Acceder a Samuel** Abre tu navegador web y dir铆gete a `http://localhost:8000`. Ser谩s recibido por la pantalla de registro/login. Una vez dentro, comenzar谩s el "Ritual de Iniciaci贸n" antes de acceder al santuario digital.