Personas de IA para Google Chat
Un sistema de roles para un asistente de IA en Google Chat, construido durante mi pasantía en DevFortress. Un comando crea una persona a partir de un código, un nombre, una personalidad y un PDF fuente; mencionas la app en un chat y esa persona responde desde su documento. El uso principal fue el onboarding: un empleado nuevo recorre paso a paso la guía de onboarding de la empresa.
Arquitectura
Una app de Google Chat escrita en Apps Script recibe los mensajes que la mencionan. El modelo principal funciona como orquestador: lee el evento, busca qué persona está activa en ese chat y le pasa el mensaje. Cada persona es un subagente con sus propias instrucciones, personalidad y PDF fuente, y responde con Gemini mediante búsqueda en ese PDF. La persona activa se guarda por chat, así que cada chat conserva la suya.
Decisiones clave
Personas como subagentes, no un prompt reescrito
Convertir al propio asistente en cada personaje haría pelear dos juegos de instrucciones en un mismo prompt. En cambio, el modelo principal sigue siendo el orquestador y cada persona corre como un subagente con su propio contexto. La persona nunca choca con las reglas del asistente, así que no sale de su papel en toda la conversación.
Responder desde el PDF o pasar la pregunta
Una persona responde mediante búsqueda en su propio PDF, no con lo que el modelo ya sabe. Cuando la respuesta no está en el documento, no adivina: manda al empleado nuevo con la persona responsable. En un onboarding, un paso equivocado cuesta más que redirigir la pregunta.
Una persona por chat, que solo se cambia con permiso
La persona activa se guarda en cada chat. Cualquiera en el chat puede hablarle, pero solo los usuarios con permiso pueden cambiarla, y solo hay una activa a la vez. Cada respuesta de un chat sale de un solo rol y un solo documento.
La parte difícil
Hacer esperar a Google Chat sin un error
Google Chat espera que una app responda rápido a un evento, y buscar en el PDF y luego llamar a Gemini podía tardar más. Una respuesta lenta habría aparecido como un error en el chat. Hice que la app confirmara el mensaje de inmediato y mantuviera la conversación abierta, así el usuario veía el indicador de escritura mientras la persona preparaba su respuesta, y la respuesta llegaba en cuanto estaba lista.
Seguridad y rendimiento
- Una persona solo se activa cuando se menciona la app, así que los mensajes normales de un chat compartido nunca disparan ni cambian un rol.
- Cambiar la persona de un chat requiere permiso, y cada persona solo lee el PDF que se le dio.