Blog de Amazon Web Services (AWS)

Responde preguntas frecuentes de tus clientes usando un asistente potenciado con IA Generativa

Junio 2024 (v6.0.0) – Esta última versión tienen Integración con Amazon Bedrock por lo que ya no requiere despliegue de funciones AWS Lambda adicionales. Además, tiene Integración con Amazon Bedrock Knowledge Base como mecanismo de búsqueda alternativa a la base de conocimiento de Amazon OpenSearch Service que maneja por defecto la solución. 

Los centros de atención al cliente (call centers) poseen recursos limitados para atender las consultas y problemas de sus clientes a través de canales conversacionales. ¿Y Qué pasa cuando estos recursos se utilizan para responder preguntas frecuentes y recurrentes de los clientes?, esto se puede traducir en:

  • Sub utilización de recursos valiosos, tanto humanos como tecnológicos, que podrían emplearse de manera más eficiente en tareas de mayor complejidad o valor al cliente.
  • Aumento en los tiempos de espera para los clientes, lo que puede provocar frustración, abandono de llamadas y en última instancia, una disminución en los niveles de satisfacción y lealtad hacia su empresa.

Te has preguntado ¿cuál es el porcentaje de llamados de tu call center con esta características?, tenemos casos que usando la solución de asistente de autoatención, lograron retener entre un 28% (caso de la industria del entretenimiento) y 65% (caso de industria salud) de llamados, también ejemplos de la industria de Retail que lograron disminuir en un 31% el abandono en cola de llamados tras una implementación en 6 días a nivel global.

Con los avances recientes de la Inteligencia Artificial Generativa, especialmente la aparición de los Modelos Fundacionales, modelos entrenados con grandes volúmenes de datos, capaces de generar contenido en diversos formatos, entre ellos los modelos de lenguaje de gran tamaño (o Large Language Models, LLM), se abre un nuevo espectro de posibilidades al utilizar este tipo de tecnologías. Los chatbots y voicebots ahora pueden ejecutar una conversación siguiendo lineamientos especificos, adoptando un tono determinado y respetando reglas sobre el tipo de atención que se desea prestar, logrando una interacción más eficiente y más natural.

En AWS, desde 2023, existen alternativas para el uso de Modelos Fundacionales de Inteligencia Artificial a través de Amazon SageMaker JumpStart, y para septiembre de 2023 anunciamos Amazon Bedrock. Si deseas crear aplicaciones potenciadas con IA Generativa sin preocuparte de la infraestructura o configuraciones de ambiente, te recomendamos empezar con Amazon Bedrock por su facilidad de uso y capacidad de invocar diferentes modelos a través de una sola API. Actualmente contamos con 6 proveedores, Anthropic, AI21Labs, Cohere, Amazon, Meta, Mistral AI y Stability AI, cada uno con múltiples modelos disponibles los que puedes combinar y complementar entre sí para lograr los mejores resultados.

Sin embargo la Inteligencia Artificial Generativa no es la solución completa para resolver el tipo de problema planteado, es una pieza clave que forma parte de la solución, y permite brindar un toque más humano a la interacción entre los centros de atención al cliente y sus cliente finales.

En este post mostraremos cómo utilizar una solución de AWS con plantillas para despliegue automático, construidas por arquitectos de soluciones de AWS y socios. Esta solución llamada QnABot, permite desplegar una interfaz conversacional basada en Amazon Lex y potenciada con Amazon Bedrock en cuestión de unas horas.

Te recomiendo explorar las mas de 1300 soluciones de AWS disponibles y revisar otros posibles casos de uso además del que revisaremos en este blog.

Librería de soluciones AWS

Vista general de la solución

A continuación te explico paso a paso en que consiste la solución QnABot:

