fundacionamorcontdah/TDAH_chatbot
1
GuIA - Chatbot de Apoyo para TDAH
Descripción
GuIA es un chatbot conversacional diseñado para apoyar a la red de cuidado (padres, educadores, amigos) de niños con TDAH. Proporciona orientación, sugerencias y consejos de manera empática y profesional, y almacena automáticamente información estructurada sobre cada interacción.
Características
- 🤖 Chat conversacional con IA (Google Gemini)
- 🔐 Sistema de autenticación seguro
- 📊 Análisis automático de conversaciones
- 💾 Persistencia en Google Sheets
- 🎯 Extracción de información estructurada
- 🚀 Despliegue en Hugging Face Spaces
Tecnologías
- Frontend/Backend: Streamlit
- LLM: Google Gemini (via langchain-google-genai)
- Almacenamiento: Google Sheets (gspread)
- Autenticación: Google Service Account
- Python: 3.12+
Instalación Local
Requisitos Previos
- Python 3.12+
- Cuenta de Google Cloud con API habilitada
- Service Account con permisos para Google Sheets
- API Key de Google Gemini
Pasos
- Clonar el repositorio:
git clone <repo-url>
cd TDAH_chatbot- Crear entorno virtual:
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate- Instalar dependencias:
pip install -r requirements.txt- Configurar variables de ambiente:
Crear archivo .env en la raíz:
GOOGLE_API_KEY=tu_api_key_de_gemini
GOOGLE_APPLICATION_CREDENTIALS_JSON='{"type":"service_account","project_id":"...","private_key":"...","client_email":"..."}'
GOOGLE_SHEET_ID=id_del_spreadsheet
USER_CREDENTIALS='{"usuario1": "password1", "usuario2": "password2"}'- Ejecutar la aplicación:
streamlit run src/streamlit_app.pyDespliegue en Hugging Face Spaces
Paso 1: Crear un Space
- Ve a https://huggingface.co/spaces
- Click en "Create new Space"
- Selecciona SDK: Docker (ya configurado)
- Nombra tu space (ej:
guia-chatbot)
Paso 2: Configurar Secrets
En la configuración del Space, agrega estos secrets:
GOOGLE_API_KEY = tu_api_key
GOOGLE_APPLICATION_CREDENTIALS_JSON = {"type":"service_account",...}
GOOGLE_SHEET_ID = id_del_sheet
USER_CREDENTIALS = {"user1": "pass1", "user2": "pass2"}Paso 3: Push del Código
git remote add hf https://huggingface.co/spaces/<tu-username>/<space-name>
git push hf mainPaso 4: Verificar Despliegue
Espera a que el Space se construya y verifica que funcione correctamente.
Estructura del Proyecto
TDAH_chatbot/
├── src/
│ └── streamlit_app.py # Aplicación principal
├── utils/
│ ├── __init__.py
│ ├── auth.py # Autenticación
│ ├── chat_manager.py # Gestión de chat
│ ├── sheets_manager.py # Google Sheets
│ └── data_extractor.py # Extracción de datos
├── requirements.txt # Dependencias
├── .gitignore # Archivos ignorados por git
├── .dockerignore # Archivos ignorados por Docker
├── Dockerfile # Configuración Docker
├── PRP.md # Plan de implementación
└── README.md # DocumentaciónUso
1. Login
Ingresa con tus credenciales configuradas en USER_CREDENTIALS.
2. Conversar con GuIA
- Escribe tus mensajes en el chat
- GuIA responderá de manera empática y profesional
- Comparte información sobre:
- Tu rol (padre, educador, amigo)
- Situaciones específicas
- Pilares de interés (Psiconutrición, Conductual, etc.)
- Frecuencia e intensidad de episodios
3. Finalizar Conversación
- Click en "Finalizar Conversación"
- El sistema extraerá automáticamente información estructurada
- Los datos se guardarán en Google Sheets
- Puedes iniciar una nueva conversación o cerrar sesión
Hojas de Google Sheets
AnalisisIA (15 columnas)
Historial (5 columnas)
Testing
Ejecutar todos los tests:
pytest tests/ -vCon coverage:
pytest tests/ -v --cov=utils --cov-report=term-missingTroubleshooting
Error de autenticación con Google Sheets
- Verifica que el JSON del Service Account sea válido
- Confirma que el Service Account tenga permisos en el Sheet
- Verifica que las APIs estén habilitadas en Google Cloud
Error de API de Gemini
- Verifica que la API Key sea válida
- Confirma que no hayas excedido el límite de requests
- Verifica que el modelo
gemini-1.5-proesté disponible
Problemas con Secrets en Hugging Face
- Asegúrate de que los secrets estén en formato correcto
- Verifica que no haya caracteres especiales sin escapar
- Reinicia el Space después de cambiar secrets
Contribución
Para contribuir al proyecto:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Crea un Pull Request
Variables de Ambiente Requeridas
GOOGLE_API_KEY: API Key de Google GeminiGOOGLE_APPLICATION_CREDENTIALS_JSON: JSON completo del Service AccountGOOGLE_SHEET_ID: ID del spreadsheet de Google SheetsUSER_CREDENTIALS: JSON con diccionario de usuarios y contraseñas
Licencia
MIT License
Contacto
Para soporte o consultas sobre este proyecto, por favor contactar al administrador del sistema.
