Volver al inicio

Cómo está hecha AIDA

Esta página es la versión técnica del proyecto: arquitectura, modelos y las decisiones que tomamos por el camino. Si lo que buscabas es qué hace AIDA y cómo se usa, con la página principal alcanza y sobra.

Trabajo final del Samsung Innovation Campus 2025

Arquitectura

Un núcleo delgado y servicios independientes

AIDA no es un único script grande. El núcleo recibe el mensaje, decide de qué se trata y lo deriva al servicio que corresponde. Cada servicio se puede mejorar, reemplazar o apagar sin tocar el resto.

Cómo viaja un mensaje

Del chat de la persona al servicio correspondiente, y de vuelta — en un solo recorrido.

Persona usuaria texto · audio · foto desde su chat Telegram Núcleo AIDA Clasificador de intención Perfil y memoria Base de conocimiento 🎙️ Voz — Whisper / Edge TTS 👁️ Visión — Qwen 3.6 💬 Diálogo — gpt-oss 120B ❤️ Emociones — RoBERTuito 🔔 Alertas al contacto Firestore perfiles y sesiones respuesta

Stack

Qué usa cada pieza

Python en el núcleo y modelos alojados para todo lo pesado: el objetivo era que el asistente respondiera rápido sin necesitar una máquina potente detrás.

Bot framework

pyTelegramBotAPI

Handlers separados por tipo de mensaje: texto, voz, imagen y comandos.

Conversación

gpt-oss 120B vía Groq

Modelo principal para entender intenciones complejas y sostener el diálogo.

Clasificación

gpt-oss 20B

Modelo liviano y barato dedicado solo a decidir qué servicio atiende el mensaje.

Voz a texto

openai-whisper

Transcripción de notas de voz, con buen desempeño en acentos regionales.

Texto a voz

edge-tts

Síntesis natural y multiidioma, con varias voces para elegir. Requiere FFmpeg.

Visión

Qwen 3.6 27B

Descripción de imágenes, OCR y detección de phishing en capturas de pantalla.

Sentimiento

pysentimiento · RoBERTuito

Modelo entrenado en español rioplatense, no una traducción de uno en inglés.

Audio

pydub

Conversión de los formatos de audio que entrega la API de mensajería.

Idioma

langdetect

Detección del idioma del mensaje para decidir si hace falta traducir la respuesta.

Datos

firebase-admin · Firestore

Perfiles y sesiones en la nube, con un archivo JSON local como respaldo.

Alertas

Webhook de Make.com

Disparo del correo al contacto de confianza sin montar un servidor de mail.

Configuración

python-dotenv

Todas las claves y modelos salen de variables de entorno, nunca del código.

Decisiones de diseño

Por qué está hecho así

Casi todas las decisiones salieron de la misma pregunta: ¿esto hace que a una persona de 75 años le resulte más fácil, o solo hace que el proyecto se vea mejor?

Vivir dentro de una app que ya usan

Una app propia habría significado enseñar a instalarla, actualizarla y entrar. Meterse en un chat que la persona ya tiene abierto elimina toda esa barrera de una sola vez.

Base de conocimiento antes que el modelo

Las preguntas más frecuentes se responden desde un dataset local. Es instantáneo, no falla si se cae la API y garantiza que la respuesta a «¿cómo agrando la letra?» sea siempre la buena.

Dos modelos, no uno

Clasificar la intención con un modelo chico y responder con uno grande abarata cada mensaje y baja la latencia. Lo que se nota del otro lado es que AIDA contesta rápido.

El sentimiento cambia el tono, no la respuesta

Si el análisis detecta frustración o tristeza, se ajusta cómo se dice la respuesta, no qué se responde. La idea es acompañar, no cambiar la información según el humor.

Servicios reemplazables

Cada capacidad vive en su propio módulo con una interfaz mínima. Cambiar el proveedor de voz o el modelo de visión es tocar un archivo, no reescribir el bot.

Respaldo local siempre

Si no hay credenciales de Firebase, los perfiles se guardan en un JSON local. El asistente arranca igual, y eso hace que probar y desarrollar no dependa de la nube.

Honestidad técnica

Limitaciones conocidas

  • Los modelos de lenguaje se equivocan. Las respuestas de AIDA son orientativas y así se comunican.
  • La detección de fraudes ayuda a sospechar, pero no reemplaza verificar por un canal oficial.
  • La transcripción de voz pierde precisión con ruido de fondo o audios muy largos.
  • El análisis de sentimiento trabaja sobre el texto: no detecta el tono real de la voz.
  • El asistente depende de servicios externos; si alguno se cae, esa capacidad queda fuera hasta que vuelva.

El repositorio del bot es privado por ahora, así que no hay código público para revisar. Si te interesa el detalle de la implementación o querés conversar sobre el proyecto, escribinos y con gusto lo charlamos.

aidaassistantbot@gmail.com