Arquitectura QnABot 6.0.0

  1. Una interfaz de usuario (UI) para el diseñador de contenidos y el cliente web de Amazon Lex, con Amazon Cognito para autenticarse.
  2. Tras la autenticación, Amazon API Gateway y Amazon Simple Storage Service (Amazon S3) entregan el contenido de la interfaz de usuario del diseñador de contenidos.
  3. Configure las preguntas y respuestas en el diseñador de contenidos, esto enviará solicitudes a API Gateway para guardar las preguntas y las respuestas.
  4. La función de AWS Lambda del diseñador de contenidos guarda los datos ingresados en Amazon OpenSearch Service en un índice de banco de preguntas. Si utiliza text embeddings, estas solicitudes pasan por un modelo de machine learning de Amazon Bedrock, para generar los embeddings antes de guardarlos en el banco de preguntas de Amazon OpenSearch Service.
  5. Los usuarios interactúan con el asistente a través de formatos como chat (Cliente web) o voz (Amazon Connect).
  6. Amazon Lex utiliza una función de AWS Lambda para el cumplimiento (Fulfillment) de la acción. Los usuarios del chatbot también pueden enviar solicitudes a esta función de AWS Lambda a través de dispositivos con Amazon Alexa.
  7. La función de AWS Lambda encargada del cumplimiento toma la entrada del usuario y:
    • Usa Amazon Comprehend y Amazon Translate (en caso que se configure para análisis de sentimiento y manejo de multilenguaje) para procesar las solicitudes, y a continuación, busca la respuesta en OpenSearch Service.
    • Si utilizas LLM para text embeddings y generación de respuesta, estas solicitudes pasan primero por varios modelos de Amazon Bedrock:
      • Primero para generar una consulta de búsqueda simplificada en base al historial de la conversación
      • Luego genera los text embeddings para compararlas con las guardadas en el banco de preguntas de Amazon OpenSearch Service
      • Finalmente pasa por un modelo para generar una respuesta a partir del contenido encontrado.
  8. Si tienes bases de conocimiento cargadas en un índice de Amazon Kendra o Amazon Bedrock Knowledge Base puedes integrarlo con el QnABot como opción alternativa, la función de AWS Lambda Bot que completa la solicitud, invoca a Amazon Kendra o Amazon Bedrock Knowledge Base si el banco de preguntas de OpenSearch Service no devuelve ninguna coincidencia.
  9. Las interacciones de los usuarios con la función de AWS Lambda encargada del cumplimiento, generan registros y datos de métricas que se envían a Amazon Kinesis Data Firehose y Amazon S3 donde se pueden analizar posteriormente.

Pre-Requisitos

Tutorial

¡Es hora de empezar! Los principales pasos son:

  1. Despliega la Solución de AWS QnABot.
  2. Configura el QnABot.
  3. Alimenta a tu bot con información.
  4. Prueba
  5. Limpia eliminando los recursos creados

Nota: es importante saber que tanto el plugin como el QnABot tiene versiones y mantienen actualizaciones constantes para generar mejoras, arreglos, adaptaciones ante nuevas versiones de los servicios.

1. Despliega la Solución de AWS QnABot.

  • Dirígete al link de la solución del QnABot.
  • Ubica la sección de Opciones de despliegue.
  • Selecciona el botón Lanzar en la consola de AWS, esto te dirigirá a AWS CloudFormation para desplegar la última versión del QnaBot. Completa los siguientes parámetros:

Stack name : NombreDeTuBot
Email: TuCorreo@mail.com
PublicOrPrivate: selecciona si quieres que el cliente web del QnABot requiera autenticación (PRIVATE) o no (PUBLIC)
Language: Spanish
OpenSearchNodeCount: 1
LexV2BotLocaleIds: es_US
EmbeddingsApi: BEDROCK
EmbeddingsBedrockModelId: amazon.titan-embed-text-v1
LLMApi: BEDROCK
LLMBedrockModelId: anthropic.claude-3-haiku-v1
Mantén el resto de las opciones con lo valores por defecto.

2. Configura el QnABot.

  • Revisa la salida del despliegue: Una vez finalizado el despliegue de tu QnABot, dirígete a la pestaña de Outputs de tu Stack de AWS CloudFormation, allí encontrarás la URL del diseñador de contenidos (ContentDesignerURL) y deberás haber recibido un correo con las credenciales.

Salida del despliegue AWS CloudFormation QnaBot

  • Inicio de sesión: Esto te llevará a un inicio de sesión como el siguiente, donde deberás ingresar tus credenciales y hacer el cambio de password.

Login interfaz de usuario para Diseño de QnABot

  • Para este blog nos concentraremos en las primeras opciones de configuración, empezando por las Settings.

Primeras opciones del menú de configuración QnABot

  • Para las settings que no modificamos en el punto anterior usa la siguiente configuración, te invito a jugar variando estos prompts para darle el tono a la respuesta que represente más a tu caso, sobre todo al prompt de generación de respuesta:
    • EMBEDDINGS_TEXT_PASSAGE_SCORE_THRESHOLD: 0.6
    • LLM_GENERATE_QUERY_PROMPT_TEMPLATE: este prompt es el usado para refrasear la consulta del cliente basándose en la historia de la conversación, con el objetivo de simplificar la pregunta

