QnABot en AWS es una interfaz conversacional (chatbot) multicanal y multilingüe que responde a las preguntas, respuestas y comentarios de sus clientes. Le permite implementar un chatbot completamente funcional en múltiples canales, incluidos chat, voz, SMS y Amazon Alexa. El entorno de gestión de contenidos de la solución y el asistente de integración del centro de contacto le permiten configurar y personalizar un entorno que proporciona los siguientes beneficios:
Mejore la experiencia de sus clientes brindándoles tutoriales personalizados y soporte de preguntas y respuestas con interacción inteligente de varias partes.
Reduzca los tiempos de espera del centro de llamadas automatizando los flujos de trabajo de atención al cliente
Implemente la última tecnología de aprendizaje automático para crear interacciones atractivas y similares a las humanas para los chatbots.
La implementación de esta solución con los parámetros predeterminados implementa los siguientes componentes en su cuenta de AWS (los componentes delimitados son opcionales).
Figura 1: QnABot en la arquitectura de AWS
El flujo de proceso de alto nivel para los componentes de la solución implementados con la plantilla de AWS CloudFormation es el siguiente:
El administrador implementa la solución en su cuenta de AWS, abre la interfaz de usuario de Content Designer o el cliente web de Amazon Lex y utiliza Amazon Cognito para autenticarse.
Después de la autenticación, Amazon API Gateway y Amazon S3 entregan el contenido de la interfaz de usuario de Content Designer.
El administrador configura preguntas y respuestas en el Diseñador de contenido y la interfaz de usuario envía solicitudes a Amazon API Gateway para guardar las preguntas y respuestas.
La función Content Designer
AWS Lambda guarda la entrada en Amazon OpenSearch Service en un índice del banco de preguntas. Si se utilizan incrustaciones de texto, estas solicitudes primero pasarán por un modelo LLM alojado en Amazon Bedrock o Amazon SageMaker para generar incrustaciones antes de guardarse en el banco de preguntas de OpenSearch. Además, Content Designer
guarda los ajustes de configuración predeterminados y personalizados en AWS Systems Manager Parameter Store.
Los usuarios del chatbot interactúan con Amazon Lex a través de la interfaz de usuario del cliente web, Amazon Alexa o Amazon Connect.
Amazon Lex reenvía solicitudes a la función Bot Fulfillment
AWS Lambda. Los usuarios también pueden enviar solicitudes a esta función Lambda a través de dispositivos Amazon Alexa.
La información del usuario y del chat se almacena en Amazon DynamoDB para eliminar las ambigüedades de las preguntas de seguimiento del contexto de preguntas y respuestas anteriores.
La función Bot Fulfillment
AWS Lambda toma las entradas de los usuarios y utiliza Amazon Comprehend y Amazon Translate (si es necesario) para traducir solicitudes de idiomas no nativos al idioma nativo seleccionado por el usuario durante la implementación y luego busca la respuesta en Amazon OpenSearch Service. . Si se utilizan funciones de LLM, como generación de texto e incrustaciones de texto, estas solicitudes pasarán primero por varios modelos de LLM alojados en Amazon Bedrock o Amazon SageMaker para generar la consulta de búsqueda y las incrustaciones para compararlas con las guardadas en el banco de preguntas de OpenSearch.
Si no se devuelve ninguna coincidencia del banco de preguntas de OpenSearch, la función Lambda de cumplimiento del bot reenvía la solicitud de la siguiente manera:
a. Si un índice de Amazon Kendra está configurado como respaldo, la función Bot Fulfillment
AWS Lambda reenvía la solicitud a Kendra si no se devuelve ninguna coincidencia del banco de preguntas de OpenSearch. El LLM de generación de texto se puede utilizar opcionalmente para crear la consulta de búsqueda y sintetizar una respuesta a partir de los extractos del documento devuelto.
b. Si se configura un ID de la base de conocimientos de Bedrock, la función AWS Lambda Bot Fulfillment
reenvía la solicitud a la base de conocimientos de Bedrock. La función Bot Fulfillment
AWS Lambda aprovecha la API RetrieveAndGenerate para obtener los resultados relevantes para una consulta de usuario, aumentar el mensaje del modelo fundamental y devolver la respuesta.
Las interacciones del usuario con la función Bot Fulfillment
generan registros y datos de métricas, que se envían a Amazon Kinesis Data Firehose y luego a Amazon S3 para su posterior análisis de datos. Los paneles de OpenSearch se pueden utilizar para ver el historial de uso, las expresiones registradas, las expresiones sin resultados, los comentarios positivos y negativos de los usuarios y también brindan la capacidad de crear informes personalizados.
Los paneles de OpenSearch se pueden utilizar para ver el historial de uso, las expresiones registradas, las expresiones sin resultados, los comentarios positivos y negativos de los usuarios, y también brindan la capacidad de crear informes personalizados.
Consulte la guía de implementación para obtener instrucciones detalladas sobre cómo implementar QnABot en su cuenta de AWS.
Alternativamente, si desea implementar QnABot de forma personalizada en AWS, consulte los detalles a continuación.
Navegue hasta el directorio raíz de QnABot (el directorio se creará una vez que haya clonado este repositorio).
Comience desde el directorio /fuente.
cd source
Instalar virtualenv:
pip3 install virtualenv
Instale los módulos node.js de QnABot:
npm install
A continuación, configure su archivo de configuración:
npm run config
ahora edite config.json
para los siguientes parámetros:
parámetro | descripción |
---|---|
región | la región de AWS para lanzar pilas en |
perfil | el perfil de credenciales de AWS que se utilizará |
espacio de nombres | un espacio de nombre lógico para ejecutar sus plantillas, como desarrollo, prueba y/o producción |
devCorreo electrónico (obligatorio) | el correo electrónico que se debe utilizar al crear usuarios administradores en lanzamientos de pila automatizados |
A continuación, utilice el siguiente comando para iniciar una plantilla de CloudFormation para crear el depósito S3 que se utilizará para el código Lambda y las plantillas de CloudFormation. Espere a que se complete esta plantilla (puede ver el progreso desde la línea de comandos o la consola de AWS CloudFormation)
npm run bootstrap
Finalmente, utilice el siguiente comando para iniciar la plantilla para implementar QnABot en su cuenta de AWS. Cuando la pila se haya completado, podrá iniciar sesión en la interfaz de usuario del Diseñador (la URL es una salida de la plantilla). Una contraseña temporal para el correo electrónico en su config.json:
npm run up
Si tiene una pila existente, puede ejecutar lo siguiente para actualizarla:
npm run update
Para ejecutar pruebas unitarias, ejecute el siguiente comando desde la carpeta raíz:
npm test
Para actualizar las instantáneas de prueba al modificar el directorio /website o /templates, ejecute el siguiente comando:
npm run test:update:snapshot
NOTA: La ejecución de pruebas de regresión creará, modificará y eliminará contenido y configuraciones del Diseñador de contenido. Ejecute únicamente pruebas de regresión en bots que no sean de producción donde la pérdida o modificación de contenido y configuración sea aceptable.
Esto ejecuta pruebas de integración contra una implementación de QnABot implementada en su cuenta. Antes de ejecutar las pruebas, siga los pasos anteriores para crear e implementar una versión o implementar usando la plantilla desde la página de inicio de QnABot: Inicie QnABot.
cd .nightswatch
brew install python@3
brew install geckodriver
brew install --cask chromedriver
pip3 install virtualenv
python3 -m virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt
Configure las siguientes variables de entorno para que apunten a una implementación de QnA Bot bajo prueba:
export CURRENT_STACK_REGION= ' <QNA BOT Region> '
export CURRENT_STACK_NAME= ' <QNA BOT Cloudformation Stack Name> '
export EMAIL= ' <admin user e-mail>
Opcionalmente, proporcione un nombre de usuario y una contraseña para que un usuario administrador pueda realizar la prueba. Si estas variables de entorno no están configuradas, se creará un usuario 'QnaAdmin' predeterminado durante la prueba inicial. Si desea ejecutar una prueba específica, proporcione un nombre de usuario, ya que el usuario predeterminado solo se creará en la prueba inicial.
export USER= ' <QNA BOT existing admin user> '
export PASSWORD= ' <QNA BOT existing admin password> '
Opcionalmente, proporcione el identificador y la versión de Bedrock Guardrails para realizar la prueba. Si estas variables de entorno no están configuradas, se omitirán las pruebas de Bedrock Guardrails en test_knowledge_base.py y test_llm.py.
export BEDROCK_GUARDRAIL_IDENTIFIER= ' <Pre-configurated Guardrail Identifier in your AWS account> '
export BEDROCK_GUARDRAIL_VERSION= ' <Pre-configurated Guardrail Version in your AWS account> '
Si desea iniciar el navegador mientras ejecuta las pruebas, configure también la siguiente variable env:
export HEADLESS_BROWSER= ' false '
Si desea ver la hora de inicio y finalización de cada prueba:
export TIMESTAMPS= ' true '
Si desea utilizar un perfil de AWS específico para la prueba. Si no se establece, la prueba de regresión utilizará la sesión actual de AWS en la que se está ejecutando.
export TEST_ACCOUNT_PROFILE_NAMES= ' <AWS profile name> '
cd functional
pytest -v
Los usuarios avanzados interesados en lanzar un QnABot personalizado pueden utilizar las siguientes instrucciones para publicar los artefactos de implementación disponibles para usuarios externos.
Cree un depósito S3 para alojar las plantillas (consulte $DIST_OUTPUT_BUCKET a continuación). También necesitará depósitos regionales para cada región desde la que implementarán sus usuarios. Los depósitos regionales deben denominarse $DIST_OUTPUT_BUCKET-$AWS_REGION. Deberá proporcionar permisos de acceso adecuados a los depósitos para sus usuarios objetivo. Consulte los enlaces a continuación para conocer las mejores prácticas de control de acceso y seguridad de los depósitos:
NOTA: Todos los depósitos deben tener habilitado el control de versiones; de lo contrario, la pila no se podrá implementar.
Configure las siguientes variables de entorno para su QnABot personalizado:
export DIST_OUTPUT_BUCKET= ' <name of the bucket to upload artifacts to> '
export SOLUTION_NAME= ' <name of your custom bot> '
export VERSION= ' <bot version> '
export AWS_REGIONS=( " us-east-1 " " us-west-2 " " ap-southeast-1 " " ap-southeast-2 " " ca-central-1 " " eu-west-1 " " ap-northeast-1 " " eu-central-1 " " eu-west-2 " " ap-northeast-2 " )
Las variables anteriores determinarán la ruta URL del depósito desde donde se alojará su bot. La matriz AWS_REGIONS es una lista de todas las regiones que admite QnABot. La lista se puede modificar según sea necesario si su versión de bot no se implementará en determinadas regiones.
Ejecute los siguientes comandos para cargar la versión local actual en el depósito especificado:
cd deployment
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
aws s3 cp global-s3-assets/ s3:// $DIST_OUTPUT_BUCKET / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
Cree depósitos de S3 para cada región si aún no existen. Estos depósitos deberán configurarse para uso público:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
echo " Bucket exists: s3:// $DIST_OUTPUT_BUCKET - $region "
else
aws s3api create-bucket --bucket " $DIST_OUTPUT_BUCKET - $region "
echo " Created bucket: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Ejecute el siguiente comando para cada región:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
aws s3 cp regional-s3-assets/ s3:// $DIST_OUTPUT_BUCKET - $region / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
else
echo " Bucket not found: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
La plantilla se puede implementar desde la siguiente URL para todas las regiones:
echo https:// $DIST_OUTPUT_BUCKET .s3.amazonaws.com/ $SOLUTION_NAME / $VERSION /qnabot-on-aws-main.template
Para ejecutar Webpack en modo de desarrollo, asegúrese de tener lo siguiente
Navegue hasta el directorio raíz de QnABot (el directorio se creará una vez que haya clonado este repositorio).
npm install
A continuación, asigne la variable de entorno ASSET_BUCKET_NAME
ubicada en package.json en el dev mode
del script npm. Este es el nombre del depósito en el que QnABot carga los activos ./website y generalmente se denomina <nombre-pila>-bucket-<caracteres-generados-aleatoriamente>.
Una vez configurado correctamente, ejecute
npm run dev-mode
Esto debería configurar Webpack en modo de desarrollo y cargar activos en ./website/build en ASSET_BUCKET_NAME
. Esto también observará cualquier cambio en ./website y recargará los activos en su depósito si los activos cambian.
Actualmente los únicos navegadores soportados son:
Consulte el archivo LICENSE.txt para obtener más detalles.
Consulte el archivo CHANGELOG.md para obtener detalles sobre las nuevas funciones de cada versión.
También hay disponible un taller que le guiará a través de las funciones de QnABot.
A medida que QnABot evoluciona a lo largo de los años, utiliza varios servicios y funcionalidades que pueden entrar y salir del soporte. Esta sección sirve como referencia para las versiones de soluciones implementables junto con enlaces a sus plantillas públicas y de VPC CloudFormation.
Nota: Las versiones de solución implementables se refieren a la capacidad de implementar la versión de QnABot en sus cuentas de AWS. Las versiones con soporte activo para QnABot solo están disponibles para la última versión de QnABot.
No recomendamos utilizar esta versión debido a un problema potencial con la funcionalidad testall que puede introducir una gran cantidad de versiones almacenadas en el depósito testall S3 cuando Content Designer no tiene preguntas y respuestas. Utilice la última versión disponible.
No recomendamos utilizar esta versión debido a un problema potencial con la funcionalidad testall que puede introducir una gran cantidad de versiones almacenadas en el depósito testall S3 cuando Content Designer no tiene preguntas y respuestas. Utilice la última versión disponible.
v5.5.0+
debido a que Vue 2 llega al final de su vida útil (EOL), lo que afecta a todas las versiones anteriores de QnABot. Para obtener más información, consulte a continuación.v5.4.X
a versiones posteriores, si están actualizando desde una implementación con LLMApi configurado en SAGEMAKER, establezca este valor en DISABLED antes de actualizar. Después de actualizar, devuelva este valor a SAGEMAKER.No recomendamos utilizar esta versión debido a un posible problema con la funcionalidad testall que puede introducir una gran cantidad de versiones almacenadas en el depósito testall S3 cuando Content Designer no tiene preguntas y respuestas. Utilice la última versión disponible.
No recomendamos utilizar esta versión debido a un posible problema con la funcionalidad testall que puede introducir una gran cantidad de versiones almacenadas en el depósito testall S3 cuando Content Designer no tiene preguntas y respuestas. Utilice la última versión disponible.
No recomendamos utilizar esta versión debido a un posible problema con la funcionalidad testall que puede introducir una gran cantidad de versiones almacenadas en el depósito testall S3. Utilice la última versión disponible.
No recomendamos utilizar esta versión debido a un posible problema con la funcionalidad testall que puede introducir una gran cantidad de versiones almacenadas en el depósito testall S3. Utilice la última versión disponible.
v5.2.1
ya no se pueden implementar debido a la desaprobación de Lambda Runtime. Esta información se proporciona tal como está y le recomendamos encarecidamente que consulte el calendario de desuso y el final de vida útil de los marcos utilizados en la solución.Para QnABot, la razón más común se debe a que AWS Lambda Runtimes está obsoleto. Cuando un tiempo de ejecución de Lambda se marca como obsoleto, los clientes ya no pueden crear nuevas funciones de Lambda en su cuenta de AWS. Esto significa que las versiones anteriores de nuestras soluciones que utilizan esos tiempos de ejecución no se podrán implementar. Esto dificulta que la comunidad brinde soporte, ya que no podemos implementar un entorno similar para investigar problemas y reproducir informes de errores.
Si actualmente tiene una implementación que funciona para usted, no hay nada que requiera que actualice. Sin embargo, se recomienda encarecidamente que cree un plan para probar y migrar implementaciones de producción a una versión compatible. Cuanto más se aleje una implementación de latest
mayor será el riesgo de que experimente inestabilidad (especialmente en lo que respecta a la implementación).
Y para aquellos que quieran empezar a utilizar la solución por primera vez, siempre se recomienda utilizar la última versión. ¡Es la versión más segura, estable y rica en funciones de QnABot!
En la mayoría de los casos, una simple operación de Actualización de pila debería permitirle migrar su instancia a una versión más nueva mientras mantiene sus datos en la nueva implementación.
Nota: Para aquellos que actualizan desde
v5.4.X
a versiones posteriores, si están actualizando desde una implementación con LLMApi configurado en SAGEMAKER, establezca este valor en DISABLED antes de actualizar. Después de actualizar, devuelva este valor a SAGEMAKER.
El equipo recomienda encarecidamente que cualquier actualización (especialmente entre versiones menor y mayor) se pruebe primero en una instancia que no sea de producción para verificar si hay regresiones. Esto es fundamental si ha realizado modificaciones personalizadas en su implementación, se ha integrado con servicios externos o está cambiando entre varias versiones.
Algunas precauciones adicionales que puedes tomar son:
Export Settings
en la parte inferior de la página de configuración)Esta solución recopila métricas operativas anónimas para ayudar a AWS a mejorar la calidad y las características de la solución. Para obtener más información, incluido cómo desactivar esta capacidad, consulte la guía de implementación.
Copyright Amazon.com, Inc. o sus afiliados. Reservados todos los derechos.
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puede utilizar este archivo excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el idioma específico que rige los permisos y limitaciones de la Licencia.