CoolFace
Apppublic

fundacionamorcontdah/TDAH_chatbot

sourceHugging Facemitupdated 10mo agoView on Hugging Face
1likes
App README

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

  1. 1.Clonar el repositorio:
bash
git clone <repo-url>
cd TDAH_chatbot
  1. 1.Crear entorno virtual:
bash
python -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate
  1. 1.Instalar dependencias:
bash
pip install -r requirements.txt
  1. 1.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"}'
  1. 1.Ejecutar la aplicación:
bash
streamlit run src/streamlit_app.py

Despliegue en Hugging Face Spaces

Paso 1: Crear un Space

  1. 1.Ve a https://huggingface.co/spaces
  2. 2.Click en "Create new Space"
  3. 3.Selecciona SDK: Docker (ya configurado)
  4. 4.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

bash
git remote add hf https://huggingface.co/spaces/<tu-username>/<space-name>
git push hf main

Paso 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ón

Uso

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)

ColumnaTipoDescripción
ID_InteracciónStringID único de la interacción
id_usuarioStringID del usuario
RolStringRol del participante
ParticipanteStringNombre del contacto
PilarStringPilar discutido
Trigger_EpisodioStringCausa del episodio
Frecuencia_SemanalIntegerFrecuencia semanal
Intensidad_0a10IntegerIntensidad (0-10)
Notas_ConversaciónStringResumen textual
Sentimiento_IAStringPositivo/Negativo/Neutro
Insight_AutomáticoStringHallazgo clave
Correlación_DetectadaStringCorrelaciones
Sugerencia_IAStringRecomendación
Outcome_CuantitativoStringResultado cuantitativo
Adherencia_%StringPorcentaje de adherencia

Historial (5 columnas)

ColumnaTipoDescripción
id_usuarioStringID del usuario
id_historialStringUUID único
tipo_eventoStringTipo de evento
descripcionStringDescripción breve
id_redStringID de la red

Testing

Ejecutar todos los tests:

bash
pytest tests/ -v

Con coverage:

bash
pytest tests/ -v --cov=utils --cov-report=term-missing

Troubleshooting

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-pro esté 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:

  1. 1.Fork el repositorio
  2. 2.Crea una rama para tu feature (git checkout -b feature/nueva-funcionalidad)
  3. 3.Commit tus cambios (git commit -am 'Agregar nueva funcionalidad')
  4. 4.Push a la rama (git push origin feature/nueva-funcionalidad)
  5. 5.Crea un Pull Request

Variables de Ambiente Requeridas

  • —GOOGLE_API_KEY: API Key de Google Gemini
  • —GOOGLE_APPLICATION_CREDENTIALS_JSON: JSON completo del Service Account
  • —GOOGLE_SHEET_ID: ID del spreadsheet de Google Sheets
  • —USER_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.