<br><br>Human: Acá esta la historia de la conversación:<br><chatHistory><br>{history}<br></chatHistory><br>Human: Y acá es la última consulta del cliente:<br><followUpMessage><br>{input}<br></followUpMessage><br>Human: Analiza la historia y la pregunta y genera una pregunta que resuma lo que está requiriendo consultar el cliente en el mismo idioma en que se hizo la pregunta. Responde solo con la nueva pregunta, sin agregar tu razonamiento<br><br>Assistant: acá esta la pregunta refraseada:

    • LLM_GENERATE_QUERY_MODEL_PARAMS: esta configuración nos permite indicar que modelo será usado para ejecutar el prompt LLM_GENERATE_QUERY_PROMPT_TEMPLATE, y que parámetros de inferencia le pasaremos al modelo, en este caso estamos usando Claude 3 Haiku.

{ "temperature": 0, "max_tokens": 256, "top_p": 1}

    • LLM_QA_PROMPT_TEMPLATE: este prompt es el utilizado para generar la respuesta usado un modelo de IA generativa a partir de la referencia encontrada en la base de conocimiento.

<br><br>Human: Eres un amigable asistente AI que se apoya en una base de conocimiento con información sobre Soluciones de AWS. Recibirás una pregunta y una referencia para generar una respuesta. Acá está la referencia:<br><references><br>{context}<br></references><br>Acá esta la pregunta:<br><question><br>{query}<br></question><br>Si en la referencia encuentras la información para responder la pregunta, genera una respuesta confiada sobre el tema, si no dice literal algo sobre la pregunta, pero tienes información para responder algo parcialmente confiada responde, con la información que inferiste y añade la cita de la frase que te hace conectar con la pregunta. Si en la referencia no se dice nada acerca de lo pregunta, responde, \"Lo siento, no tengo información para responderte\". Siempre entrega la información en idioma español, incluyendo las citas o referencias.<br><br>Assistant: De acuerdo a la referencia, en menos de 50 palabras esta es la respuesta:

    • LLM_QA_MODEL_PARAMS: esta configuración nos permite indicar que modelo será usado para ejecutar el prompt LLM_QA_PROMPT_TEMPLATE, y que parámetros de inferencia le pasaremos al modelo, en este caso sumamos el parámetro system que permite proporcionar un contexto e instrucciones al modelo, como por ejemplo especificar su función.

{ "temperature": 0, "max_tokens": 256, "top_p": 1, "system": "Eres un Asistente AI amigable que responderá preguntas del cliente sobre soluciones de AWS, responde en un tono amable y personal"}

Nota: Para ver todas las posibles configuraciones que se pueden realizar en el QnABot te invito a revisar la documentación de Settings.

