Saltar al contenido principal

🟢 Chatbot + Base de Conocimiento

Los avances recientes en modelos de lenguaje grandes (LLMs, por sus siglas en inglés) como GPT-3 y ChatGPT han creado mucha expectación en la industria tecnológica. Estos modelos son increíblemente poderosos para la generación de contenido, pero también tienen algunas desventajas, como el sesgo1 y las alucinaciones2. Una área en la que estos LLMs pueden ser particularmente útiles es en el desarrollo de chatbots.

Chatbots basados en Intención​

Los chatbots tradicionales suelen estar basados en intenciones, lo que significa que son diseñados para responder a intenciones de usuario específicas. Cada intención está compuesta por un conjunto de preguntas de muestra y una respuesta asociada. Por ejemplo, la intención "Clima" puede incluir preguntas de muestra como "¿Cómo está el clima hoy?" o "¿Lloverá hoy?" y una respuesta como "Hoy estará soleado". Cuando un usuario hace una pregunta, el chatbot compara la pregunta con las preguntas de muestra más similares asociadas a la intención, y devuelve la respuesta correspondiente

Cómo funciona un chatbot tradicional basado en intenciones. Imagen del autor.

Sin embargo, los chatbots basados en intenciones tienen su propio conjunto de problemas. Un problema es que requieren una gran cantidad de intenciones específicas para dar respuestas específicas. Por ejemplo, las expresiones de usuario como "No puedo iniciar sesión", "Olvidé mi contraseña" o "Error de inicio de sesión" pueden necesitar tres respuestas diferentes y, por lo tanto, tres intenciones diferentes, aunque todas son bastante similares.

Cómo puede ayudar GPT-3​

Aquí es donde GPT-3 puede ser especialmente útil. En lugar de tener muchas intenciones muy específicas, cada intención puede ser más amplia y aprovechar un documento de su Base de Conocimiento. Una Base de Conocimiento (KB, por sus siglas en inglés) es información almacenada como datos estructurados y no estructurados, listos para ser utilizados para análisis o inferencia. Su KB puede estar compuesta de una serie de documentos que explican cómo usar sus productos.

De esta manera, cada intención está asociada con un documento en lugar de una lista de preguntas y una respuesta específica, por ejemplo, una intención para "problemas de inicio de sesión", otra para "cómo suscribirse", etc. Cuando un usuario hace una pregunta sobre el inicio de sesión, podemos pasar el documento "problemas de inicio de sesión" a GPT-3 como información de contexto y generar una respuesta específica a la pregunta del usuario.

Cómo podría funcionar un chatbot aprovechando GPT-3. Imagen del autor.

Este enfoque reduce el número de intenciones que necesitan ser gestionadas y permite respuestas mejor adaptadas a cada pregunta. Además, si el documento asociado con la intención describe diferentes procesos (por ejemplo, un proceso para "inicio de sesión en el sitio web" y otro para "inicio de sesión en la aplicación móvil"), GPT-3 puede preguntar automáticamente al usuario para obtener aclaraciones antes de dar la respuesta final.

¿Por qué no podemos pasar toda la KB a GPT-3?​

Hoy en día, los LLM como GPT-3 tienen un tamaño máximo de prompt de aproximadamente 4k tokens (para el modelo text-davinci-003), que es mucho pero no suficiente para alimentar toda la base de conocimientos en un solo prompt. Los LLM tienen un tamaño máximo de prompt por razones computacionales, ya que generar texto con ellos implica una serie de cálculos que aumentan rápidamente a medida que aumenta el tamaño del prompt.

Los futuros LLM pueden no tener esta limitación mientras conservan las capacidades de generación de texto. Sin embargo, por ahora, necesitamos diseñar una solución alrededor de ella.

Cómo podría funcionar un chatbot con GPT-3​

Entonces, la canalización del chatbot podría estar compuesta por dos pasos:

  1. Primero, necesitamos seleccionar la intención adecuada para la pregunta del usuario, es decir, necesitamos recuperar el documento correcto de nuestra base de conocimientos.
  2. Luego, una vez que tenemos el documento correcto, podemos aprovechar GPT-3 para generar una respuesta apropiada para el usuario. Al hacerlo, necesitaremos crear un buen prompt.

El primer paso se resuelve esencialmente mediante búsqueda semántica. Podemos usar modelos pre-entrenados de la biblioteca sentence-transformers y asignar fácilmente una puntuación a cada documento. El documento con la puntuación más alta es el que se utilizará para generar la respuesta del chatbot.

Cómo podría funcionar un chatbot aprovechando GPT-3. GPT-3 podría utilizarse para generar una respuesta adecuada aprovechando la información de documentos de la base de conocimientos. Image by the author.

Generación de respuestas con GPT-3​

Una vez que tenemos el documento correcto, necesitaremos crear una buena indicación (prompt) para ser usada con GPT-3 para generar la respuesta. En los siguientes experimentos, siempre usaremos el modelo text-davinci-003 con una temperatura de 0.7.

Para crear la indicación (prompt), experimentaremos con:

  • Role-prompting: una técnica heurística que asigna un rol específico a la IA.
  • Información relevante de la base de conocimientos (KB), es decir, el documento recuperado en el paso de búsqueda semántica.
  • Los últimos mensajes intercambiados entre el usuario y el chatbot. Estos son útiles para mensajes enviados por el usuario donde el contexto completo no está especificado. Veremos un ejemplo de esto más adelante. Echa un vistazo a este ejemplo para ver cómo gestionar conversaciones con GPT-3.
  • Por último, la pregunta del usuario.

Comencemos nuestra indicación usando la técnica de role-prompting.

Como un chatbot avanzado llamado Skippy, tu objetivo principal es ayudar a los usuarios lo mejor que puedas.

Comencemos nuestro prompt usando la técnica de solicitud de roles.

Como un chatbot avanzado llamado Skippy, tu objetivo principal es ayudar a los usuarios de la mejor manera posible.

Luego, supongamos que el paso de búsqueda semántica extrae el siguiente documento de nuestra base de conocimientos. Todos los documentos describen cómo funciona el producto VideoGram, que es un producto imaginario similar a Instagram, pero solo para videos.

Un documento que explica cómo funciona el inicio de sesión en VideoGram. Imagen del autor.

Podemos agregar su contenido dentro del prompt de esta manera.
Como un chatbot avanzado llamado Skippy, tu objetivo principal es ayudar a los usuarios de la mejor manera posible.

INICIO DE CONTEXTO
Iniciar sesión en VideoGram desde el sitio web
1. Abre tu navegador web y ve al sitio web de VideoGram.
2. Haz clic en el botón "Iniciar sesión" ubicado en la esquina superior derecha de la página.
3. En la página de inicio de sesión, ingresa tu nombre de usuario y contraseña de VideoGram.
4. Una vez que hayas ingresado tus credenciales, haz clic en el botón "Iniciar sesión".
5. Ahora deberías haber iniciado sesión en tu cuenta de VideoGram.

Iniciar sesión en VideoGram desde la aplicación móvil
1. Abre la aplicación de VideoGram en tu dispositivo móvil.
2. En la página principal, toca el botón "Iniciar sesión" ubicado en la esquina inferior derecha. 3. En la página de inicio de sesión, ingresa tu nombre de usuario y contraseña de VideoGram.
4. Una vez que hayas ingresado tus credenciales, toca el botón "Iniciar sesión".
5. Ahora deberías haber iniciado sesión en tu cuenta de VideoGram.
FIN DE CONTEXTO

Por último, necesitamos agregar la conversación y la pregunta del usuario al final del prompt, como en el siguiente ejemplo.

Como un chatbot avanzado llamado Skippy, tu objetivo principal es ayudar a los usuarios de la mejor manera posible.

INICIO DE CONTEXTO
Iniciar sesión en VideoGram desde el sitio web
1. Abre tu navegador web y ve al sitio web de VideoGram.
2. Haz clic en el botón "Iniciar sesión" ubicado en la esquina superior derecha de la página.
3. En la página de inicio de sesión, ingresa tu nombre de usuario y contraseña de VideoGram.
4. Una vez que hayas ingresado tus credenciales, haz clic en el botón "Iniciar sesión".
5. Ahora deberías haber iniciado sesión en tu cuenta de VideoGram.

Iniciar sesión en VideoGram desde la aplicación móvil
1. Abre la aplicación de VideoGram en tu dispositivo móvil.
2. En la página principal, toca el botón "Iniciar sesión" ubicado en la esquina inferior derecha. 3. En la página de inicio de sesión, ingresa tu nombre de usuario y contraseña de VideoGram.
4. Una vez que hayas ingresado tus credenciales, toca el botón "Iniciar sesión".
5. Ahora deberías haber iniciado sesión en tu cuenta de VideoGram.
FIN DE CONTEXTO

SKIPPY: ¡Hola, soy Skippy! ¿En qué puedo ayudarte?
USUARIO: No puedo encontrar el botón de inicio de sesión.
SKIPPY:

Pasando este prompt a GPT-3, obtuve la siguiente respuesta generada:

No hay problema! En el sitio web, el botón de inicio de sesión se encuentra en la esquina superior derecha de la página. En la aplicación móvil, el botón de inicio de sesión se encuentra en la esquina inferior derecha. Hágamelo saber si necesita más ayuda!