3. Alimenta a tu bot con información.

  • Copia al siguiente json y guárdalo en un archivo . json, este funcionará como una base de conocimiento del QnABot y las soluciones de Contact Center Intelligence tomados de algunos blogs de AWS sobre estos temas.
{ "qna": [ { "passage": "Integrate QnABot on AWS with ServiceNow. Do your employees wait for hours on the telephone to open an IT ticket? Do they wait for an agent to triage an issue, which sometimes only requires restarting the computer? Providing excellent IT support is crucial for any organization, but legacy systems have relied heavily on human agents being available to intake reports and triage issues. Conversational AI (or chatbots) can help triage some of these common IT problems and create a ticket for the tasks when human assistance is needed. Chatbots quickly resolve common business issues, improve employee experiences, and free up agents’ time to handle more complex problems.\n\nQnABot on AWS is an open source solution built using AWS native services like Amazon Lex, Amazon OpenSearch Service, AWS Lambda, Amazon Transcribe, and Amazon Polly. QnABot version 5.4+ is also enhanced with generative AI capabilities.\n\nAccording to Gartner Magic Quadrant 2023, ServiceNow is one of the leading IT Service Management (ITSM) providers on the market. ServiceNow’s Incident Management uses workflows to identify, track, and resolve high‑impact IT service incidents.\n\nIn this post, we demonstrate how to integrate the QnABot on AWS chatbot solution with ServiceNow. With this integration, users can chat with QnABot to triage their IT service issues and open an incident ticket in ServiceNow in real time by providing details to QnABot.\n\nWatch the following video to see how users can ask questions to an IT service desk chatbot and get answers. For most frequently asked questions, chatbot answers can help resolve the issue. When a user determines that the answers provided are not useful, they can request the creation of a ticket in ServiceNow.", "type": "text", "qid": "1" }, { "passage": "Deploy generative AI self-service question with Amazon Kendra, and Amazon Bedrock. Powered by Amazon Lex, the QnABot on AWS solution is an open-source, multi-channel, multi-language conversational chatbot. QnABot allows you to quickly deploy self-service conversational AI into your contact center, websites, and social media channels, reducing costs, shortening hold times, and improving customer experience. Customers now want to experiment to see how the power of large language models (LLMs) can further improve the customer experience with generative AI capabilities. This includes automatically generating answers from existing company documents and knowledge bases, and making their self-service chatbots more conversational.\n\nOur latest QnABot releases, v5.4.0+, now let you experiment using an LLM to disambiguate customer questions by taking conversational context into account, dynamically generating answers from relevant FAQs or Amazon Kendra search results and document passages. It also provides attribution and transparency by displaying links to the reference documents and context passages that were used by the LLM to construct the answers.\n\nGenerative AI can be used to rapidly generate content for common customer questions by searching through and summarizing the most relevant details from existing FAQs and knowledge base articles. Watch the demo video below to see a fictional insurance chatbot example where a customer is asking about specific insurance policies. The bot can generate a response and point to the knowledge sources that are used to create the response, helping provide additional context for the customer.\n\nWhen you deploy QnABot, you can choose to automatically deploy an open-source LLM model (Falcon-40B-instruct) on an Amazon SageMaker endpoint. The LLM landscape is constantly evolving—new models are released frequently and our customers want to experiment with different models and prompt configurations to see what works best for their use cases. This is why QnABot also integrates with Amazon Bedrock and any other LLM using an AWS Lambda function. To help you get started, we’ve released a set of sample one-click deployable Lambda functions (plugins) that integrate QnABot with Amazon Bedrock and other LLMs.", "type": "text", "qid": "2" }, { "passage": "Build an AI-powered virtual agent for Genesys Cloud using QnABot and Amazon Lex. The rise of artificial intelligence technologies enables organizations to adopt and improve self-service capabilities in contact center operations to create a more proactive, timely, and effective customer experience. Voice bots, or conversational interactive voice response systems (IVR), use natural language processing (NLP) to understand customers’ questions and provide relevant answers. Businesses can automate responses to frequently asked transactional questions by deploying bots that are available 24/7. As a result, customers benefit from reduced wait time and faster call resolution time, especially during peak hours.\n\nIn the post Enhancing customer service experiences using Conversational AI: Power your contact center with Amazon Lex and Genesys Cloud, we introduced Amazon Lex support on the Genesys Cloud platform and outlined the process of activating the integration. In this post, we demonstrate how to elevate traditional customer service FAQs with an interactive voice bot. We dive into a common self-service use case, explore Q&amp;A interactions, and offer an automated approach using QnABot on AWS Solution built on Amazon Lex with Genesys Cloud.", "type": "text", "qid": "3" }, { "passage": "AWS Contact Center Intelligence solutions. AWS Contact Center Intelligence solutions (CCI Solutions) offer a variety of ways that organizations can quickly and cost-effectively add machine learning-based intelligence to their contact centers, via AWS pre-trained AI Services. AWS CCI is currently available through participating APN partners, and it is focused on three stages of the contact center workflow: Self-Service, Live Call Analytics and Agent Assist, and Post-Call Analytics. Let’s break each one of these up.\n\nThe Self-Service solution helps with creation of chatbots and ML-driven IVRs (Interactive voice response) to address the most common queries a contact center workforce often gets. This now allows actual call center employees to focus on higher value work. To implement this solution, you’ll want to work with either Amazon Lex and/or Amazon Kendra. The novelty of this solution is that Lex + Kendra not only fulfills transactional queries (i.e. book a hotel room or reset my password), but also addresses the long tail of customers questions whose answers live in enterprises knowledge systems. Before, these Q&amp;A had to be hard coded in Amazon Lex, making it harder to implement and maintain. Today, you can implement this solution directly from your existing contact center platform with AWS CCI partners, such as Genesys.\n\nThe Live Call Analytics &amp; Agent Assist solution enables the creation of real-time ML capabilities to increase staff productivity and engagement. Here, Amazon Transcribe is used to perform real-time speech transcription, while Amazon Comprehend can analyze interactions, detect the sentiment of the caller, and identify key words and phrases in the conversation. Amazon Translate can even be added to translate the conversation into a preferred language! Now, you can implement this solution directly from several leading contact center platforms with AWS CCI partners, like SuccessKPI.\n\nThe Post-Call Analytics solution is an automatic analysis of contact center conversations, which tend to leave actionable data for product and service feedback loops. Similar to live call analytics, this solution combines Amazon Transcribe to perform speech recognition and creates a high-quality text transcription of each call, with Amazon Comprehend to analyze the interaction. Amazon Translate can be added to translate the conversation into your preferred language, and Amazon Kendra can be used for contextual natural language queries. Today, you can implement this solution directly from several leading contact center platforms with AWS CCI partners, such as Acqueon.", "t": "CCI Solutions", "type": "text", "qid": "4" } ] }
  • Carga el contenido para que sea indexado en Amazon OpenSearch Service y te sirva como base de conocimiento, para esto:
    • Dirígete a Import
    • Selecciona el botón Browse y selecciona el archivo
    • Automáticamente el empezará a cargar la data y te mostrará el estado de carga en la sección Import Jobs, el cual pasará de Submitted a InProgress y finalmente quedará Complete.

Nota: Amazon OpenSearch Service es donde se almacena la base de conocimiento principal con la que interactúa el QnABot. El QnABot realiza la búsqueda y retorna el artículo con mayor similitud a la pregunta (Top 1), pero te recuerdo que existe la opción de configurar un índice de Amazon Kendra, con este tendrás capacidades de retornar múltiples extractos de documentos. Te invito a probar todas estas opciones para que evalúes cual es más efectiva para tu caso.

4. Prueba

En menos de 5 minutos podrás ir al cliente del QnABot para iniciar tus preguntas, la url del cliente podrás encontrarla entre los Outputs del stack de AWS CloudFormation de QnABot bajo la key ClientURL o en el menú QnABot Designer UI en la opción QnABot Client.

Opción menú QnABot Client

Al preguntar: “Te suena Post Call Analytics”, esta es su respuesta:

Ejemplo 1. Pregunta y respuesta QnABot UI cliente

Ante consultas como “muchas gracias y me puedes indicar que es el qnabot” y “sabes si es el QnABot es compatible o se integra con Genesys Cloud” estas son sus respuestas.

Ejemplo 2. Pregunta y respuesta QnABot UI cliente

5. Limpieza

Para eliminar los recursos creados sigue los pasos indicados en la documentación.

Conclusión

Al desplegar la solución de QnABot vas a obtener:

  • Un bot de preguntas y respuestas con soporte multilenguaje en un par de horas.
  • Múltiples alternativas para manejo de base de conocimiento como Amazon OpenSearch Service y Amazon Kendra.
  • Integraciones a distintos Modelos Fundacionales usando Amazon Bedrock. En nuestra prueba nos centramos en Anthropic Claude 3 Haiku, pero puedes probar fácilmente con las demás alternativas que Bedrock tiene disponible.
  • Capacidades probadas para añadir funcionalidades como interacción con ServiceNow, Alexa o Genesys Cloud.

Te invito a ser parte de los que mejoran cada día este tipo de soluciones, contribuyendo en el código, solicitando nuevas características o reportando alguna mejora a través del repositorio del QnABot.

Te dejo estos recursos para que sigas explorando otras capacidades e integraciones para el QnABot:

Acerca de la autora

Rosmar Torres Rosmar Torres es Arquitecta de Soluciones en Amazon Web Service, con más de 12 años de experiencia en Analítica en SAP y Desarrollo de Software. Basada en Santiago, Chile. Con intereses en Análitica e IA.

Sobre los revisores

Enrique Rodríguez es Arquitecto de Soluciones de Amazon Web Servicies (AWS) Basado en Chile actualmente ayudando a los clientes de la región a lograr sus desafíos en la nube. Con intereses en Machine Learning y Contact Center en la Nube.
Francisco Fagas Francisco Fagas es Arquitecto de Soluciones Senior en Amazon Web Services, basado en Chile actualmente ayudando a los clientes de la región a lograr sus desafíos en la nube. Con intereses en Machine Learning, analítica e IA DevOps.