Observa cómo la información en la respuesta generada proviene del documento de base de conocimiento.

Desambiguación de preguntas con GPT-3​

Intentemos con una frase del usuario más ambigua, como “no puedo iniciar sesión”. Aquí está el prompt completo:

Como un chatbot avanzado llamado Skippy, tu objetivo principal es ayudar a los usuarios lo mejor que puedas.

COMIENZA EL CONTEXTO
Iniciar sesión en VideoGram desde el sitio web:
1. Abre tu navegador web y ve al sitio web de VideoGram.
2. Haz clic en el botón "Iniciar sesión" ubicado en la esquina superior derecha de la página.
3. En la página de inicio de sesión, ingresa tu nombre de usuario y contraseña de VideoGram.
4. Una vez que hayas ingresado tus credenciales, haz clic en el botón "Iniciar sesión".
5. Ahora deberías haber iniciado sesión en tu cuenta de VideoGram.

Iniciar sesión en VideoGram desde la aplicación móvil:
1. Abre la aplicación VideoGram en tu dispositivo móvil.
2. En la página principal, toca el botón "Iniciar sesión" ubicado en la esquina inferior derecha.
3. En la página de inicio de sesión, ingresa tu nombre de usuario y contraseña de VideoGram.
4. Una vez que hayas ingresado tus credenciales, toca el botón "Iniciar sesión".
5. Ahora deberías haber iniciado sesión en tu cuenta de VideoGram.
TERMINA EL CONTEXTO

SKIPPY: ¡Hola, soy Skippy! ¿Cómo puedo ayudarte?
USUARIO: No puedo iniciar sesión
SKIPPY:

GPT-3 intentará entender mejor cuál es el problema del usuario.

Lo siento mucho. ¿Puede decirme si está intentando iniciar sesión a través del sitio web de VideoGram o de la aplicación móvil?

A continuación, aquí está cómo continúa la conversación completa. El prompt completo está oculto para una mejor visibilidad.

USER: No puedo iniciar sesión.
SKIPPY: Lamento escuchar eso. ¿Puede decirme si está intentando iniciar sesión a través del sitio web o de la aplicación móvil de VideoGram?
USER: Aplicación móvil
SKIPPY: De acuerdo, no hay problema. Para iniciar sesión a través de la aplicación móvil, abra la aplicación de VideoGram en su dispositivo móvil. En la página principal, toque el botón "Iniciar sesión" ubicado en la esquina inferior derecha. En la página de inicio de sesión, ingrese su nombre de usuario y contraseña de VideoGram. Una vez que haya ingresado sus credenciales, toque el botón "Iniciar sesión". Ahora debería haber iniciado sesión en su cuenta de VideoGram. Por favor, avíseme si necesita alguna otra ayuda.

GPT-3 puede manejar la disambiguación, siempre que tenga la información contextual adecuada.

Problemas al generar respuestas con GPT-3​

Sin embargo, existe un problema en generar respuestas con GPT-3.

Si le preguntamos "¿Es la aplicación móvil gratuita?" a GPT-3 pasando el documento de inicio de sesión como contexto, a menudo obtendríamos una respuesta como "Sí, la aplicación móvil de VideoGram es gratuita para descargar y usar", incluso si dicha información no está contenida en la información de contexto. ¡Generar información falsa es muy malo para los chatbots de servicio al cliente!

GPT-3 rara vez genera información falsa cuando la respuesta a la pregunta del usuario se puede encontrar en el contexto. Como las preguntas de los usuarios a menudo son textos cortos y ambiguos, no podemos confiar en el paso de búsqueda semántica para siempre recuperar un documento correcto, y por lo tanto siempre somos vulnerables a la generación de información falsa.

conclusión​

En conclusión, GPT-3 es muy útil para crear chatbots de conversación y es capaz de responder a una serie de preguntas específicas en función de la información contextual insertada en la solicitud. Sin embargo, es difícil hacer que el modelo produzca respuestas utilizando solo la información del contexto, ya que el modelo tiende a alucinar (es decir, generar nueva información, potencialmente falsa). Generar información falsa es un problema de diferente gravedad según el caso de uso.

Written by Fabio Chiusano.


  1. Nadeem, M., Bethke, A., & Reddy, S. (2021). StereoSet: Measuring stereotypical bias in pretrained language models. Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1: Long Papers), 5356–5371. https://doi.org/10.18653/v1/2021.acl-long.416 ↩
  2. Ji, Z., Lee, N., Frieske, R., Yu, T., Su, D., Xu, Y., Ishii, E., Bang, Y., Madotto, A., & Fung, P. (2022). Survey of Hallucination in Natural Language Generation. ACM Computing Surveys. https://doi.org/10.1145/3571730 ↩